From b7b4e9cc5899eff0810d97a848ace0fa2ede5548 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sun, 8 Feb 2015 10:13:18 +0100 Subject: 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. --- engines/zvision/scripting/controls/input_control.cpp | 12 +++++++++++- engines/zvision/scripting/controls/input_control.h | 2 ++ engines/zvision/text/text.cpp | 2 -- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'engines/zvision') 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; -- cgit v1.2.3