Reordered initialization lists to kill a ton of warnings.
svn-id: r34892
This commit is contained in:
parent
f12b76b7fb
commit
33b6bc4215
4 changed files with 286 additions and 286 deletions
|
@ -44,7 +44,7 @@ namespace Graphics {
|
|||
class VectorRenderer;
|
||||
|
||||
struct DrawStep {
|
||||
struct Color {
|
||||
struct Color {
|
||||
uint8 r, g, b;
|
||||
bool set;
|
||||
};
|
||||
|
@ -57,7 +57,7 @@ struct DrawStep {
|
|||
bool autoWidth, autoHeight;
|
||||
int16 x, y, w, h; /**< width, height and position, if not measured automatically.
|
||||
negative values mean counting from the opposite direction */
|
||||
|
||||
|
||||
enum VectorAlignment {
|
||||
kVectorAlignManual,
|
||||
kVectorAlignLeft,
|
||||
|
@ -92,7 +92,7 @@ VectorRenderer *createRenderer(int mode);
|
|||
*
|
||||
* When specifying define DISABLE_FANCY_THEMES eye candy related code
|
||||
* gets stripped off. This is especially useful for small devices like NDS.
|
||||
* Also note that if you specify DISABLE_FANCY_THEMES, you'll need to
|
||||
* Also note that if you specify DISABLE_FANCY_THEMES, you'll need to
|
||||
* specify a forced overlay bit format via VECTOR_RENDERER_FORMAT define.
|
||||
* The value looks like 'XYZ' for RXGYBZ mode, so R5G5B5 would be specified
|
||||
* via:
|
||||
|
@ -105,9 +105,9 @@ VectorRenderer *createRenderer(int mode);
|
|||
*/
|
||||
class VectorRenderer {
|
||||
public:
|
||||
VectorRenderer() : _shadowOffset(0), _fillMode(kFillDisabled),
|
||||
_activeSurface(NULL), _strokeWidth(1), _gradientFactor(1), _disableShadows(false) {
|
||||
|
||||
VectorRenderer() : _activeSurface(NULL), _fillMode(kFillDisabled), _shadowOffset(0),
|
||||
_disableShadows(false), _strokeWidth(1), _gradientFactor(1) {
|
||||
|
||||
}
|
||||
|
||||
virtual ~VectorRenderer() {}
|
||||
|
@ -127,7 +127,7 @@ public:
|
|||
kTriangleLeft,
|
||||
kTriangleRight
|
||||
};
|
||||
|
||||
|
||||
#ifndef DISABLE_FANCY_THEMES
|
||||
enum ConvolutionData {
|
||||
kConvolutionSoftBlur,
|
||||
|
@ -138,7 +138,7 @@ public:
|
|||
kConvolutionEdgeDetect,
|
||||
kConvolutionMAX
|
||||
};
|
||||
|
||||
|
||||
struct ConvolutionDataSet {
|
||||
int matrix[3][3];
|
||||
int divisor;
|
||||
|
@ -212,7 +212,7 @@ public:
|
|||
* @param bevel Amount of bevel. Must be positive.
|
||||
*/
|
||||
virtual void drawBeveledSquare(int x, int y, int w, int h, int bevel) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Draws a tab-like shape, specially thought for the Tab widget.
|
||||
* If a radius is given, the tab will have rounded corners. Otherwise,
|
||||
|
@ -225,8 +225,8 @@ public:
|
|||
* @param r Radius of the corners of the tab (0 for squared tabs).
|
||||
*/
|
||||
virtual void drawTab(int x, int y, int r, int w, int h) = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Simple helper function to draw a cross.
|
||||
*/
|
||||
|
@ -282,7 +282,7 @@ public:
|
|||
* @param b value of the blue color byte
|
||||
*/
|
||||
virtual void setBgColor(uint8 r, uint8 g, uint8 b) = 0;
|
||||
|
||||
|
||||
virtual void setBevelColor(uint8 r, uint8 g, uint8 b) = 0;
|
||||
|
||||
/**
|
||||
|
@ -356,7 +356,7 @@ public:
|
|||
if (offset >= 0)
|
||||
_shadowOffset = offset;
|
||||
}
|
||||
|
||||
|
||||
virtual void setBevel(int amount) {
|
||||
if (amount >= 0)
|
||||
_bevel = amount;
|
||||
|
@ -386,7 +386,7 @@ public:
|
|||
int stepGetRadius(const DrawStep &step, const Common::Rect &area);
|
||||
|
||||
/**
|
||||
* DrawStep callback functions for each drawing feature
|
||||
* DrawStep callback functions for each drawing feature
|
||||
*/
|
||||
void drawCallback_CIRCLE(const Common::Rect &area, const DrawStep &step) {
|
||||
uint16 x, y, w, h, radius;
|
||||
|
@ -430,19 +430,19 @@ public:
|
|||
stepGetPositions(step, area, x, y, w, h);
|
||||
drawBeveledSquare(x, y, w, h, _bevel);
|
||||
}
|
||||
|
||||
|
||||
void drawCallback_TAB(const Common::Rect &area, const DrawStep &step) {
|
||||
uint16 x, y, w, h;
|
||||
stepGetPositions(step, area, x, y, w, h);
|
||||
drawTab(x, y, stepGetRadius(step, area), w, h);
|
||||
}
|
||||
|
||||
|
||||
void drawCallback_BITMAP(const Common::Rect &area, const DrawStep &step) {
|
||||
uint16 x, y, w, h;
|
||||
stepGetPositions(step, area, x, y, w, h);
|
||||
blitAlphaBitmap(step.blitSrc, Common::Rect(x, y, x + w, y + h));
|
||||
}
|
||||
|
||||
|
||||
void drawCallback_CROSS(const Common::Rect &area, const DrawStep &step) {
|
||||
uint16 x, y, w, h;
|
||||
stepGetPositions(step, area, x, y, w, h);
|
||||
|
@ -453,7 +453,7 @@ public:
|
|||
|
||||
/**
|
||||
* Draws the specified draw step on the screen.
|
||||
*
|
||||
*
|
||||
* @see DrawStep
|
||||
* @param area Zone to paint on
|
||||
* @param step Pointer to a DrawStep struct.
|
||||
|
@ -467,9 +467,9 @@ public:
|
|||
* @param r Zone of the surface to copy into the overlay.
|
||||
*/
|
||||
virtual void copyFrame(OSystem *sys, const Common::Rect &r) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Copies the current surface to the system overlay
|
||||
* Copies the current surface to the system overlay
|
||||
*
|
||||
* @param sys Pointer to the global System class
|
||||
*/
|
||||
|
@ -480,7 +480,7 @@ public:
|
|||
*
|
||||
* Note that the source surface and the active
|
||||
* surface are expected to be of the same size, hence the area delimited
|
||||
* by "r" in the source surface will be blitted into the area delimited by
|
||||
* by "r" in the source surface will be blitted into the area delimited by
|
||||
* "r" on the current surface.
|
||||
*
|
||||
* If you wish to blit a smaller surface into the active drawing area, use
|
||||
|
@ -490,7 +490,7 @@ public:
|
|||
* @param r Position in the active drawing surface to do the blitting.
|
||||
*/
|
||||
virtual void blitSurface(const Graphics::Surface *source, const Common::Rect &r) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Blits a given graphics surface into a small area of the current drawing surface.
|
||||
*
|
||||
|
@ -499,24 +499,24 @@ public:
|
|||
* blitted into the active surface, at the position specified by "r".
|
||||
*/
|
||||
virtual void blitSubSurface(const Graphics::Surface *source, const Common::Rect &r) = 0;
|
||||
|
||||
|
||||
virtual void blitAlphaBitmap(const Graphics::Surface *source, const Common::Rect &r) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Draws a string into the screen. Wrapper for the Graphics::Font string drawing
|
||||
* method.
|
||||
*/
|
||||
virtual void drawString(const Graphics::Font *font, const Common::String &text,
|
||||
const Common::Rect &area, GUI::Theme::TextAlign alignH,
|
||||
virtual void drawString(const Graphics::Font *font, const Common::String &text,
|
||||
const Common::Rect &area, GUI::Theme::TextAlign alignH,
|
||||
GUI::Theme::TextAlignVertical alignV, int deltax, bool useEllipsis) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Allows to temporarily enable/disable all shadows drawing.
|
||||
* i.e. for performance issues, blitting, etc
|
||||
*/
|
||||
virtual void disableShadows() { _disableShadows = true; }
|
||||
virtual void enableShadows() { _disableShadows = false; }
|
||||
|
||||
|
||||
#ifndef DISABLE_FANCY_THEMES
|
||||
/**
|
||||
* Applies a convolution matrix on the given surface area.
|
||||
|
@ -531,7 +531,7 @@ public:
|
|||
* @param offset Offset on the convolution area.
|
||||
*/
|
||||
virtual void areaConvolution(const Common::Rect &area, const int filter[3][3], int filterDiv, int offset) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Applies one of the predefined convolution effects on the given area.
|
||||
*
|
||||
|
@ -544,7 +544,7 @@ public:
|
|||
areaConvolution(area, _convolutionData[id].matrix, _convolutionData[id].divisor, _convolutionData[id].offset);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Applies a whole-screen shading effect, used before opening a new dialog.
|
||||
* Currently supports screen dimmings and luminance (b&w).
|
||||
|
@ -555,7 +555,7 @@ protected:
|
|||
Surface *_activeSurface; /**< Pointer to the surface currently being drawn */
|
||||
|
||||
FillMode _fillMode; /**< Defines in which way (if any) are filled the drawn shapes */
|
||||
|
||||
|
||||
int _shadowOffset; /**< offset for drawn shadows */
|
||||
int _bevel; /**< amount of fake bevel */
|
||||
bool _disableShadows; /**< Disables temporarily shadow drawing for overlayed images. */
|
||||
|
@ -564,7 +564,7 @@ protected:
|
|||
|
||||
int _gradientFactor; /**< Multiplication factor of the active gradient */
|
||||
int _gradientBytes[3]; /**< Color bytes of the active gradient, used to speed up calculation */
|
||||
|
||||
|
||||
#ifndef DISABLE_FANCY_THEMES
|
||||
static const ConvolutionDataSet _convolutionData[kConvolutionMAX];
|
||||
#endif
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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); }
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue