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.
This commit is contained in:
Torbjörn Andersson 2015-02-08 10:13:18 +01:00
parent a0661328b9
commit b7b4e9cc58
3 changed files with 13 additions and 3 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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;