aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorNicola Mettifogo2008-11-04 05:29:53 +0000
committerNicola Mettifogo2008-11-04 05:29:53 +0000
commit33b6bc4215fd7fbd94ea0a879b3d8e8ace3d0ab0 (patch)
treecc57c475d12c01b278688e62dfbab244ff2c64cc /gui
parentf12b76b7fba51a25c363bd59e9918a0605a8774c (diff)
downloadscummvm-rg350-33b6bc4215fd7fbd94ea0a879b3d8e8ace3d0ab0.tar.gz
scummvm-rg350-33b6bc4215fd7fbd94ea0a879b3d8e8ace3d0ab0.tar.bz2
scummvm-rg350-33b6bc4215fd7fbd94ea0a879b3d8e8ace3d0ab0.zip
Reordered initialization lists to kill a ton of warnings.
svn-id: r34892
Diffstat (limited to 'gui')
-rw-r--r--gui/ThemeEngine.cpp218
-rw-r--r--gui/ThemeEngine.h206
-rw-r--r--gui/ThemeLayout.h84
3 files changed, 254 insertions, 254 deletions
diff --git a/gui/ThemeEngine.cpp b/gui/ThemeEngine.cpp
index e85c714e22..df3f3af4f4 100644
--- a/gui/ThemeEngine.cpp
+++ b/gui/ThemeEngine.cpp
@@ -55,7 +55,7 @@ const ThemeEngine::Renderer ThemeEngine::_rendererModes[] = {
const uint ThemeEngine::_rendererModesSize = ARRAYSIZE(ThemeEngine::_rendererModes);
-const ThemeEngine::GraphicsMode ThemeEngine::_defaultRendererMode =
+const ThemeEngine::GraphicsMode ThemeEngine::_defaultRendererMode =
#ifndef DISABLE_FANCY_THEMES
ThemeEngine::kGfxAntialias16bit;
#else
@@ -96,14 +96,14 @@ void ThemeItemDrawData::drawSelf(bool draw, bool restore) {
for (step = _data->_steps.begin(); step != _data->_steps.end(); ++step)
_engine->renderer()->drawStep(_area, *step, _dynamicData);
}
-
+
_engine->addDirtyRect(extendedRect);
}
void ThemeItemTextData::drawSelf(bool draw, bool restore) {
if (_restoreBg || restore)
_engine->restoreBackground(_area);
-
+
if (draw) {
_engine->renderer()->setFgColor(_data->_color.r, _data->_color.g, _data->_color.b);
_engine->renderer()->drawString(_data->_fontPtr, _text, _area, _alignH, _alignV, _deltax, _ellipsis);
@@ -160,10 +160,10 @@ const ThemeEngine::DrawDataInfo ThemeEngine::kDrawDataDefaults[] = {
{kDDTabBackground, "tab_background", true, kDDNone},
{kDDScrollbarBase, "scrollbar_base", true, kDDNone},
-
+
{kDDScrollbarButtonIdle, "scrollbar_button_idle", true, kDDNone},
{kDDScrollbarButtonHover, "scrollbar_button_hover", false, kDDScrollbarButtonIdle},
-
+
{kDDScrollbarHandleIdle, "scrollbar_handle_idle", false, kDDNone},
{kDDScrollbarHandleHover, "scrollbar_handle_hover", false, kDDScrollbarBase},
@@ -188,20 +188,20 @@ const ThemeEngine::TextDataInfo ThemeEngine::kTextDataDefaults[] = {
/**********************************************************
* ThemeEngine class
*********************************************************/
-ThemeEngine::ThemeEngine(Common::String fileName, GraphicsMode mode) :
- _vectorRenderer(0), _system(0), _graphicsMode(kGfxDisabled), _font(0),
- _screen(0), _backBuffer(0), _bytesPerPixel(0), _initOk(false),
- _themeOk(false), _enabled(false), _buffering(false), _cursor(0) {
+ThemeEngine::ThemeEngine(Common::String fileName, GraphicsMode mode) :
+ _system(0), _vectorRenderer(0), _screen(0), _backBuffer(0),
+ _buffering(false), _bytesPerPixel(0), _graphicsMode(kGfxDisabled),
+ _font(0), _initOk(false), _themeOk(false), _enabled(false), _cursor(0) {
_system = g_system;
_parser = new ThemeParser(this);
_themeEval = new GUI::ThemeEval();
-
+
_useCursor = false;
for (int i = 0; i < kDrawDataMAX; ++i) {
_widgets[i] = 0;
}
-
+
for (int i = 0; i < kTextDataMAX; ++i) {
_texts[i] = 0;
}
@@ -219,7 +219,7 @@ ThemeEngine::~ThemeEngine() {
delete _parser;
delete _themeEval;
delete[] _cursor;
-
+
for (ImagesMap::iterator i = _bitmaps.begin(); i != _bitmaps.end(); ++i)
ImageMan.unregisterSurface(i->_key);
}
@@ -238,7 +238,7 @@ bool ThemeEngine::init() {
clearAll();
resetDrawArea();
}
-
+
if (_screen->w >= 400 && _screen->h >= 300) {
_font = FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont);
} else {
@@ -270,17 +270,17 @@ void ThemeEngine::unloadTheme() {
delete _widgets[i];
_widgets[i] = 0;
}
-
+
for (int i = 0; i < kTextDataMAX; ++i) {
delete _texts[i];
_texts[i] = 0;
}
-
+
for (ImagesMap::iterator i = _bitmaps.begin(); i != _bitmaps.end(); ++i)
ImageMan.unregisterSurface(i->_key);
ImageMan.removeArchive(_themeFileName);
-
+
_themeEval->reset();
_themeOk = false;
}
@@ -297,7 +297,7 @@ void ThemeEngine::refresh() {
init();
if (_enabled) {
_system->showOverlay();
-
+
if (_useCursor) {
CursorMan.replaceCursorPalette(_cursorPal, 0, MAX_CURS_COLORS);
CursorMan.replaceCursor(_cursor, _cursorWidth, _cursorHeight, _cursorHotspotX, _cursorHotspotY, 255, _cursorTargetScale);
@@ -308,10 +308,10 @@ void ThemeEngine::refresh() {
void ThemeEngine::enable() {
init();
resetDrawArea();
-
+
if (_useCursor)
setUpCursor();
-
+
_system->showOverlay();
clearAll();
_enabled = true;
@@ -319,26 +319,26 @@ void ThemeEngine::enable() {
void ThemeEngine::disable() {
_system->hideOverlay();
-
+
if (_useCursor) {
CursorMan.popCursorPalette();
CursorMan.popCursor();
}
-
+
_enabled = false;
}
-template<typename PixelType>
+template<typename PixelType>
void ThemeEngine::screenInit(bool backBuffer) {
uint32 width = _system->getOverlayWidth();
uint32 height = _system->getOverlayHeight();
-
+
if (backBuffer) {
freeBackbuffer();
_backBuffer = new Surface;
_backBuffer->create(width, height, sizeof(PixelType));
}
-
+
freeScreen();
_screen = new Surface;
_screen->create(width, height, sizeof(PixelType));
@@ -366,7 +366,7 @@ void ThemeEngine::setGraphicsMode(GraphicsMode mode) {
bool ThemeEngine::isWidgetCached(DrawData type, const Common::Rect &r) {
return _widgets[type] && _widgets[type]->_cached &&
- _widgets[type]->_surfaceCache->w == r.width() &&
+ _widgets[type]->_surfaceCache->w == r.width() &&
_widgets[type]->_surfaceCache->h == r.height();
}
@@ -377,11 +377,11 @@ void ThemeEngine::drawCached(DrawData type, const Common::Rect &r) {
void ThemeEngine::calcBackgroundOffset(DrawData type) {
uint maxShadow = 0;
- for (Common::List<Graphics::DrawStep>::const_iterator step = _widgets[type]->_steps.begin();
+ for (Common::List<Graphics::DrawStep>::const_iterator step = _widgets[type]->_steps.begin();
step != _widgets[type]->_steps.end(); ++step) {
- if ((step->autoWidth || step->autoHeight) && step->shadow > maxShadow)
+ if ((step->autoWidth || step->autoHeight) && step->shadow > maxShadow)
maxShadow = step->shadow;
-
+
if (step->drawingCall == &Graphics::VectorRenderer::drawCallback_BEVELSQ && step->bevel > maxShadow)
maxShadow = step->bevel;
}
@@ -402,7 +402,7 @@ void ThemeEngine::restoreBackground(Common::Rect r, bool special) {
*********************************************************/
void ThemeEngine::addDrawStep(const Common::String &drawDataId, Graphics::DrawStep step) {
DrawData id = getDrawDataId(drawDataId);
-
+
assert(_widgets[id] != 0);
_widgets[id]->_steps.push_back(step);
}
@@ -413,25 +413,25 @@ bool ThemeEngine::addTextData(const Common::String &drawDataId, const Common::St
if (id == -1 || textId == -1 || !_widgets[id])
return false;
-
+
_widgets[id]->_textDataId = textId;
_widgets[id]->_textAlignH = alignH;
- _widgets[id]->_textAlignV = alignV;
+ _widgets[id]->_textAlignV = alignV;
return true;
}
bool ThemeEngine::addFont(const Common::String &fontId, const Common::String &file, int r, int g, int b) {
TextData textId = getTextDataId(fontId);
-
+
if (textId == -1)
return false;
-
+
if (_texts[textId] != 0)
delete _texts[textId];
-
+
_texts[textId] = new TextDrawData;
-
+
if (file == "default") {
_texts[textId]->_fontPtr = _font;
} else {
@@ -439,29 +439,29 @@ bool ThemeEngine::addFont(const Common::String &fontId, const Common::String &fi
if (!_texts[textId]->_fontPtr) {
_texts[textId]->_fontPtr = loadFont(file);
-
+
if (!_texts[textId]->_fontPtr)
error("Couldn't load %s font '%s'", fontId.c_str(), file.c_str());
FontMan.assignFontToName(file, _texts[textId]->_fontPtr);
}
}
-
+
_texts[textId]->_color.r = r;
_texts[textId]->_color.g = g;
_texts[textId]->_color.b = b;
return true;
-
+
}
bool ThemeEngine::addBitmap(const Common::String &filename) {
if (_bitmaps.contains(filename)) {
ImageMan.unregisterSurface(filename);
}
-
+
ImageMan.registerSurface(filename, 0);
_bitmaps[filename] = ImageMan.getSurface(filename);
-
+
return _bitmaps[filename] != 0;
}
@@ -470,7 +470,7 @@ bool ThemeEngine::addDrawData(const Common::String &data, bool cached) {
if (data_id == -1)
return false;
-
+
if (_widgets[data_id] != 0)
delete _widgets[data_id];
@@ -498,7 +498,7 @@ bool ThemeEngine::loadTheme(Common::String fileName) {
error("Could not load default embedded theme");
} else if (!loadThemeXML(fileName)) {
warning("Could not parse custom theme '%s'. Falling back to default theme", fileName.c_str());
-
+
if (!loadDefaultXML()) // if we can't load the embedded theme, this is a complete failure
error("Could not load default embedded theme");
}
@@ -513,13 +513,13 @@ bool ThemeEngine::loadTheme(Common::String fileName) {
if (_widgets[i]->_cached) {}
}
}
-
+
_themeOk = true;
return true;
}
bool ThemeEngine::loadDefaultXML() {
-
+
// The default XML theme is included on runtime from a pregenerated
// file inside the themes directory.
// Use the Python script "makedeftheme.py" to convert a normal XML theme
@@ -530,16 +530,16 @@ bool ThemeEngine::loadDefaultXML() {
const char *defaultXML =
#include "themes/default.inc"
;
-
+
if (!_parser->loadBuffer((const byte*)defaultXML, strlen(defaultXML), false))
return false;
-
+
_themeName = "ScummVM Classic Theme (Builtin Version)";
_themeFileName = "builtin";
result = _parser->parse();
_parser->close();
-
+
return result;
#else
warning("The built-in theme is not enabled in the current build. Please load an external theme");
@@ -550,7 +550,7 @@ bool ThemeEngine::loadDefaultXML() {
bool ThemeEngine::loadThemeXML(const Common::String &themeName) {
assert(_parser);
_themeName.clear();
-
+
FSNode node(themeName);
if (!node.exists() || !node.isReadable())
return false;
@@ -568,7 +568,7 @@ bool ThemeEngine::loadThemeXML(const Common::String &themeName) {
warning("Failed to open Zip archive '%s'.", themeName.c_str());
return false;
}
-
+
#endif
} else if (node.isDirectory()) {
archive = new Common::FSDirectory(node);
@@ -608,14 +608,14 @@ bool ThemeEngine::loadThemeXML(const Common::String &themeName) {
_parser->close();
return false;
}
-
+
if (_parser->parse() == false) {
delete archive;
warning("Failed to parse STX file '%s'", (*i)->getName().c_str());
_parser->close();
return false;
}
-
+
_parser->close();
}
@@ -632,19 +632,19 @@ bool ThemeEngine::loadThemeXML(const Common::String &themeName) {
void ThemeEngine::queueDD(DrawData type, const Common::Rect &r, uint32 dynamic) {
if (_widgets[type] == 0)
return;
-
+
Common::Rect area = r;
area.clip(_screen->w, _screen->h);
ThemeItemDrawData *q = new ThemeItemDrawData(this, _widgets[type], area, dynamic);
-
+
if (_buffering) {
if (_widgets[type]->_buffer) {
- _bufferQueue.push_back(q);
+ _bufferQueue.push_back(q);
} else {
if (kDrawDataDefaults[type].parent != kDDNone && kDrawDataDefaults[type].parent != type)
queueDD(kDrawDataDefaults[type].parent, r);
-
+
_screenQueue.push_back(q);
}
} else {
@@ -655,7 +655,7 @@ void ThemeEngine::queueDD(DrawData type, const Common::Rect &r, uint32 dynamic)
void ThemeEngine::queueDDText(TextData type, const Common::Rect &r, const Common::String &text, bool restoreBg,
bool ellipsis, TextAlign alignH, TextAlignVertical alignV, int deltax) {
-
+
if (_texts[type] == 0)
return;
@@ -663,8 +663,8 @@ void ThemeEngine::queueDDText(TextData type, const Common::Rect &r, const Common
area.clip(_screen->w, _screen->h);
ThemeItemTextData *q = new ThemeItemTextData(this, _texts[type], area, text, alignH, alignV, ellipsis, restoreBg, deltax);
-
- if (_buffering) {
+
+ if (_buffering) {
_screenQueue.push_back(q);
} else {
q->drawSelf(true, false);
@@ -678,7 +678,7 @@ void ThemeEngine::queueBitmap(const Graphics::Surface *bitmap, const Common::Rec
area.clip(_screen->w, _screen->h);
ThemeItemBitmap *q = new ThemeItemBitmap(this, area, bitmap, alpha);
-
+
if (_buffering) {
_bufferQueue.push_back(q);
} else {
@@ -695,7 +695,7 @@ void ThemeEngine::queueBitmap(const Graphics::Surface *bitmap, const Common::Rec
void ThemeEngine::drawButton(const Common::Rect &r, const Common::String &str, WidgetStateInfo state, uint16 hints) {
if (!ready())
return;
-
+
DrawData dd = kDDButtonIdle;
if (state == kStateEnabled)
@@ -722,13 +722,13 @@ void ThemeEngine::drawCheckbox(const Common::Rect &r, const Common::String &str,
Common::Rect r2 = r;
DrawData dd = kDDCheckboxDefault;
-
+
if (checked)
dd = kDDCheckboxSelected;
-
+
if (state == kStateDisabled)
dd = kDDCheckboxDisabled;
-
+
TextData td = (state == kStateHighlight) ? kTextDataHover : getTextData(dd);
const int checkBoxSize = MIN((int)r.height(), getFontHeight());
@@ -736,19 +736,19 @@ void ThemeEngine::drawCheckbox(const Common::Rect &r, const Common::String &str,
r2.right = r2.left + checkBoxSize;
queueDD(dd, r2);
-
+
r2.left = r2.right + checkBoxSize;
r2.right = r.right;
-
+
queueDDText(td, r2, str, false, false, _widgets[kDDCheckboxDefault]->_textAlignH, _widgets[dd]->_textAlignV);
}
void ThemeEngine::drawSlider(const Common::Rect &r, int width, WidgetStateInfo state) {
if (!ready())
return;
-
+
DrawData dd = kDDSliderFull;
-
+
if (state == kStateHighlight)
dd = kDDSliderHover;
else if (state == kStateDisabled)
@@ -759,7 +759,7 @@ void ThemeEngine::drawSlider(const Common::Rect &r, int width, WidgetStateInfo s
// r2.top++; r2.bottom--; r2.left++; r2.right--;
drawWidgetBackground(r, 0, kWidgetBackgroundSlider, kStateEnabled);
-
+
if (width > r.width() * 5 / 100)
queueDD(dd, r2);
}
@@ -767,46 +767,46 @@ void ThemeEngine::drawSlider(const Common::Rect &r, int width, WidgetStateInfo s
void ThemeEngine::drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState scrollState, WidgetStateInfo state) {
if (!ready())
return;
-
+
queueDD(kDDScrollbarBase, r);
-
+
Common::Rect r2 = r;
const int buttonExtra = (r.width() * 120) / 100;
-
+
r2.bottom = r2.top + buttonExtra;
queueDD(scrollState == kScrollbarStateUp ? kDDScrollbarButtonHover : kDDScrollbarButtonIdle, r2, Graphics::VectorRenderer::kTriangleUp);
-
+
r2.translate(0, r.height() - r2.height());
queueDD(scrollState == kScrollbarStateDown ? kDDScrollbarButtonHover : kDDScrollbarButtonIdle, r2, Graphics::VectorRenderer::kTriangleDown);
-
+
r2 = r;
r2.left += 1;
r2.right -= 1;
r2.top += sliderY;
r2.bottom = r2.top + sliderHeight - 1;
-
+
r2.top += r.width() / 5;
- r2.bottom -= r.width() / 5;
+ r2.bottom -= r.width() / 5;
queueDD(scrollState == kScrollbarStateSlider ? kDDScrollbarHandleHover : kDDScrollbarHandleIdle, r2);
}
void ThemeEngine::drawDialogBackground(const Common::Rect &r, DialogBackground bgtype, WidgetStateInfo state) {
if (!ready())
return;
-
+
switch (bgtype) {
case kDialogBackgroundMain:
queueDD(kDDMainDialogBackground, r);
break;
-
+
case kDialogBackgroundSpecial:
queueDD(kDDSpecialColorBackground, r);
break;
-
+
case kDialogBackgroundPlain:
queueDD(kDDPlainColorBackground, r);
break;
-
+
case kDialogBackgroundDefault:
queueDD(kDDDefaultBackground, r);
break;
@@ -816,7 +816,7 @@ void ThemeEngine::drawDialogBackground(const Common::Rect &r, DialogBackground b
void ThemeEngine::drawCaret(const Common::Rect &r, bool erase, WidgetStateInfo state) {
if (!ready())
return;
-
+
if (erase) {
restoreBackground(r);
addDirtyRect(r);
@@ -827,11 +827,11 @@ void ThemeEngine::drawCaret(const Common::Rect &r, bool erase, WidgetStateInfo s
void ThemeEngine::drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, WidgetStateInfo state, TextAlign align) {
if (!ready())
return;
-
+
DrawData dd = (state == kStateHighlight) ? kDDPopUpHover : kDDPopUpIdle;
-
+
queueDD(dd, r);
-
+
if (!sel.empty()) {
Common::Rect text(r.left, r.top, r.right - 16, r.bottom);
queueDDText(getTextData(dd), text, sel, false, false, _widgets[dd]->_textAlignH, _widgets[dd]->_textAlignV, deltax);
@@ -841,27 +841,27 @@ void ThemeEngine::drawPopUpWidget(const Common::Rect &r, const Common::String &s
void ThemeEngine::drawSurface(const Common::Rect &r, const Graphics::Surface &surface, WidgetStateInfo state, int alpha, bool themeTrans) {
if (!ready())
return;
-
+
queueBitmap(&surface, r, themeTrans);
}
void ThemeEngine::drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background, WidgetStateInfo state) {
if (!ready())
return;
-
+
switch (background) {
case kWidgetBackgroundBorderSmall:
queueDD(kDDWidgetBackgroundSmall, r);
break;
-
+
case kWidgetBackgroundEditText:
queueDD(kDDWidgetBackgroundEditText, r);
break;
-
+
case kWidgetBackgroundSlider:
queueDD(kDDWidgetBackgroundSlider, r);
break;
-
+
default:
queueDD(kDDWidgetBackgroundDefault, r);
break;
@@ -871,21 +871,21 @@ void ThemeEngine::drawWidgetBackground(const Common::Rect &r, uint16 hints, Widg
void ThemeEngine::drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, int titleVPad, WidgetStateInfo state) {
if (!ready())
return;
-
+
const int tabOffset = 2;
tabWidth -= tabOffset;
-
+
queueDD(kDDTabBackground, Common::Rect(r.left, r.top, r.right, r.top + tabHeight));
-
+
for (int i = 0; i < (int)tabs.size(); ++i) {
if (i == active)
continue;
-
+
Common::Rect tabRect(r.left + i * (tabWidth + tabOffset), r.top, r.left + i * (tabWidth + tabOffset) + tabWidth, r.top + tabHeight);
queueDD(kDDTabInactive, tabRect);
queueDDText(getTextData(kDDTabInactive), tabRect, tabs[i], false, false, _widgets[kDDTabInactive]->_textAlignH, _widgets[kDDTabInactive]->_textAlignV);
}
-
+
if (active >= 0) {
Common::Rect tabRect(r.left + active * (tabWidth + tabOffset), r.top, r.left + active * (tabWidth + tabOffset) + tabWidth, r.top + tabHeight);
const uint16 tabLeft = active * (tabWidth + tabOffset);
@@ -897,19 +897,19 @@ void ThemeEngine::drawTab(const Common::Rect &r, int tabHeight, int tabWidth, co
void ThemeEngine::drawText(const Common::Rect &r, const Common::String &str, WidgetStateInfo state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font) {
if (!ready())
- return;
-
+ return;
+
if (inverted) {
queueDD(kDDTextSelectionBackground, r);
queueDDText(kTextDataInverted, r, str, false, useEllipsis, align, kTextAlignVCenter, deltax);
return;
}
-
+
switch (font) {
case kFontStyleNormal:
queueDDText(kTextDataNormalFont, r, str, true, useEllipsis, align, kTextAlignVCenter, deltax);
return;
-
+
default:
break;
}
@@ -918,11 +918,11 @@ void ThemeEngine::drawText(const Common::Rect &r, const Common::String &str, Wid
case kStateDisabled:
queueDDText(kTextDataDisabled, r, str, true, useEllipsis, align, kTextAlignVCenter, deltax);
return;
-
+
case kStateHighlight:
queueDDText(kTextDataHover, r, str, true, useEllipsis, align, kTextAlignVCenter, deltax);
return;
-
+
case kStateEnabled:
queueDDText(kTextDataDefault, r, str, true, useEllipsis, align, kTextAlignVCenter, deltax);
return;
@@ -937,7 +937,7 @@ void ThemeEngine::drawChar(const Common::Rect &r, byte ch, const Graphics::Font
charArea.clip(_screen->w, _screen->h);
uint32 color = _system->RGBToColor(_texts[kTextDataDefault]->_color.r, _texts[kTextDataDefault]->_color.g, _texts[kTextDataDefault]->_color.b);
-
+
restoreBackground(charArea);
font->drawChar(_screen, ch, charArea.left, charArea.top, color);
addDirtyRect(charArea);
@@ -959,28 +959,28 @@ void ThemeEngine::debugWidgetPosition(const char *name, const Common::Rect &r) {
void ThemeEngine::updateScreen() {
if (!_bufferQueue.empty()) {
_vectorRenderer->setSurface(_backBuffer);
-
+
for (Common::List<ThemeItem*>::iterator q = _bufferQueue.begin(); q != _bufferQueue.end(); ++q) {
(*q)->drawSelf(true, false);
delete *q;
}
-
+
_vectorRenderer->setSurface(_screen);
_vectorRenderer->blitSurface(_backBuffer, Common::Rect(0, 0, _screen->w, _screen->h));
_bufferQueue.clear();
}
-
+
if (!_screenQueue.empty()) {
_vectorRenderer->disableShadows();
for (Common::List<ThemeItem*>::iterator q = _screenQueue.begin(); q != _screenQueue.end(); ++q) {
(*q)->drawSelf(true, false);
delete *q;
}
-
+
_vectorRenderer->enableShadows();
_screenQueue.clear();
}
-
+
renderDirtyScreen();
}
@@ -996,14 +996,14 @@ void ThemeEngine::renderDirtyScreen() {
_vectorRenderer->copyFrame(_system, *i);
}
-
+
_dirtyScreen.clear();
}
void ThemeEngine::openDialog(bool doBuffer, ShadingStyle style) {
if (doBuffer)
_buffering = true;
-
+
if (style != kShadingNone) {
_vectorRenderer->applyScreenShading(style);
addDirtyRect(Common::Rect(0, 0, _screen->w, _screen->h));
@@ -1023,12 +1023,12 @@ void ThemeEngine::setUpCursor() {
bool ThemeEngine::createCursor(const Common::String &filename, int hotspotX, int hotspotY, int scale) {
if (!_system->hasFeature(OSystem::kFeatureCursorHasPalette))
return true;
-
+
// Try to locate the specified file among all loaded bitmaps
const Surface *cursor = _bitmaps[filename];
if (!cursor)
return false;
-
+
// Set up the cursor parameters
_cursorHotspotX = hotspotX;
_cursorHotspotY = hotspotY;
diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index c36fe0828d..f164b8831c 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -47,8 +47,8 @@ class ThemeEval;
struct TextDrawData {
const Graphics::Font *_fontPtr;
-
- struct {
+
+ struct {
uint8 r, g, b;
} _color;
};
@@ -56,13 +56,13 @@ struct TextDrawData {
struct WidgetDrawData {
/** List of all the steps needed to draw this widget */
Common::List<Graphics::DrawStep> _steps;
-
+
int _textDataId;
GUI::Theme::TextAlign _textAlignH;
GUI::Theme::TextAlignVertical _textAlignV;
/** Extra space that the widget occupies when it's drawn.
- E.g. when taking into account rounded corners, drop shadows, etc
+ E.g. when taking into account rounded corners, drop shadows, etc
Used when restoring the widget background */
uint16 _backgroundOffset;
@@ -84,22 +84,22 @@ struct WidgetDrawData {
};
class ThemeItem {
-
+
public:
- ThemeItem(ThemeEngine *engine, const Common::Rect &area) :
+ ThemeItem(ThemeEngine *engine, const Common::Rect &area) :
_engine(engine), _area(area) {}
virtual ~ThemeItem() {}
virtual void drawSelf(bool doDraw, bool doRestore) = 0;
protected:
- Common::Rect _area;
ThemeEngine *_engine;
+ Common::Rect _area;
};
class ThemeItemDrawData : public ThemeItem {
public:
- ThemeItemDrawData(ThemeEngine *engine, const WidgetDrawData *data, const Common::Rect &area, uint32 dynData) :
+ ThemeItemDrawData(ThemeEngine *engine, const WidgetDrawData *data, const Common::Rect &area, uint32 dynData) :
ThemeItem(engine, area), _dynamicData(dynData), _data(data) {}
void drawSelf(bool draw, bool restore);
@@ -113,8 +113,8 @@ class ThemeItemTextData : public ThemeItem {
public:
ThemeItemTextData(ThemeEngine *engine, const TextDrawData *data, const Common::Rect &area, const Common::String &text,
GUI::Theme::TextAlign alignH, GUI::Theme::TextAlignVertical alignV,
- bool ellipsis, bool restoreBg, int deltaX) :
- ThemeItem(engine, area), _data(data), _text(text), _alignH(alignH), _alignV(alignV),
+ bool ellipsis, bool restoreBg, int deltaX) :
+ ThemeItem(engine, area), _data(data), _text(text), _alignH(alignH), _alignV(alignV),
_ellipsis(ellipsis), _restoreBg(restoreBg), _deltax(deltaX) {}
void drawSelf(bool draw, bool restore);
@@ -131,7 +131,7 @@ protected:
class ThemeItemBitmap : public ThemeItem {
public:
- ThemeItemBitmap(ThemeEngine *engine, const Common::Rect &area, const Graphics::Surface *bitmap, bool alpha) :
+ ThemeItemBitmap(ThemeEngine *engine, const Common::Rect &area, const Graphics::Surface *bitmap, bool alpha) :
ThemeItem(engine, area), _bitmap(bitmap), _alpha(alpha) {}
void drawSelf(bool draw, bool restore);
@@ -148,11 +148,11 @@ protected:
friend class GUI::Dialog;
friend class GUI::GuiObject;
-
+
/** Sets whether backcaching is enabled */
static const bool kEnableBackCaching = true;
- /**
+ /**
* DrawData sets enumeration.
* Each DD set corresponds to the actual looks
* of a widget in a given state.
@@ -163,7 +163,7 @@ protected:
kDDPlainColorBackground,
kDDDefaultBackground,
kDDTextSelectionBackground,
-
+
kDDWidgetBackgroundDefault,
kDDWidgetBackgroundSmall,
kDDWidgetBackgroundEditText,
@@ -193,13 +193,13 @@ protected:
kDDPopUpIdle,
kDDPopUpHover,
-
+
kDDCaret,
kDDSeparator,
kDrawDataMAX,
kDDNone = -1
};
-
+
/**
* Default values for each DrawData item.
* @see kDrawDataDefaults[] for implementation.
@@ -210,8 +210,8 @@ protected:
bool buffer; /** Sets whether this item is buffered on the backbuffer or drawn directly to the screen. */
DrawData parent; /** Parent DrawData item, for items that overlay. E.g. kButtonIdle -> kButtonHover */
} kDrawDataDefaults[];
-
-
+
+
enum TextData {
kTextDataNone = -1,
kTextDataDefault = 0,
@@ -223,13 +223,13 @@ protected:
kTextDataNormalFont,
kTextDataMAX
};
-
+
static const struct TextDataInfo {
TextData id;
const char *name;
} kTextDataDefaults[];
-
-
+
+
public:
/** Graphics mode enumeration.
* Each item represents a set of BPP and Renderer modes for a given
@@ -243,7 +243,7 @@ public:
/** Constant value to expand dirty rectangles, to make sure they are fully copied */
static const int kDirtyRectangleThreshold = 1;
-
+
struct Renderer {
const char *name;
const char *cfg;
@@ -257,13 +257,13 @@ public:
static GraphicsMode findMode(const Common::String &cfg);
static const char *findModeConfigName(GraphicsMode mode);
-
+
/** Default constructor */
ThemeEngine(Common::String fileName, GraphicsMode mode);
/** Default destructor */
~ThemeEngine();
-
+
/**
* VIRTUAL METHODS
* This is the implementation of the GUI::Theme API to allow
@@ -278,7 +278,7 @@ public:
void refresh();
void enable();
void disable();
-
+
/**
* Implementation of the GUI::Theme API. Called when a
* new dialog is opened. Note that the boolean parameter
@@ -289,7 +289,7 @@ public:
* until disabled.
*/
void openDialog(bool enableBuffering, ShadingStyle shading = kShadingNone);
-
+
/**
* The updateScreen() method is called every frame.
* It processes all the drawing queues and then copies dirty rects
@@ -297,86 +297,86 @@ public:
*/
void updateScreen();
- /** Since the rendering pipeline changes, closing all dialogs causes no effect
+ /** Since the rendering pipeline changes, closing all dialogs causes no effect
TODO: remove this from the original GUI::Theme API */
void closeAllDialogs() {}
-
+
/** Drawing area has been removed: it was too hackish. A workaround is on the works.
TODO: finish the workaround for the credits dialog
TODO: remove this from the original GUI::Theme API */
void resetDrawArea() {}
-
+
/**
* FONT MANAGEMENT METHODS
*/
-
+
TextData fontStyleToData(FontStyle font) const {
switch (font) {
case kFontStyleNormal:
return kTextDataNormalFont;
-
+
default:
return kTextDataDefault;
}
}
-
+
const Graphics::Font *getFont(FontStyle font) const { return _texts[fontStyleToData(font)]->_fontPtr; }
-
- int getFontHeight(FontStyle font = kFontStyleBold) const {
+
+ int getFontHeight(FontStyle font = kFontStyleBold) const {
return ready() ? _texts[fontStyleToData(font)]->_fontPtr->getFontHeight() : 0;
}
-
+
int getStringWidth(const Common::String &str, FontStyle font) const {
return ready() ? _texts[fontStyleToData(font)]->_fontPtr->getStringWidth(str) : 0;
}
-
- int getCharWidth(byte c, FontStyle font) const {
- return ready() ? _texts[fontStyleToData(font)]->_fontPtr->getCharWidth(c) : 0;
+
+ int getCharWidth(byte c, FontStyle font) const {
+ return ready() ? _texts[fontStyleToData(font)]->_fontPtr->getCharWidth(c) : 0;
}
/**
* WIDGET DRAWING METHODS
*/
- void drawWidgetBackground(const Common::Rect &r, uint16 hints,
+ void drawWidgetBackground(const Common::Rect &r, uint16 hints,
WidgetBackground background = kWidgetBackgroundPlain, WidgetStateInfo state = kStateEnabled);
-
- void drawButton(const Common::Rect &r, const Common::String &str,
+
+ void drawButton(const Common::Rect &r, const Common::String &str,
WidgetStateInfo state = kStateEnabled, uint16 hints = 0);
-
- void drawSurface(const Common::Rect &r, const Graphics::Surface &surface,
+
+ void drawSurface(const Common::Rect &r, const Graphics::Surface &surface,
WidgetStateInfo state = kStateEnabled, int alpha = 256, bool themeTrans = false);
-
- void drawSlider(const Common::Rect &r, int width,
+
+ void drawSlider(const Common::Rect &r, int width,
WidgetStateInfo state = kStateEnabled);
-
- void drawCheckbox(const Common::Rect &r, const Common::String &str,
+
+ void drawCheckbox(const Common::Rect &r, const Common::String &str,
bool checked, WidgetStateInfo state = kStateEnabled);
-
- void drawTab(const Common::Rect &r, int tabHeight, int tabWidth,
- const Common::Array<Common::String> &tabs, int active, uint16 hints,
+
+ void drawTab(const Common::Rect &r, int tabHeight, int tabWidth,
+ const Common::Array<Common::String> &tabs, int active, uint16 hints,
int titleVPad, WidgetStateInfo state = kStateEnabled);
-
- void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight,
+
+ void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight,
ScrollbarState, WidgetStateInfo state = kStateEnabled);
-
- void drawPopUpWidget(const Common::Rect &r, const Common::String &sel,
+
+ void drawPopUpWidget(const Common::Rect &r, const Common::String &sel,
int deltax, WidgetStateInfo state = kStateEnabled, TextAlign align = kTextAlignLeft);
-
- void drawCaret(const Common::Rect &r, bool erase,
+
+ void drawCaret(const Common::Rect &r, bool erase,
WidgetStateInfo state = kStateEnabled);
-
+
void drawLineSeparator(const Common::Rect &r, WidgetStateInfo state = kStateEnabled);
void drawDialogBackground(const Common::Rect &r, DialogBackground type, WidgetStateInfo state);
-
- void drawText(const Common::Rect &r, const Common::String &str,
+
+ void drawText(const Common::Rect &r, const Common::String &str,
WidgetStateInfo state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font);
-
- void drawChar(const Common::Rect &r, byte ch,
+
+ void drawChar(const Common::Rect &r, byte ch,
const Graphics::Font *font, WidgetStateInfo state);
-
+
/**
* Actual implementation of a Dirty Rect drawing routine.
* Dirty rectangles are queued on a list and are later merged/calculated
@@ -409,7 +409,7 @@ public:
return kDDNone;
}
-
+
TextData getTextDataId(const Common::String &name) {
for (int i = 0; i < kTextDataMAX; ++i)
if (name.compareToIgnoreCase(kTextDataDefaults[i].name) == 0)
@@ -428,7 +428,7 @@ public:
* @param step The actual DrawStep struct to be added.
*/
void addDrawStep(const Common::String &drawDataId, Graphics::DrawStep step);
-
+
/**
* Interfacefor the ThemeParser class: Parsed DrawData sets are added via this function.
* The goal of the function is to initialize each DrawData set before their DrawSteps can
@@ -437,10 +437,10 @@ public:
*
* @param data The representing DrawData name, as found on Theme Description XML files.
* @param cached Whether this DD set will be cached beforehand.
- */
+ */
bool addDrawData(const Common::String &data, bool cached);
-
-
+
+
/**
* Interface for the ThemeParser class: Loads a font to use on the GUI from the given
* filename.
@@ -450,8 +450,8 @@ public:
* @param r, g, b Color of the font.
*/
bool addFont(const Common::String &fontName, const Common::String &file, int r, int g, int b);
-
-
+
+
/**
* Interface for the ThemeParser class: Loads a bitmap file to use on the GUI.
* The filename is also used as its identifier.
@@ -459,9 +459,9 @@ public:
* @param filename Name of the bitmap file.
*/
bool addBitmap(const Common::String &filename);
-
+
/**
- * Adds a new TextStep from the ThemeParser. This will be deprecated/removed once the
+ * Adds a new TextStep from the ThemeParser. This will be deprecated/removed once the
* new Font API is in place.
*/
bool addTextData(const Common::String &drawDataId, const Common::String &textDataId, TextAlign alignH, TextAlignVertical alignV);
@@ -478,7 +478,7 @@ public:
/** Custom implementation of the GUI::Theme API, changed to use the XML parser. */
bool loadTheme(Common::String themeName);
-
+
/**
* Changes the active graphics mode of the GUI; may be used to either
* initialize the GUI or to change the mode while the GUI is already running.
@@ -492,26 +492,26 @@ public:
*/
void finishBuffering() { _buffering = false; }
void startBuffering() { _buffering = true; }
-
+
ThemeEval *getEvaluator() { return _themeEval; }
VectorRenderer *renderer() { return _vectorRenderer; }
-
+
bool supportsImages() const { return true; }
bool ownCursor() const { return _useCursor; }
-
+
Graphics::Surface *getBitmap(const Common::String &name) {
return _bitmaps.contains(name) ? _bitmaps[name] : 0;
}
-
+
const Graphics::Surface *getImageSurface(const kThemeImages n) const {
if (n == kImageLogo)
return _bitmaps.contains("logo.bmp") ? _bitmaps["logo.bmp"] : 0;
else if (n == kImageLogoSmall)
return _bitmaps.contains("logo_small.bmp") ? _bitmaps["logo_small.bmp"] : 0;
-
+
return 0;
}
-
+
/**
* Interface for the Theme Parser: Creates a new cursor by loading the given
* bitmap and sets it as the active cursor.
@@ -546,7 +546,7 @@ protected:
const Common::String &getThemeName() const { return _themeName; }
const Common::String &getThemeFileName() const { return _themeFileName; }
int getGraphicsMode() const { return _graphicsMode; }
-
+
/**
* Initializes the drawing screen surfaces, _screen and _backBuffer.
* If the surfaces already exist, they are cleared and re-initialized.
@@ -565,7 +565,7 @@ protected:
* @returns true if the theme was successfully loaded.
*/
bool loadThemeXML(const Common::String &themeName);
-
+
/**
* Loads the default theme file (the embedded XML file found
* in ThemeDefaultXML.cpp).
@@ -586,7 +586,7 @@ protected:
void screenChange() {
error("Screen Changes are not supported yet. Fix this!");
}
-
+
/**
* Actual Dirty Screen handling function.
* Handles all the dirty squares in the list, merges and optimizes
@@ -602,7 +602,7 @@ protected:
delete _vectorRenderer;
_vectorRenderer = 0;
}
-
+
/**
* Frees the Back buffer surface, only if it's available.
*/
@@ -624,11 +624,11 @@ protected:
_screen = 0;
}
}
-
+
TextData getTextData(DrawData ddId) {
return _widgets[ddId] ? (TextData)_widgets[ddId]->_textDataId : kTextDataNone;
}
-
+
/**
* Draws a cached widget directly on the screen. Currently deprecated.
*
@@ -636,7 +636,7 @@ protected:
* @param r Position on screen to draw the widget.
*/
void drawCached(DrawData type, const Common::Rect &r);
-
+
/**
* Calculates the background threshold offset of a given DrawData item.
* After fully loading all DrawSteps of a DrawData item, this function must be
@@ -647,7 +647,7 @@ protected:
* @param type DrawData type of the widget.
*/
void calcBackgroundOffset(DrawData type);
-
+
/**
* Generates a DrawQueue item and enqueues it so it's drawn to the screen
* when the drawing queue is processed.
@@ -663,13 +663,13 @@ protected:
void queueDDText(TextData type, const Common::Rect &r, const Common::String &text, bool restoreBg,
bool elipsis, TextAlign alignH = kTextAlignLeft, TextAlignVertical alignV = kTextAlignVTop, int deltax = 0);
void queueBitmap(const Graphics::Surface *bitmap, const Common::Rect &r, bool alpha);
-
+
/**
* DEBUG: Draws a white square around the given position and writes the given next to it.
*/
void debugWidgetPosition(const char *name, const Common::Rect &r);
-
+
/**
* Default values from GUI::Theme
*/
@@ -677,29 +677,29 @@ protected:
int getTabPadding() const { return 3; }
OSystem *_system; /** Global system object. */
-
+
/** Vector Renderer object, does the actual drawing on screen */
Graphics::VectorRenderer *_vectorRenderer;
-
+
/** XML Parser, does the Theme parsing instead of the default parser */
GUI::ThemeParser *_parser;
-
+
/** Theme getEvaluator (changed from GUI::Eval to add functionality) */
GUI::ThemeEval *_themeEval;
/** Main screen surface. This is blitted straight into the overlay. */
Graphics::Surface *_screen;
-
+
/** Backbuffer surface. Stores previous states of the screen to blit back */
Graphics::Surface *_backBuffer;
-
- /** Sets whether the current drawing is being buffered (stored for later
+
+ /** Sets whether the current drawing is being buffered (stored for later
processing) or drawn directly to the screen. */
- bool _buffering;
+ bool _buffering;
/** Bytes per pixel of the Active Drawing Surface (i.e. the screen) */
int _bytesPerPixel;
-
+
/** Current graphics mode */
GraphicsMode _graphicsMode;
@@ -710,18 +710,18 @@ protected:
/** Array of all the DrawData elements than can be drawn to the screen.
Must be full so the renderer can work. */
WidgetDrawData *_widgets[kDrawDataMAX];
-
+
/** Array of all the text fonts that can be drawn. */
TextDrawData *_texts[kTextDataMAX];
-
+
ImagesMap _bitmaps;
-
+
/** List of all the dirty screens that must be blitted to the overlay. */
Common::List<Common::Rect> _dirtyScreen;
-
+
/** Queue with all the drawing that must be done to the Back Buffer */
Common::List<ThemeItem*> _bufferQueue;
-
+
/** Queue with all the drawing that must be done to the screen */
Common::List<ThemeItem*> _screenQueue;
@@ -731,10 +731,10 @@ protected:
Common::String _themeName; /** Name of the currently loaded theme */
Common::String _themeFileName;
-
+
/** Custom Cursor Management */
void setUpCursor();
-
+
bool _useCursor;
int _cursorHotspotX, _cursorHotspotY;
int _cursorTargetScale;
diff --git a/gui/ThemeLayout.h b/gui/ThemeLayout.h
index 0c4b65a1a8..2d119023ad 100644
--- a/gui/ThemeLayout.h
+++ b/gui/ThemeLayout.h
@@ -37,30 +37,30 @@ public:
kLayoutHorizontal,
kLayoutWidget
};
-
- ThemeLayout(ThemeLayout *p, const Common::String &name) :
+
+ ThemeLayout(ThemeLayout *p, const Common::String &name) :
_parent(p), _name(name), _x(0), _y(0), _w(-1), _h(-1),
- _paddingLeft(0), _paddingRight(0), _paddingTop(0), _paddingBottom(0),
+ _paddingLeft(0), _paddingRight(0), _paddingTop(0), _paddingBottom(0),
_centered(false), _defaultW(-1), _defaultH(-1) { }
-
+
virtual ~ThemeLayout() {
for (uint i = 0; i < _children.size(); ++i)
delete _children[i];
}
-
+
virtual void reflowLayout() = 0;
-
+
virtual void resetLayout() { _x = 0; _y = 0; _w = _defaultW; _h = _defaultH; }
-
+
void addChild(ThemeLayout *child) { _children.push_back(child); }
-
+
void setPadding(int8 left, int8 right, int8 top, int8 bottom) {
_paddingLeft = left;
_paddingRight = right;
_paddingTop = top;
_paddingBottom = bottom;
}
-
+
void setSpacing(int8 spacing) {
_spacing = spacing;
}
@@ -73,22 +73,22 @@ public:
int16 getY() { return _y; }
int16 getWidth() { return _w; }
int16 getHeight() { return _h; }
-
+
void setX(int newX) {
_x += newX;
for (uint i = 0; i < _children.size(); ++i)
_children[i]->setX(newX);
}
-
+
void setY(int newY) {
_y += newY;
for (uint i = 0; i < _children.size(); ++i)
_children[i]->setY(newY);
}
-
+
void setWidth(int16 width) { _w = width; }
void setHeight(int16 height) { _h = height; }
-
+
#ifdef LAYOUT_DEBUG_DIALOG
void debugDraw(Graphics::Surface *screen, const Graphics::Font *font) {
uint16 color = 0xFFFF;
@@ -102,10 +102,10 @@ public:
_children[i]->debugDraw(screen, font);
}
#endif
-
+
virtual LayoutType getLayoutType() = 0;
virtual const char *getName() { return _name.c_str(); }
-
+
virtual bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h);
virtual bool getDialogData(int16 &x, int16 &y, uint16 &w, uint16 &h) {
@@ -114,19 +114,19 @@ public:
w = _w; h = _h;
return true;
}
-
+
virtual ThemeLayout *makeClone() = 0;
void importLayout(ThemeLayout *layout);
-
+
protected:
+ ThemeLayout *_parent;
+ Common::String _name;
int16 _x, _y, _w, _h;
- int16 _defaultW, _defaultH;
- int8 _paddingTop, _paddingBottom, _paddingLeft, _paddingRight;
+ int8 _paddingLeft, _paddingRight, _paddingTop, _paddingBottom;
int8 _spacing;
Common::Array<ThemeLayout*> _children;
- ThemeLayout *_parent;
bool _centered;
- Common::String _name;
+ int16 _defaultW, _defaultH;
};
class ThemeLayoutMain : public ThemeLayout {
@@ -138,22 +138,22 @@ public:
_y = _defaultY = y;
}
void reflowLayout();
-
+
void resetLayout() {
ThemeLayout::resetLayout();
_x = _defaultX;
_y = _defaultY;
}
-
+
const char *getName() { return "Global Layout"; }
LayoutType getLayoutType() { return kLayoutMain; }
-
+
ThemeLayout *makeClone() { assert(!"Do not copy Main Layouts!"); return 0; }
-
+
protected:
int16 _defaultX;
int16 _defaultY;
-};
+};
class ThemeLayoutVertical : public ThemeLayout {
public:
@@ -162,40 +162,40 @@ public:
_spacing = spacing;
_centered = center;
}
-
+
void reflowLayout();
const char *getName() { return "Vertical Layout"; }
LayoutType getLayoutType() { return kLayoutVertical; }
-
-
- ThemeLayout *makeClone() {
+
+
+ ThemeLayout *makeClone() {
ThemeLayoutVertical *n = new ThemeLayoutVertical(*this);
-
+
for (uint i = 0; i < n->_children.size(); ++i)
n->_children[i] = n->_children[i]->makeClone();
-
+
return n;
}
};
class ThemeLayoutHorizontal : public ThemeLayout {
public:
- ThemeLayoutHorizontal(ThemeLayout *p, int spacing, bool center) :
+ ThemeLayoutHorizontal(ThemeLayout *p, int spacing, bool center) :
ThemeLayout(p, "") {
_spacing = spacing;
_centered = center;
}
-
+
void reflowLayout();
const char *getName() { return "Horizontal Layout"; }
LayoutType getLayoutType() { return kLayoutHorizontal; }
-
- ThemeLayout *makeClone() {
+
+ ThemeLayout *makeClone() {
ThemeLayoutHorizontal *n = new ThemeLayoutHorizontal(*this);
-
+
for (uint i = 0; i < n->_children.size(); ++ i)
n->_children[i] = n->_children[i]->makeClone();
-
+
return n;
}
};
@@ -206,11 +206,11 @@ public:
_w = _defaultW = w;
_h = _defaultH = h;
}
-
+
bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h);
void reflowLayout() {}
LayoutType getLayoutType() { return kLayoutWidget; }
-
+
ThemeLayout *makeClone() { return new ThemeLayoutWidget(*this); }
};
@@ -225,12 +225,12 @@ public:
_h = _defaultH = size;
}
}
-
+
bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h) { return false; }
void reflowLayout() {}
LayoutType getLayoutType() { return kLayoutWidget; }
const char *getName() { return "SPACE"; }
-
+
ThemeLayout *makeClone() { return new ThemeLayoutSpacing(*this); }
};