ScummVM API documentation
ThemeEngine.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef GUI_THEME_ENGINE_H
23 #define GUI_THEME_ENGINE_H
24 
25 #include "common/scummsys.h"
26 #include "common/fs.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"
33 
34 #include "graphics/managed_surface.h"
35 #include "graphics/font.h"
36 #include "graphics/pixelformat.h"
37 
38 
39 #define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.9.19"
40 
41 class OSystem;
42 
43 namespace Graphics {
44 struct DrawStep;
45 class VectorRenderer;
46 }
47 
48 namespace GUI {
49 
50 struct WidgetDrawData;
51 struct TextDrawData;
52 class Dialog;
53 class GuiObject;
54 class ThemeEval;
55 class ThemeParser;
56 
62 enum DrawData {
63  kDDMainDialogBackground,
64  kDDSpecialColorBackground,
65  kDDPlainColorBackground,
66  kDDTooltipBackground,
67  kDDDefaultBackground,
68  kDDTextSelectionBackground,
69  kDDTextSelectionFocusBackground,
70  kDDThumbnailBackground,
71  kDDGridItemIdle,
72  kDDGridItemHover,
73  kDDWidgetBackgroundDefault,
74  kDDWidgetBackgroundSmall,
75  kDDWidgetBackgroundEditText,
76  kDDWidgetBackgroundSlider,
77 
78  kDDButtonIdle,
79  kDDButtonHover,
80  kDDButtonDisabled,
81  kDDButtonPressed,
82 
83  kDDDropDownButtonIdle,
84  kDDDropDownButtonHoverLeft,
85  kDDDropDownButtonHoverRight,
86  kDDDropDownButtonDisabled,
87  kDDDropDownButtonPressedLeft,
88  kDDDropDownButtonPressedRight,
89 
90  kDDDropDownButtonIdleRTL,
91  kDDDropDownButtonHoverLeftRTL,
92  kDDDropDownButtonHoverRightRTL,
93  kDDDropDownButtonDisabledRTL,
94  kDDDropDownButtonPressedLeftRTL,
95  kDDDropDownButtonPressedRightRTL,
96 
97  kDDSliderFull,
98  kDDSliderHover,
99  kDDSliderDisabled,
100 
101  kDDCheckboxDefault,
102  kDDCheckboxDisabled,
103  kDDCheckboxSelected,
104  kDDCheckboxDisabledSelected,
105 
106  kDDRadiobuttonDefault,
107  kDDRadiobuttonDisabled,
108  kDDRadiobuttonSelected,
109 
110  kDDTabActive,
111  kDDTabInactive,
112  kDDTabBackground,
113 
114  kDDScrollbarBase,
115  kDDScrollbarButtonIdle,
116  kDDScrollbarButtonHover,
117  kDDScrollbarHandleIdle,
118  kDDScrollbarHandleHover,
119 
120  kDDPopUpIdle,
121  kDDPopUpHover,
122  kDDPopUpDisabled,
123 
124  kDDPopUpIdleRTL,
125  kDDPopUpHoverRTL,
126  kDDPopUpDisabledRTL,
127 
128  kDDCaret,
129  kDDSeparator,
130  kDrawDataMAX,
131  kDDNone = -1
132 };
133 
141 enum DrawLayer {
142  kDrawLayerBackground,
143  kDrawLayerForeground
144 };
145 
146 // FIXME: TextData is really a bad name, not conveying what this enum is about.
147 enum TextData {
148  kTextDataNone = -1,
149  kTextDataDefault = 0,
150  kTextDataButton,
151  kTextDataNormalFont,
152  kTextDataTooltip,
153  kTextDataConsole,
154  kTextDataExtraLang,
155  kTextDataMAX
156 };
157 
158 enum TextColor {
159  kTextColorNormal = 0,
160  kTextColorNormalInverted,
161  kTextColorNormalHover,
162  kTextColorNormalDisabled,
163  kTextColorAlternative,
164  kTextColorAlternativeInverted,
165  kTextColorAlternativeHover,
166  kTextColorAlternativeDisabled,
167  kTextColorOverride,
168  kTextColorOverrideInverted,
169  kTextColorOverrideHover,
170  kTextColorOverrideDisabled,
171  kTextColorButton,
172  kTextColorButtonHover,
173  kTextColorButtonDisabled,
174  kTextColorMAX
175 };
176 
178  int r, g, b;
179 };
180 
182 public:
183  LangExtraFont(TextData textId, Common::Array<Common::Language> &lngs, const Common::String &filename, const Common::String &scalableFile, int ps) : _langs(lngs) {
184  storeFileNames(textId, filename, scalableFile, ps);
185  }
186 
187  void storeFileNames(TextData textId, const Common::String &filename, const Common::String &scalableFile, int ps) {
188  assert(textId < kTextDataMAX);
189  _fontFilesStd[textId] = filename;
190  _fontFilesScalable[textId] = scalableFile;
191  _fontSize[textId] = ps;
192  }
193 
194  bool operator==(Common::Language l) const {
195  return (Common::find(_langs.begin(), _langs.end(), l) != _langs.end());
196  }
197 
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]; }
201 
202 private:
204  Common::String _fontFilesStd[kTextDataMAX];
205  Common::String _fontFilesScalable[kTextDataMAX];
206  int _fontSize[kTextDataMAX];
207 };
208 
209 class ThemeEngine {
210 protected:
212 
213  friend class GUI::Dialog;
214  friend class GUI::GuiObject;
215 
216 public:
219  kTextAlignVInvalid,
220  kTextAlignVBottom,
221  kTextAlignVCenter,
222  kTextAlignVTop
223  };
224 
235  kGridItemHighlight
236  };
237 
240  kDialogBackgroundMain,
241  kDialogBackgroundSpecial,
242  kDialogBackgroundPlain,
243  kDialogBackgroundTooltip,
244  kDialogBackgroundDefault,
245  kDialogBackgroundNone
246  };
247 
249  enum State {
253  kStatePressed
254  };
255 
256  typedef State WidgetStateInfo;
257 
262  kTextInversionFocus
263  };
264 
265  enum ScrollbarState {
266  kScrollbarStateNo,
267  kScrollbarStateUp,
268  kScrollbarStateDown,
269  kScrollbarStateSlider,
270  kScrollbarStateSinglePage
271  };
272 
274  enum FontStyle {
275  kFontStyleBold = 0,
276  kFontStyleNormal = 1,
277  kFontStyleItalic = 2,
278  kFontStyleFixedNormal = 3,
279  kFontStyleFixedBold = 4,
280  kFontStyleFixedItalic = 5,
281  kFontStyleTooltip = 6,
282  kFontStyleConsole = 7,
283  kFontStyleLangExtra = 8,
284  kFontStyleMax
285  };
286 
288  enum FontColor {
289  kFontColorFormatting = -1,
290  kFontColorNormal = 0,
291  kFontColorAlternate = 1,
292  kFontColorOverride = 2,
293  kFontColorMax
294  };
295 
300  kShadingLuminance
301  };
302 
305  kAutoScaleNone = 0,
306  kAutoScaleStretch = 1,
307  kAutoScaleFit = 2,
308  kAutoScaleNinePatch = 3
309  };
310 
311  // Special image ids for images used in the GUI
312  static const char *const kImageLogo;
313  static const char *const kImageLogoSmall;
314  static const char *const kImageSearch;
315  static const char *const kImageGroup;
316  static const char *const kImageEraser;
317  static const char *const kImageDelButton;
318  static const char *const kImageList;
319  static const char *const kImageGrid;
320  static const char *const kImageStopButton;
321  static const char *const kImageEditButton;
322  static const char *const kImageSwitchModeButton;
323  static const char *const kImageFastReplayButton;
324  static const char *const kImageStopSmallButton;
325  static const char *const kImageEditSmallButton;
326  static const char *const kImageSwitchModeSmallButton;
327  static const char *const kImageFastReplaySmallButton;
328 
335  kGfxDisabled = 0,
337  kGfxAntialias
338  };
339 
341  static const int kDirtyRectangleThreshold = 1;
342 
343  struct Renderer {
344  const char *name;
345  const char *shortname;
346  const char *cfg;
347  GraphicsMode mode;
348  };
349 
350  static const Renderer _rendererModes[];
351  static const uint _rendererModesSize;
352 
353  static const GraphicsMode _defaultRendererMode;
354 
355  static GraphicsMode findMode(const Common::String &cfg);
356  static const char *findModeConfigName(GraphicsMode mode);
357 
360 
362  ~ThemeEngine();
363 
364  void setBaseResolution(int w, int h, float s);
365  bool init();
366  void clearAll();
367 
368  void refresh();
369  void enable();
370 
371  void showCursor();
372  void hideCursor();
373 
374  void disable();
375 
376 
380  const Graphics::PixelFormat getPixelFormat() const { return _overlayFormat; }
381 
387  void applyScreenShading(ShadingStyle shading);
388 
396  void drawToBackbuffer();
397 
403  void drawToScreen();
404 
409  void updateScreen();
410 
414  void copyBackBufferToScreen();
415 
416 
419 
420  TextData fontStyleToData(FontStyle font) const {
421  if (font == kFontStyleNormal)
422  return kTextDataNormalFont;
423  if (font == kFontStyleTooltip)
424  return kTextDataTooltip;
425  if (font == kFontStyleConsole)
426  return kTextDataConsole;
427  if (font == kFontStyleLangExtra)
428  return kTextDataExtraLang;
429  return kTextDataDefault;
430  }
431 
432  const Graphics::Font *getFont(FontStyle font = kFontStyleBold) const;
433 
434  int getFontHeight(FontStyle font = kFontStyleBold) const;
435 
436  int getStringWidth(const Common::U32String &str, FontStyle font = kFontStyleBold) const;
437 
438  int getCharWidth(uint32 c, FontStyle font = kFontStyleBold) const;
439 
440  int getKerningOffset(uint32 left, uint32 right, FontStyle font = kFontStyleBold) const;
441 
443 
453  Common::Rect swapClipRect(const Common::Rect &newRect);
454  const Common::Rect getClipRect();
455 
459  void disableClipRect();
460 
463 
464  void drawWidgetBackground(const Common::Rect &r, WidgetBackground background);
465 
466  void drawButton(const Common::Rect &r, const Common::U32String &str, WidgetStateInfo state = kStateEnabled,
467  uint16 hints = 0);
468 
469  void drawDropDownButton(const Common::Rect &r, uint32 dropdownWidth, const Common::U32String &str,
470  WidgetStateInfo buttonState, bool inButton, bool inDropdown, bool rtl = false);
471 
472  void drawManagedSurface(const Common::Point &p, const Graphics::ManagedSurface &surface, Graphics::AlphaType alphaType);
473 
474  void drawSlider(const Common::Rect &r, int width, WidgetStateInfo state = kStateEnabled, bool rtl = false);
475 
476  void drawCheckbox(const Common::Rect &r, int spacing, const Common::U32String &str, bool checked,
477  WidgetStateInfo state = kStateEnabled, bool override = false, bool rtl = false);
478 
479  void drawRadiobutton(const Common::Rect &r, int spacing, const Common::U32String &str, bool checked,
480  WidgetStateInfo state = kStateEnabled, bool rtl = false);
481 
482  void drawTab(const Common::Rect &r, int tabHeight, const Common::Array<int> &tabWidths,
483  const Common::Array<Common::U32String> &tabs, int active, bool rtl,
485 
486  void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState scrollState);
487 
488  void drawPopUpWidget(const Common::Rect &r, const Common::U32String &sel, int deltax,
489  WidgetStateInfo state = kStateEnabled, bool rtl = false);
490 
491  void drawCaret(const Common::Rect &r, bool erase);
492 
493  void drawLineSeparator(const Common::Rect &r);
494 
495  void drawDialogBackground(const Common::Rect &r, DialogBackground type);
496 
497  void drawText(const Common::Rect &r, const Common::U32String &str, WidgetStateInfo state = kStateEnabled,
499  TextInversionState inverted = kTextInversionNone, int deltax = 0, bool useEllipsis = true,
500  FontStyle font = kFontStyleBold, FontColor color = kFontColorNormal, bool restore = true,
501  const Common::Rect &drawableTextArea = Common::Rect(0, 0, 0, 0));
502 
503  void drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, FontColor color = kFontColorNormal, TextInversionState inverted = ThemeEngine::kTextInversionNone);
504 
505  void drawFoldIndicator(const Common::Rect &r, bool expanded);
506 
508 
509 
510 
518  void addDirtyRect(Common::Rect r);
519 
520 
530  DrawData parseDrawDataId(const Common::String &name) const;
531 
532  TextData getTextData(DrawData ddId) const;
533  TextColor getTextColor(DrawData ddId) const;
534 
535  TextColorData *getTextColorData(TextColor color) const;
536 
546  void addDrawStep(const Common::String &drawDataId, const Graphics::DrawStep &step);
547 
557  bool addDrawData(const Common::String &data, bool cached);
558 
559 
570  bool addFont(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize);
571 
578  void storeFontNames(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize);
579 
586  bool loadExtraFont(FontStyle style, Common::Language lang);
587 
596  bool addTextColor(TextColor colorId, int r, int g, int b);
597 
598 
607  bool addBitmap(const Common::String &filename, const Common::String &scalablefile, int widht, int height);
608 
613  bool addTextData(const Common::String &drawDataId, TextData textId, TextColor id, Graphics::TextAlign alignH, TextAlignVertical alignV);
614 
615 protected:
622  bool ready() const {
623  return _initOk && _themeOk;
624  }
625 
627  void loadTheme(const Common::String &themeid);
628 
633  void setGraphicsMode(GraphicsMode mode);
634 
635 public:
636  inline ThemeEval *getEvaluator() { return _themeEval; }
637  inline Graphics::VectorRenderer *renderer() { return _vectorRenderer; }
638 
639  inline bool supportsImages() const { return true; }
640  inline bool ownCursor() const { return _useCursor; }
641 
642  Graphics::ManagedSurface *getImageSurface(const Common::String &name) const {
643  return _bitmaps.contains(name) ? _bitmaps[name] : 0;
644  }
645 
654  bool createCursor(const Common::String &filename, int hotspotX, int hotspotY);
655 
662  void restoreBackground(Common::Rect r);
663 
664  const Common::String &getThemeName() const { return _themeName; }
665  const Common::String &getThemeId() const { return _themeId; }
666  int getGraphicsMode() const { return _graphicsMode; }
667 
668 protected:
669 
676  bool loadThemeXML(const Common::String &themeId);
677 
683  bool loadDefaultXML();
684 
689  void unloadTheme();
690 
694  void unloadExtraFont();
695 
696  const Graphics::Font *loadScalableFont(const Common::String &filename, const int pointsize, Common::String &name);
697  const Graphics::Font *loadFont(const Common::String &filename, Common::String &name);
698  Common::String genCacheFilename(const Common::String &filename) const;
699  const Graphics::Font *loadFont(const Common::String &filename, const Common::String &scalableFilename, const int pointsize, const bool makeLocalizedFont);
700 
705  void updateDirtyScreen();
706 
715  void drawDD(DrawData type, const Common::Rect &r, uint32 dynamic = 0, bool forceRestore = false);
716  void drawDDText(TextData type, TextColor color, const Common::Rect &r, const Common::U32String &text, bool restoreBg,
717  bool elipsis, Graphics::TextAlign alignH = Graphics::kTextAlignLeft,
718  TextAlignVertical alignV = kTextAlignVTop, int deltax = 0,
719  const Common::Rect &drawableTextArea = Common::Rect(0, 0, 0, 0));
720 
724  void debugWidgetPosition(const char *name, const Common::Rect &r);
725 
726 public:
728  Common::String name;
729  Common::String id;
730  Common::Path filename;
731  };
732 
736  static void listUsableThemes(Common::List<ThemeDescriptor> &list);
737 private:
738  static bool themeConfigUsable(const Common::FSNode &node, Common::String &themeName);
739  static bool themeConfigUsable(const Common::ArchiveMember &member, Common::String &themeName);
740  static bool themeConfigParseHeader(Common::String header, Common::String &themeName);
741 
742  static Common::Path getThemeFile(const Common::String &id);
743  static Common::String getThemeId(const Common::Path &filename);
744  static void listUsableThemes(const Common::FSNode &node, Common::List<ThemeDescriptor> &list, int depth = -1);
745  static void listUsableThemes(Common::Archive &archive, Common::List<ThemeDescriptor> &list);
746 
747 protected:
748  OSystem *_system;
752 
755 
758 
761 
764 
771  DrawLayer _layerToDraw;
772 
775 
778 
779  int16 _baseWidth, _baseHeight;
780  float _scaleFactor;
781  bool _needScaleRefresh = false;
782 
785 
790  WidgetDrawData *_widgets[kDrawDataMAX];
791 
793  TextDrawData *_texts[kTextDataMAX];
794 
796  TextColorData *_textColors[kTextColorMAX];
797 
802 
803  ImagesMap _bitmaps;
804  Graphics::PixelFormat _overlayFormat;
805  Graphics::PixelFormat _cursorFormat;
806 
809 
810  bool _initOk;
811  bool _themeOk;
812  bool _enabled;
813 
815  Common::String _themeId;
816  Common::Path _themeFile;
817  Common::Archive *_themeArchive;
818  Common::SearchSet _themeFiles;
819 
820  bool _useCursor;
821  int _cursorHotspotX, _cursorHotspotY;
822  uint32 _cursorTransparent;
823  byte *_cursor;
824  uint _cursorWidth, _cursorHeight;
825 
826  enum {
827  MAX_CURS_COLORS = 255
828  };
829  byte _cursorPal[3 * MAX_CURS_COLORS];
830  byte _cursorPalSize;
831 
832  Common::Rect _clip;
833 };
834 
835 } // End of namespace GUI.
836 
837 #endif
Definition: managed_surface.h:51
Center the text.
Definition: font.h:52
bool _enabled
Whether the Theme is currently shown on the overlay.
Definition: ThemeEngine.h:812
Definition: str.h:59
Indicates that the text should not be drawn inverted.
Definition: ThemeEngine.h:260
Definition: VectorRenderer.h:51
Definition: font.h:82
FontColor
Font color selector.
Definition: ThemeEngine.h:288
TextAlign
Definition: font.h:48
ShadingStyle
Function used to process areas other than the current dialog.
Definition: ThemeEngine.h:297
Definition: ThemeEngine.h:181
static const char *const kImageSearch
Search tool image used in the launcher.
Definition: ThemeEngine.h:314
bool ready() const
Definition: ThemeEngine.h:622
AutoScaleMode
AlphaBitmap scale mode selector.
Definition: ThemeEngine.h:304
Dimming unused areas.
Definition: ThemeEngine.h:299
Definition: ThemeEngine.h:727
Definition: pixelformat.h:138
No background at all.
Definition: ThemeEngine.h:227
Background used for thumbnails.
Definition: ThemeEngine.h:233
TextAlignVertical
Vertical alignment of the text.
Definition: ThemeEngine.h:218
In find(In first, In last, const T &v)
Definition: algorithm.h:225
Align the text to the left.
Definition: font.h:51
Standard (aliased) renderer.
Definition: ThemeEngine.h:336
WidgetBackground
Widget background type.
Definition: ThemeEngine.h:226
Definition: list.h:44
GUI::ThemeEval * _themeEval
Definition: ThemeEngine.h:757
Definition: rect.h:144
Definition: path.h:52
bool _themeOk
Theme data successfully loaded.
Definition: ThemeEngine.h:811
Common::Array< LangExtraFont > _langExtraFonts
Definition: ThemeEngine.h:801
Same as kWidgetBackgroundPlain just with a border.
Definition: ThemeEngine.h:229
static const char *const kImageStopButton
Stop recording button in recorder onscreen dialog.
Definition: ThemeEngine.h:320
Common::String _themeName
Name of the currently loaded theme.
Definition: ThemeEngine.h:814
Definition: VectorRenderer.h:139
Definition: ThemeEval.h:37
Definition: system.h:46
Definition: object.h:60
static const char *const kImageLogoSmall
ScummVM logo used in the GMM.
Definition: ThemeEngine.h:313
Definition: archive.h:141
bool _initOk
Class and renderer properly initialized.
Definition: ThemeEngine.h:810
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
Default Background used for grid items.
Definition: ThemeEngine.h:234
GUI::ThemeParser * _parser
Definition: ThemeEngine.h:754
Indicates that the text should be drawn inverted, but not focused.
Definition: ThemeEngine.h:261
Background used for sliders.
Definition: ThemeEngine.h:232
static const char *const kImageGroup
Select Group image used in the launcher.
Definition: ThemeEngine.h:315
Definition: ustr.h:57
Definition: archive.h:312
Common::List< Common::Rect > _dirtyScreen
Definition: ThemeEngine.h:808
static const char *const kImageDelButton
Delete characters in the predictive dialog.
Definition: ThemeEngine.h:317
const Graphics::Font * _font
Definition: ThemeEngine.h:784
Definition: archive.h:68
DialogBackground
Dialog background type.
Definition: ThemeEngine.h:239
Definition: fs.h:69
Definition: formatinfo.h:28
FontStyle
Font style selector.
Definition: ThemeEngine.h:274
Indicates that the widget is enabled.
Definition: ThemeEngine.h:251
Definition: rect.h:45
DrawLayer _layerToDraw
Definition: ThemeEngine.h:771
Graphics::ManagedSurface _screen
Definition: ThemeEngine.h:760
static const char *const kImageSwitchModeButton
Switch mode button in recorder onscreen dialog.
Definition: ThemeEngine.h:322
Definition: ThemeEngine.h:209
Definition: ThemeEngine.h:343
static const char *const kImageStopSmallButton
Stop recording button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:324
Indicates that the widget is highlighted by the user.
Definition: ThemeEngine.h:252
Definition: ThemeParser.h:32
Same as kWidgetBackgroundPlain just with a small border.
Definition: ThemeEngine.h:230
static const char *const kImageFastReplayButton
Fast playback mode button in recorder onscreen dialog.
Definition: ThemeEngine.h:323
Definition: dialog.h:49
State
State of the widget to be drawn.
Definition: ThemeEngine.h:249
GraphicsMode _graphicsMode
Definition: ThemeEngine.h:777
int _bytesPerPixel
Definition: ThemeEngine.h:774
Background used for edit text fields.
Definition: ThemeEngine.h:231
const Graphics::PixelFormat getPixelFormat() const
Definition: ThemeEngine.h:380
static const char *const kImageLogo
ScummVM logo used in the launcher.
Definition: ThemeEngine.h:312
Graphics::ManagedSurface _backBuffer
Definition: ThemeEngine.h:763
Definition: system.h:161
Indicates that the widget is disabled, that does NOT include that it is invisible.
Definition: ThemeEngine.h:250
No special post processing.
Definition: ThemeEngine.h:298
static const char *const kImageSwitchModeSmallButton
Switch mode button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:326
Simple background, this may not include borders.
Definition: ThemeEngine.h:228
Definition: ThemeEngine.h:177
static const char *const kImageEditButton
Edit recording metadata in recorder onscreen dialog.
Definition: ThemeEngine.h:321
static const char *const kImageGrid
Grid image used in save/load chooser selection.
Definition: ThemeEngine.h:319
static const char *const kImageList
List image used in save/load chooser selection.
Definition: ThemeEngine.h:318
GraphicsMode
Definition: ThemeEngine.h:334
Graphics::VectorRenderer * _vectorRenderer
Definition: ThemeEngine.h:751
static const char *const kImageEraser
Clear input image used in the launcher.
Definition: ThemeEngine.h:316
static const char *const kImageFastReplaySmallButton
Fast playback mode button in recorder onscreen dialog (for 320xY)
Definition: ThemeEngine.h:327
Language
Definition: language.h:45