aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeRenderer.cpp
diff options
context:
space:
mode:
authorVicent Marti2008-07-10 15:50:44 +0000
committerVicent Marti2008-07-10 15:50:44 +0000
commitccf9368c533110a5c72df3607466a16651ec6497 (patch)
tree7b4d08bb75a897e39f476f9e571fd701585c2209 /gui/ThemeRenderer.cpp
parent24a8fb1820ab27c050ff65f8447f3680d9e8064a (diff)
downloadscummvm-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.cpp32
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);