22#ifndef GUI_THEME_ENGINE_H
23#define GUI_THEME_ENGINE_H
25#include "common/scummsys.h"
27#include "common/hash-str.h"
28#include "common/hashmap.h"
29#include "common/language.h"
30#include "common/list.h"
31#include "common/str.h"
32#include "common/rect.h"
34#include "graphics/managed_surface.h"
35#include "graphics/font.h"
36#include "graphics/pixelformat.h"
39#define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.9.24"
63 kDDMainDialogBackground,
64 kDDSpecialColorBackground,
65 kDDPlainColorBackground,
68 kDDTextSelectionBackground,
69 kDDTextSelectionFocusBackground,
70 kDDThumbnailBackground,
73 kDDWidgetBackgroundDefault,
74 kDDWidgetBackgroundSmall,
75 kDDWidgetBackgroundEditText,
76 kDDWidgetBackgroundSlider,
83 kDDDropDownButtonIdle,
84 kDDDropDownButtonHoverLeft,
85 kDDDropDownButtonHoverRight,
86 kDDDropDownButtonDisabled,
87 kDDDropDownButtonPressedLeft,
88 kDDDropDownButtonPressedRight,
90 kDDDropDownButtonIdleRTL,
91 kDDDropDownButtonHoverLeftRTL,
92 kDDDropDownButtonHoverRightRTL,
93 kDDDropDownButtonDisabledRTL,
94 kDDDropDownButtonPressedLeftRTL,
95 kDDDropDownButtonPressedRightRTL,
104 kDDCheckboxDisabledSelected,
106 kDDRadiobuttonDefault,
107 kDDRadiobuttonDisabled,
108 kDDRadiobuttonSelected,
115 kDDScrollbarButtonIdle,
116 kDDScrollbarButtonHover,
117 kDDScrollbarHandleIdle,
118 kDDScrollbarHandleHover,
142 kDrawLayerBackground,
149 kTextDataDefault = 0,
159 kTextColorNormal = 0,
160 kTextColorNormalInverted,
161 kTextColorNormalHover,
162 kTextColorNormalDisabled,
163 kTextColorAlternative,
164 kTextColorAlternativeInverted,
165 kTextColorAlternativeHover,
166 kTextColorAlternativeDisabled,
168 kTextColorOverrideInverted,
169 kTextColorOverrideHover,
170 kTextColorOverrideDisabled,
172 kTextColorButtonHover,
173 kTextColorButtonDisabled,
184 storeFileNames(textId, filename, scalableFile, ps);
188 assert(textId < kTextDataMAX);
189 _fontFilesStd[textId] = filename;
190 _fontFilesScalable[textId] = scalableFile;
191 _fontSize[textId] = ps;
198 Common::String file(TextData textId)
const {
return _fontFilesStd[textId]; }
199 Common::String sclFile(TextData textId)
const {
return _fontFilesScalable[textId]; }
200 int fntSize(TextData textId)
const {
return _fontSize[textId]; }
206 int _fontSize[kTextDataMAX];
240 kDialogBackgroundMain,
241 kDialogBackgroundSpecial,
242 kDialogBackgroundPlain,
243 kDialogBackgroundTooltip,
244 kDialogBackgroundDefault,
245 kDialogBackgroundNone
256 typedef State WidgetStateInfo;
265 enum ScrollbarState {
269 kScrollbarStateSlider,
270 kScrollbarStateSinglePage
342 const char *shortname;
347 static const Renderer _rendererModes[];
348 static const uint _rendererModesSize;
353 static const char *findModeConfigName(
GraphicsMode mode);
361 void setBaseResolution(
int w,
int h,
float s);
417 TextData fontStyleToData(
FontStyle font)
const {
419 return kTextDataNormalFont;
421 return kTextDataTooltip;
423 return kTextDataConsole;
425 return kTextDataExtraLang;
426 return kTextDataDefault;
477 WidgetStateInfo buttonState,
bool inButton,
bool inDropdown,
bool rtl =
false);
493 void drawScrollbar(
const Common::Rect &r,
int sliderY,
int sliderHeight, ScrollbarState scrollState);
512 void drawFoldIndicator(
const Common::Rect &r,
bool expanded);
539 TextData getTextData(DrawData ddId)
const;
540 TextColor getTextColor(DrawData ddId)
const;
635 void setActiveCursor(CursorType type);
664 CursorType _activeCursorType = kCursorNormal;
665 bool _useCursor =
false;
671 inline bool supportsImages()
const {
return true; }
672 inline bool ownCursor()
const {
return _useCursor; }
675 return _bitmaps.
contains(name) ? _bitmaps[name] : 0;
827 int16 _baseWidth, _baseHeight;
829 bool _needScaleRefresh =
false;
867 int _cursorHotspotX, _cursorHotspotY;
868 uint32 _cursorTransparent;
870 uint _cursorWidth, _cursorHeight;
873 MAX_CURS_COLORS = 255
Definition: archive.h:141
iterator end()
Definition: array.h:380
iterator begin()
Definition: array.h:375
Definition: archive.h:330
Definition: ThemeEngine.h:209
Common::Rect getDialogDirtyRect(const Common::Rect &r, DialogBackground bgtype)
bool _enabled
Whether the Theme is currently shown on the overlay.
Definition: ThemeEngine.h:859
void setGraphicsMode(GraphicsMode mode)
void debugWidgetPosition(const char *name, const Common::Rect &r)
bool loadExtraFont(FontStyle style, Common::Language lang)
void drawDD(DrawData type, const Common::Rect &r, uint32 dynamic=0, bool forceRestore=false)
GraphicsMode _graphicsMode
Definition: ThemeEngine.h:825
int _bytesPerPixel
Definition: ThemeEngine.h:822
bool createCursor(const Common::String &filename, int hotspotX, int hotspotY, CursorType type=kCursorNormal)
ShadingStyle
Function used to process areas other than the current dialog.
Definition: ThemeEngine.h:297
@ kShadingLuminance
Converting colors to luminance for unused areas.
Definition: ThemeEngine.h:300
@ kShadingNone
No special post processing.
Definition: ThemeEngine.h:298
@ kShadingDim
Dimming unused areas.
Definition: ThemeEngine.h:299
ThemeEngine(Common::String id, GraphicsMode mode)
static const char *const kImageStopSmallButton
Stop recording button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:324
TextAlignVertical
Vertical alignment of the text.
Definition: ThemeEngine.h:218
void restoreBackground(Common::Rect r)
FontStyle
Font style selector.
Definition: ThemeEngine.h:274
@ kFontStyleItalic
Italic styled font.
Definition: ThemeEngine.h:277
@ kFontStyleLangExtra
Language specific font for ingame dialogs (e. g. the SCUMM pause/restart dialogs)
Definition: ThemeEngine.h:283
@ kFontStyleBold
A bold font. This is also the default font.
Definition: ThemeEngine.h:275
@ kFontStyleFixedNormal
Fixed size font.
Definition: ThemeEngine.h:278
@ kFontStyleFixedItalic
Fixed size italic font.
Definition: ThemeEngine.h:280
@ kFontStyleNormal
A normal font.
Definition: ThemeEngine.h:276
@ kFontStyleTooltip
Tiny console font.
Definition: ThemeEngine.h:281
@ kFontStyleFixedBold
Fixed size bold font.
Definition: ThemeEngine.h:279
@ kFontStyleConsole
Debug console font.
Definition: ThemeEngine.h:282
static void listUsableThemes(Common::List< ThemeDescriptor > &list)
Graphics::ManagedSurface _backBuffer
Definition: ThemeEngine.h:811
Graphics::ManagedSurface _screen
Definition: ThemeEngine.h:808
static const char *const kImageDelButton
Delete characters in the predictive dialog.
Definition: ThemeEngine.h:317
static const char *const kImageLogoSmall
ScummVM logo used in the GMM.
Definition: ThemeEngine.h:313
bool addDrawData(const Common::String &data, bool cached)
static const char *const kImageStopButton
Stop recording button in recorder onscreen dialog.
Definition: ThemeEngine.h:320
bool addTextData(const Common::String &drawDataId, TextData textId, TextColor id, Graphics::TextAlign alignH, TextAlignVertical alignV)
bool _initOk
Class and renderer properly initialized.
Definition: ThemeEngine.h:857
Common::Array< LangExtraFont > _langExtraFonts
Definition: ThemeEngine.h:849
bool loadThemeXML(const Common::String &themeId)
static const char *const kImageGrid
Grid image used in save/load chooser selection.
Definition: ThemeEngine.h:319
void addDirtyRect(Common::Rect r)
static const char *const kImageLogo
ScummVM logo used in the launcher.
Definition: ThemeEngine.h:312
bool _themeOk
Theme data successfully loaded.
Definition: ThemeEngine.h:858
State
State of the widget to be drawn.
Definition: ThemeEngine.h:249
@ kStateDisabled
Indicates that the widget is disabled, that does NOT include that it is invisible.
Definition: ThemeEngine.h:250
@ kStateEnabled
Indicates that the widget is enabled.
Definition: ThemeEngine.h:251
@ kStateHighlight
Indicates that the widget is highlighted by the user.
Definition: ThemeEngine.h:252
@ kStatePressed
Indicates that the widget is pressed, currently works for buttons.
Definition: ThemeEngine.h:253
Common::Rect swapClipRect(const Common::Rect &newRect)
static const char *const kImageEraser
Clear input image used in the launcher.
Definition: ThemeEngine.h:316
Common::Rect getDrawDataRestoreRect(DrawData type, const Common::Rect &r) const
static const char *const kImageList
List image used in save/load chooser selection.
Definition: ThemeEngine.h:318
Common::List< Common::Rect > _dirtyScreen
Definition: ThemeEngine.h:855
void addDrawStep(const Common::String &drawDataId, const Graphics::DrawStep &step)
static const char *const kImageEditSmallButton
Edit recording metadata in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:325
TextInversionState
Text inversion state of the text to be draw.
Definition: ThemeEngine.h:259
@ kTextInversionNone
Indicates that the text should not be drawn inverted.
Definition: ThemeEngine.h:260
@ kTextInversion
Indicates that the text should be drawn inverted, but not focused.
Definition: ThemeEngine.h:261
@ kTextInversionFocus
Indicates that the text should be drawn inverted, and focused.
Definition: ThemeEngine.h:262
DialogBackground
Dialog background type.
Definition: ThemeEngine.h:239
bool addFont(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize)
bool addBitmap(const Common::String &filename, const Common::String &scalablefile, int widht, int height)
static const char *const kImageSwitchModeButton
Switch mode button in recorder onscreen dialog.
Definition: ThemeEngine.h:322
Common::String _themeName
Name of the currently loaded theme.
Definition: ThemeEngine.h:861
WidgetDrawData * _widgets[kDrawDataMAX]
Definition: ThemeEngine.h:838
static const char *const kImageFastReplaySmallButton
Fast playback mode button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:327
TextDrawData * _texts[kTextDataMAX]
Definition: ThemeEngine.h:841
void storeFontNames(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize)
DrawData parseDrawDataId(const Common::String &name) const
GUI::ThemeParser * _parser
Definition: ThemeEngine.h:802
GraphicsMode
Definition: ThemeEngine.h:334
@ kGfxDisabled
No GFX.
Definition: ThemeEngine.h:335
@ kGfxStandard
Standard (aliased) renderer.
Definition: ThemeEngine.h:336
@ kGfxAntialias
Optimized AA renderer.
Definition: ThemeEngine.h:337
bool addTextColor(TextColor colorId, int r, int g, int b)
bool getDrawDataColor(DrawData ddId, uint8 &r, uint8 &g, uint8 &b) const
AutoScaleMode
AlphaBitmap scale mode selector.
Definition: ThemeEngine.h:304
@ kAutoScaleStretch
Stretch image to full widget size.
Definition: ThemeEngine.h:306
@ kAutoScaleNone
Use image dimensions.
Definition: ThemeEngine.h:305
@ kAutoScaleNinePatch
9-patch image
Definition: ThemeEngine.h:308
@ kAutoScaleFit
Scale image to widget size but keep aspect ratio.
Definition: ThemeEngine.h:307
FontColor
Font color selector.
Definition: ThemeEngine.h:288
@ kFontColorAlternate
Alternative font color.
Definition: ThemeEngine.h:291
@ kFontColorNormal
The default color of the theme.
Definition: ThemeEngine.h:290
@ kFontColorOverride
Color of overwritten text.
Definition: ThemeEngine.h:292
@ kFontColorFormatting
Use color from formatting.
Definition: ThemeEngine.h:289
void copyBackBufferToScreen()
TextColorData * _textColors[kTextColorMAX]
Definition: ThemeEngine.h:844
DrawLayer _layerToDraw
Definition: ThemeEngine.h:819
Graphics::VectorRenderer * _vectorRenderer
Definition: ThemeEngine.h:799
bool ready() const
Definition: ThemeEngine.h:644
void loadTheme(const Common::String &themeid)
const Graphics::PixelFormat getPixelFormat() const
Definition: ThemeEngine.h:377
GUI::ThemeEval * _themeEval
Definition: ThemeEngine.h:805
Common::Rect getDrawDataExtendedRect(DrawData type, const Common::Rect &r) const
static const char *const kImageSwitchModeSmallButton
Switch mode button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:326
static const char *const kImageGroup
Select Group image used in the launcher.
Definition: ThemeEngine.h:315
const Graphics::Font * _font
Definition: ThemeEngine.h:832
static const char *const kImageFastReplayButton
Fast playback mode button in recorder onscreen dialog.
Definition: ThemeEngine.h:323
static const char *const kImageEditButton
Edit recording metadata in recorder onscreen dialog.
Definition: ThemeEngine.h:321
static const char *const kImageSearch
Search tool image used in the launcher.
Definition: ThemeEngine.h:314
WidgetBackground
Widget background type.
Definition: ThemeEngine.h:226
@ kWidgetBackgroundSlider
Background used for sliders.
Definition: ThemeEngine.h:232
@ kThumbnailBackground
Background used for thumbnails.
Definition: ThemeEngine.h:233
@ kWidgetBackgroundNo
No background at all.
Definition: ThemeEngine.h:227
@ kWidgetBackgroundEditText
Background used for edit text fields.
Definition: ThemeEngine.h:231
@ kWidgetBackgroundBorder
Same as kWidgetBackgroundPlain just with a border.
Definition: ThemeEngine.h:229
@ kGridItemBackground
Default Background used for grid items.
Definition: ThemeEngine.h:234
@ kGridItemHighlight
Highlight Background used for grid items.
Definition: ThemeEngine.h:235
@ kWidgetBackgroundBorderSmall
Same as kWidgetBackgroundPlain just with a small border.
Definition: ThemeEngine.h:230
@ kWidgetBackgroundPlain
Simple background, this may not include borders.
Definition: ThemeEngine.h:228
void applyScreenShading(ShadingStyle shading)
Definition: ThemeEval.h:37
Definition: ThemeParser.h:32
Definition: managed_surface.h:51
Definition: VectorRenderer.h:138
In find(In first, In last, const T &v)
Definition: algorithm.h:225
bool contains(const Key &key) const
Definition: hashmap.h:598
Language
Definition: language.h:45
TextAlign
Definition: font.h:48
@ kTextAlignCenter
Center the text.
Definition: font.h:52
@ kTextAlignLeft
Align the text to the left.
Definition: font.h:51
Definition: formatinfo.h:28
Definition: ThemeEngine.h:177
Definition: ThemeEngine.h:657
Definition: ThemeEngine.h:340
Definition: ThemeEngine.h:773
Definition: VectorRenderer.h:51