aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision
diff options
context:
space:
mode:
authorTorbjörn Andersson2015-02-08 10:13:18 +0100
committerTorbjörn Andersson2015-02-08 10:13:18 +0100
commitb7b4e9cc5899eff0810d97a848ace0fa2ede5548 (patch)
tree90720eae94c9520e54fa9010488dac4fc2cc4588 /engines/zvision
parenta0661328b94f0d452995da4f91318d0952ab8346 (diff)
downloadscummvm-rg350-b7b4e9cc5899eff0810d97a848ace0fa2ede5548.tar.gz
scummvm-rg350-b7b4e9cc5899eff0810d97a848ace0fa2ede5548.tar.bz2
scummvm-rg350-b7b4e9cc5899eff0810d97a848ace0fa2ede5548.zip
ZVISION: Draw transparent text in original save dialog
Before this change, text was drawn in black boxes in Zork Nemesis, so while this does make it look better (and more like the original) this may actually make the text slightly harder to read. The original dialogs allowed only upper-case letters, but I think that it's better to leave that to the player.
Diffstat (limited to 'engines/zvision')
-rw-r--r--engines/zvision/scripting/controls/input_control.cpp12
-rw-r--r--engines/zvision/scripting/controls/input_control.h2
-rw-r--r--engines/zvision/text/text.cpp2
3 files changed, 13 insertions, 3 deletions
diff --git a/engines/zvision/scripting/controls/input_control.cpp b/engines/zvision/scripting/controls/input_control.cpp
index 47da27fa08..b25aa13543 100644
--- a/engines/zvision/scripting/controls/input_control.cpp
+++ b/engines/zvision/scripting/controls/input_control.cpp
@@ -39,6 +39,7 @@ namespace ZVision {
InputControl::InputControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream)
: Control(engine, key, CONTROL_INPUT),
+ _background(0),
_nextTabstop(0),
_focused(false),
_textChanged(false),
@@ -111,6 +112,11 @@ InputControl::InputControl(ZVision *engine, uint32 key, Common::SeekableReadStre
}
}
+InputControl::~InputControl() {
+ _background->free();
+ delete _background;
+}
+
bool InputControl::onMouseUp(const Common::Point &screenSpacePos, const Common::Point &backgroundImageSpacePos) {
if (_engine->getScriptManager()->getStateFlag(_key) & Puzzle::DISABLED)
return false;
@@ -191,12 +197,16 @@ bool InputControl::process(uint32 deltaTimeInMillis) {
if (_engine->getScriptManager()->getStateFlag(_key) & Puzzle::DISABLED)
return false;
+ if (!_background) {
+ _background = _engine->getRenderManager()->getBkgRect(_textRectangle);
+ }
+
// First see if we need to render the text
if (_textChanged) {
// Blit the text using the RenderManager
Graphics::Surface txt;
- txt.create(_textRectangle.width(), _textRectangle.height(), _engine->_resourcePixelFormat);
+ txt.copyFrom(*_background);
if (!_readOnly || !_focused)
_txtWidth = _engine->getTextRenderer()->drawTxt(_currentInputText, _stringInit, txt);
diff --git a/engines/zvision/scripting/controls/input_control.h b/engines/zvision/scripting/controls/input_control.h
index 99f7f5287d..e23ba0b9de 100644
--- a/engines/zvision/scripting/controls/input_control.h
+++ b/engines/zvision/scripting/controls/input_control.h
@@ -38,8 +38,10 @@ namespace ZVision {
class InputControl : public Control {
public:
InputControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream);
+ ~InputControl();
private:
+ Graphics::Surface *_background;
Common::Rect _textRectangle;
Common::Rect _headerRectangle;
cTxtStyle _stringInit;
diff --git a/engines/zvision/text/text.cpp b/engines/zvision/text/text.cpp
index e0501ae9c8..4af3b967f3 100644
--- a/engines/zvision/text/text.cpp
+++ b/engines/zvision/text/text.cpp
@@ -315,8 +315,6 @@ int32 TextRenderer::drawTxt(const Common::String &txt, cTxtStyle &fontStyle, Gra
StyledTTFont font(_engine);
fontStyle.setFont(font);
- dst.fillRect(Common::Rect(dst.w, dst.h), 0);
-
uint32 clr = _engine->_resourcePixelFormat.RGBToColor(fontStyle._red, fontStyle._green, fontStyle._blue);
int16 w;