diff options
author | Vicent Marti | 2008-07-10 15:50:44 +0000 |
---|---|---|
committer | Vicent Marti | 2008-07-10 15:50:44 +0000 |
commit | ccf9368c533110a5c72df3607466a16651ec6497 (patch) | |
tree | 7b4d08bb75a897e39f476f9e571fd701585c2209 /gui/ThemeRenderer.cpp | |
parent | 24a8fb1820ab27c050ff65f8447f3680d9e8064a (diff) | |
download | scummvm-rg350-ccf9368c533110a5c72df3607466a16651ec6497.tar.gz scummvm-rg350-ccf9368c533110a5c72df3607466a16651ec6497.tar.bz2 scummvm-rg350-ccf9368c533110a5c72df3607466a16651ec6497.zip |
Added support for Text Steps in the Vector Renderer.
svn-id: r32991
Diffstat (limited to 'gui/ThemeRenderer.cpp')
-rw-r--r-- | gui/ThemeRenderer.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp index bf481fabb8..71943e2586 100644 --- a/gui/ThemeRenderer.cpp +++ b/gui/ThemeRenderer.cpp @@ -180,6 +180,19 @@ void ThemeRenderer::addDrawStep(Common::String &drawDataId, Graphics::DrawStep s _widgets[id]->_steps.push_back(step); } +bool ThemeRenderer::addTextStep(Common::String &drawDataId, Graphics::TextStep step) { + DrawData id = getDrawDataId(drawDataId); + + assert(_widgets[id] != 0); + if (_widgets[id]->_hasText == true) + return false; + + _widgets[id]->_textStep = step; + _widgets[id]->_hasText = true; + + return true; +} + bool ThemeRenderer::addDrawData(DrawData data_id, bool cached) { assert(data_id >= 0 && data_id < kDrawDataMAX); @@ -189,6 +202,7 @@ bool ThemeRenderer::addDrawData(DrawData data_id, bool cached) { _widgets[data_id] = new WidgetDrawData; _widgets[data_id]->_cached = cached; _widgets[data_id]->_surfaceCache = 0; + _widgets[data_id]->_hasText = false; return true; } @@ -252,9 +266,12 @@ void ThemeRenderer::drawCached(DrawData type, const Common::Rect &r) { } void ThemeRenderer::drawDD(DrawData type, const Common::Rect &r) { + if (_widgets[type] == 0) + return; + if (isWidgetCached(type, r)) { drawCached(type, r); - } else if (_widgets[type] != 0) { + } else { for (Common::List<Graphics::DrawStep>::const_iterator step = _widgets[type]->_steps.begin(); step != _widgets[type]->_steps.end(); ++step) _vectorRenderer->drawStep(r, *step); @@ -264,15 +281,20 @@ void ThemeRenderer::drawDD(DrawData type, const Common::Rect &r) { void ThemeRenderer::drawButton(const Common::Rect &r, const Common::String &str, WidgetStateInfo state, uint16 hints) { if (!ready()) return; + + DrawData dd; if (state == kStateEnabled) - drawDD(kDDButtonIdle, r); + dd = kDDButtonIdle; else if (state == kStateHighlight) - drawDD(kDDButtonHover, r); + dd = kDDButtonHover; else if (state == kStateDisabled) - drawDD(kDDButtonDisabled, r); + dd = kDDButtonDisabled; - // TODO: Add text drawing. + drawDD(dd, r); + if (hasWidgetText(dd)) + _vectorRenderer->textStep(str, r, _widgets[dd]->_textStep); + addDirtyRect(r); debugWidgetPosition(r); |