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.21"
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 
541  bool getDrawDataColor(DrawData ddId, uint8 &r, uint8 &g, uint8 &b) const;
542 
552  void addDrawStep(const Common::String &drawDataId, const Graphics::DrawStep &step);
553 
563  bool addDrawData(const Common::String &data, bool cached);
564 
565 
576  bool addFont(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize);
577 
584  void storeFontNames(TextData textId, const Common::String &language, const Common::String &file, const Common::String &scalableFile, const int pointsize);
585 
592  bool loadExtraFont(FontStyle style, Common::Language lang);
593 
602  bool addTextColor(TextColor colorId, int r, int g, int b);
603 
604 
613  bool addBitmap(const Common::String &filename, const Common::String &scalablefile, int widht, int height);
614 
619  bool addTextData(const Common::String &drawDataId, TextData textId, TextColor id, Graphics::TextAlign alignH, TextAlignVertical alignV);
620 
621 protected:
628  bool ready() const {
629  return _initOk && _themeOk;
630  }
631 
633  void loadTheme(const Common::String &themeid);
634 
639  void setGraphicsMode(GraphicsMode mode);
640 
641 public:
642  inline ThemeEval *getEvaluator() { return _themeEval; }
643  inline Graphics::VectorRenderer *renderer() { return _vectorRenderer; }
644 
645  inline bool supportsImages() const { return true; }
646  inline bool ownCursor() const { return _useCursor; }
647 
648  Graphics::ManagedSurface *getImageSurface(const Common::String &name) const {
649  return _bitmaps.contains(name) ? _bitmaps[name] : 0;
650  }
651 
660  bool createCursor(const Common::String &filename, int hotspotX, int hotspotY);
661 
668  void restoreBackground(Common::Rect r);
669 
670  const Common::String &getThemeName() const { return _themeName; }
671  const Common::String &getThemeId() const { return _themeId; }
672  int getGraphicsMode() const { return _graphicsMode; }
673 
674 protected:
675 
682  bool loadThemeXML(const Common::String &themeId);
683 
689  bool loadDefaultXML();
690 
695  void unloadTheme();
696 
700  void unloadExtraFont();
701 
702  const Graphics::Font *loadScalableFont(const Common::String &filename, const int pointsize, Common::String &name);
703  const Graphics::Font *loadFont(const Common::String &filename, Common::String &name);
704  Common::String genCacheFilename(const Common::String &filename) const;
705  const Graphics::Font *loadFont(const Common::String &filename, const Common::String &scalableFilename, const int pointsize, const bool makeLocalizedFont);
706 
711  void updateDirtyScreen();
712 
721  void drawDD(DrawData type, const Common::Rect &r, uint32 dynamic = 0, bool forceRestore = false);
722  void drawDDText(TextData type, TextColor color, const Common::Rect &r, const Common::U32String &text, bool restoreBg,
723  bool elipsis, Graphics::TextAlign alignH = Graphics::kTextAlignLeft,
724  TextAlignVertical alignV = kTextAlignVTop, int deltax = 0,
725  const Common::Rect &drawableTextArea = Common::Rect(0, 0, 0, 0));
726 
730  void debugWidgetPosition(const char *name, const Common::Rect &r);
731 
732 public:
734  Common::String name;
735  Common::String id;
736  Common::Path filename;
737  };
738 
742  static void listUsableThemes(Common::List<ThemeDescriptor> &list);
743 private:
744  static bool themeConfigUsable(const Common::FSNode &node, Common::String &themeName);
745  static bool themeConfigUsable(const Common::ArchiveMember &member, Common::String &themeName);
746  static bool themeConfigParseHeader(Common::String header, Common::String &themeName);
747 
748  static Common::Path getThemeFile(const Common::String &id);
749  static Common::String getThemeId(const Common::Path &filename);
750  static void listUsableThemes(const Common::FSNode &node, Common::List<ThemeDescriptor> &list, int depth = -1);
751  static void listUsableThemes(Common::Archive &archive, Common::List<ThemeDescriptor> &list);
752 
753 protected:
754  OSystem *_system;
758 
761 
764 
767 
770 
777  DrawLayer _layerToDraw;
778 
781 
784 
785  int16 _baseWidth, _baseHeight;
786  float _scaleFactor;
787  bool _needScaleRefresh = false;
788 
791 
796  WidgetDrawData *_widgets[kDrawDataMAX];
797 
799  TextDrawData *_texts[kTextDataMAX];
800 
802  TextColorData *_textColors[kTextColorMAX];
803 
808 
809  ImagesMap _bitmaps;
810  Graphics::PixelFormat _overlayFormat;
811  Graphics::PixelFormat _cursorFormat;
812 
815 
816  bool _initOk;
817  bool _themeOk;
818  bool _enabled;
819 
821  Common::String _themeId;
822  Common::Path _themeFile;
823  Common::Archive *_themeArchive;
824  Common::SearchSet _themeFiles;
825 
826  bool _useCursor;
827  int _cursorHotspotX, _cursorHotspotY;
828  uint32 _cursorTransparent;
829  byte *_cursor;
830  uint _cursorWidth, _cursorHeight;
831 
832  enum {
833  MAX_CURS_COLORS = 255
834  };
835  byte _cursorPal[3 * MAX_CURS_COLORS];
836  byte _cursorPalSize;
837 
838  Common::Rect _clip;
839 };
840 
841 } // End of namespace GUI.
842 
843 #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:818
Definition: str.h:59
Indicates that the text should not be drawn inverted.
Definition: ThemeEngine.h:260
Definition: VectorRenderer.h:51
Definition: font.h:83
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:628
AutoScaleMode
AlphaBitmap scale mode selector.
Definition: ThemeEngine.h:304
Dimming unused areas.
Definition: ThemeEngine.h:299
Definition: ThemeEngine.h:733
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:763
Definition: rect.h:524
Definition: path.h:52
bool _themeOk
Theme data successfully loaded.
Definition: ThemeEngine.h:817
Common::Array< LangExtraFont > _langExtraFonts
Definition: ThemeEngine.h:807
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:820
Definition: VectorRenderer.h:139
Definition: ThemeEval.h:37
Definition: printman.h:30
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:816
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:760
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:330
Common::List< Common::Rect > _dirtyScreen
Definition: ThemeEngine.h:814
static const char *const kImageDelButton
Delete characters in the predictive dialog.
Definition: ThemeEngine.h:317
const Graphics::Font * _font
Definition: ThemeEngine.h:790
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:144
DrawLayer _layerToDraw
Definition: ThemeEngine.h:777
Graphics::ManagedSurface _screen
Definition: ThemeEngine.h:766
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:783
int _bytesPerPixel
Definition: ThemeEngine.h:780
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:769
Definition: system.h:164
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:757
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