[Scummvm-cvs-logs] SF.net SVN: scummvm: [25432] scummvm/trunk/gui

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Fri Feb 9 00:25:09 CET 2007


Revision: 25432
          http://scummvm.svn.sourceforge.net/scummvm/?rev=25432&view=rev
Author:   lordhoto
Date:     2007-02-08 15:25:07 -0800 (Thu, 08 Feb 2007)

Log Message:
-----------
Moved definition of ThemeClassic and ThemeModern to their own files.

Modified Paths:
--------------
    scummvm/trunk/gui/ThemeClassic.cpp
    scummvm/trunk/gui/ThemeModern.cpp
    scummvm/trunk/gui/newgui.cpp
    scummvm/trunk/gui/newgui.h
    scummvm/trunk/gui/theme.h

Added Paths:
-----------
    scummvm/trunk/gui/ThemeClassic.h
    scummvm/trunk/gui/ThemeModern.h

Modified: scummvm/trunk/gui/ThemeClassic.cpp
===================================================================
--- scummvm/trunk/gui/ThemeClassic.cpp	2007-02-08 22:54:09 UTC (rev 25431)
+++ scummvm/trunk/gui/ThemeClassic.cpp	2007-02-08 23:25:07 UTC (rev 25432)
@@ -19,7 +19,7 @@
  * $Id$
  */
 
-#include "gui/theme.h"
+#include "gui/ThemeClassic.h"
 #include "gui/eval.h"
 
 namespace GUI {

Added: scummvm/trunk/gui/ThemeClassic.h
===================================================================
--- scummvm/trunk/gui/ThemeClassic.h	                        (rev 0)
+++ scummvm/trunk/gui/ThemeClassic.h	2007-02-08 23:25:07 UTC (rev 25432)
@@ -0,0 +1,124 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef GUI_THEMECLASSIC_H
+#define GUI_THEMECLASSIC_H
+
+#include "gui/theme.h"
+
+namespace GUI {
+
+// enable this to disable transparency support for the classic theme
+//#define CT_NO_TRANSPARENCY
+
+class ThemeClassic : public Theme {
+public:
+	ThemeClassic(OSystem *system, const Common::String &config = "classic", const Common::ConfigFile *cfg = 0);
+	virtual ~ThemeClassic();
+
+	bool init();
+	void deinit();
+
+	void refresh();
+
+	void enable();
+	void disable();
+
+	void openDialog(bool topDialog);
+	void closeDialog();
+
+	void clearAll();
+	void drawAll();
+	
+	void resetDrawArea();
+
+	const Graphics::Font *getFont(FontStyle font) const { return _font; }
+	int getFontHeight(FontStyle font = kFontStyleBold) const { if (_initOk) return _font->getFontHeight(); return 0; }
+	int getStringWidth(const Common::String &str, FontStyle font) const { if (_initOk) return _font->getStringWidth(str); return 0; }
+	int getCharWidth(byte c, FontStyle font) const { if (_initOk) return _font->getCharWidth(c); return 0; }
+
+	void drawDialogBackground(const Common::Rect &r, uint16 hints, State state);
+	void drawText(const Common::Rect &r, const Common::String &str, State state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font);
+	void drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, State state);
+
+	void drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background, State state);
+	void drawButton(const Common::Rect &r, const Common::String &str, State state, uint16 hints);
+	void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, State state, int alpha, bool themeTrans);
+	void drawSlider(const Common::Rect &r, int width, State state);
+	void drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, State state);
+	void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, int titleVPad, State state);
+	void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState, State state);
+	void drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, State state, TextAlign align);
+	void drawCaret(const Common::Rect &r, bool erase, State state);
+	void drawLineSeparator(const Common::Rect &r, State state);
+	void restoreBackground(Common::Rect r, bool special = false);
+	bool addDirtyRect(Common::Rect r, bool save = false, bool special = false);
+
+	int getTabSpacing() const;
+	int getTabPadding() const;
+
+private:
+	void box(int x, int y, int width, int height, OverlayColor colorA, OverlayColor colorB, bool skipLastRow = false);
+	void box(int x, int y, int width, int height);
+
+	OverlayColor getColor(State state);
+
+	OSystem *_system;
+	Graphics::Surface _screen;
+
+#ifndef CT_NO_TRANSPARENCY
+	struct DialogState {
+		Graphics::Surface screen;
+	} *_dialog;
+
+	void blendScreenToDialog();
+#endif
+	bool _enableBlending;
+
+	bool _forceRedraw;
+	bool _initOk;
+	bool _enabled;
+
+	Common::String _fontName;
+	const Graphics::Font *_font;
+	OverlayColor _color, _shadowcolor;
+	OverlayColor _bgcolor;
+	OverlayColor _textcolor;
+	OverlayColor _textcolorhi;
+
+	enum {
+		kColor = 0,
+		kShadowColor = 1,
+		kBGColor = 2,
+		kTextColor = 3,
+		kTextColorHi = 4,
+		kMaxColors = 5
+	};
+	uint8 _colors[kMaxColors][3];
+
+	void setupConfig();
+	bool loadConfig();
+};
+
+} // end of namespace GUI
+
+#endif
+


Property changes on: scummvm/trunk/gui/ThemeClassic.h
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: scummvm/trunk/gui/ThemeModern.cpp
===================================================================
--- scummvm/trunk/gui/ThemeModern.cpp	2007-02-08 22:54:09 UTC (rev 25431)
+++ scummvm/trunk/gui/ThemeModern.cpp	2007-02-08 23:25:07 UTC (rev 25432)
@@ -21,7 +21,7 @@
 
 #ifndef DISABLE_FANCY_THEMES
 
-#include "gui/theme.h"
+#include "gui/ThemeModern.h"
 #include "gui/eval.h"
 
 #include "graphics/imageman.h"

Added: scummvm/trunk/gui/ThemeModern.h
===================================================================
--- scummvm/trunk/gui/ThemeModern.h	                        (rev 0)
+++ scummvm/trunk/gui/ThemeModern.h	2007-02-08 23:25:07 UTC (rev 25432)
@@ -0,0 +1,337 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef GUI_THEMEMODERN_H
+#define GUI_THEMEMODERN_H
+
+#ifndef DISABLE_FANCY_THEMES
+
+#include "gui/theme.h"
+
+namespace GUI {
+
+class ThemeModern : public Theme {
+public:
+	ThemeModern(OSystem *system, const Common::String &stylefile, const Common::ConfigFile *cfg = 0);
+	virtual ~ThemeModern();
+
+	bool init();
+	void deinit();
+
+	void refresh();
+
+	bool ownCursor() { return _useCursor; }
+
+	void enable();
+	void disable();
+	
+	void openDialog(bool topDialog);
+	void closeDialog();
+
+	void clearAll();
+	void drawAll();
+	
+	void setDrawArea(const Common::Rect &r);
+	void resetDrawArea();
+
+	const Graphics::Font *getFont(FontStyle font = kFontStyleBold) const { return _fonts[font]; }
+	int getFontHeight(FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getFontHeight(); return 0; }
+	int getStringWidth(const Common::String &str, FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getStringWidth(str); return 0; }
+	int getCharWidth(byte c, FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getCharWidth(c); return 0; }
+
+	void drawDialogBackground(const Common::Rect &r, uint16 hints, State state);
+	void drawText(const Common::Rect &r, const Common::String &str, State state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font);
+	void drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, State state);
+
+	void drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background, State state);
+	void drawButton(const Common::Rect &r, const Common::String &str, State state, uint16 hints);
+	void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, State state, int alpha, bool themeTrans);
+	void drawSlider(const Common::Rect &r, int width, State state);
+	void drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, State state);
+	void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, int titleVPad, State state);
+	void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState, State state);
+	void drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, State state, TextAlign align);
+	void drawCaret(const Common::Rect &r, bool erase, State state);
+	void drawLineSeparator(const Common::Rect &r, State state);
+
+	void restoreBackground(Common::Rect r, bool special = false);
+	bool addDirtyRect(Common::Rect r, bool backup = false, bool special = false);
+
+	int getTabSpacing() const;
+	int getTabPadding() const;
+
+	bool supportsImages() const { return true; }
+	const Graphics::Surface *getImageSurface(const kThemeImages n) const { return n == kImageLogo ? _images[kThemeLogo] : 0; }
+private:
+	void colorFade(const Common::Rect &r, OverlayColor start, OverlayColor end, uint factor = 1);
+	void drawRect(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
+				const Graphics::Surface *left, const Graphics::Surface *fill, int alpha, bool skipLastRow = false);
+	void drawRectMasked(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
+						const Graphics::Surface *left, const Graphics::Surface *fill, int alpha,
+						OverlayColor start, OverlayColor end, uint factor = 1, bool skipLastRow = false, bool skipTopRow = false);
+	void drawSurface(const Common::Rect &r, const Graphics::Surface *surf, bool upDown, bool leftRight, int alpha);
+	void drawSurfaceMasked(const Common::Rect &r, const Graphics::Surface *surf, bool upDown, bool leftRight, int alpha,
+							OverlayColor start, OverlayColor end, uint factor = 1);
+
+	enum ShadowStyles {
+		kShadowFull = 0,
+		kShadowSmall = 1,
+		kShadowButton = 2,
+		kShadowEmboss = 3,
+		kShadowPopUp = 4
+	};
+
+	Common::Rect shadowRect(const Common::Rect &r, uint32 shadowStyle);
+	void drawShadow(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
+					const Graphics::Surface *left, const Graphics::Surface *fill, uint32 shadowStyle, bool skipLastRow = false,
+					bool skipTopRow = false);
+	void drawShadowRect(const Common::Rect &r, const Common::Rect &area, const Graphics::Surface *corner,
+						const Graphics::Surface *top, const Graphics::Surface *left, const Graphics::Surface *fill,
+						int alpha, bool skipLastRow = false, bool skipTopRow = false);
+
+	int _shadowLeftWidth, _shadowRightWidth;
+	int _shadowTopHeight, _shadowBottomHeight;
+
+	OSystem *_system;
+	Graphics::Surface _screen;
+	Common::Rect _shadowDrawArea;
+
+	bool _initOk;
+	bool _forceRedraw;
+	bool _enabled;
+
+	int _lastUsedBitMask;
+	void resetupGuiRenderer();
+	void setupColors();
+
+	OverlayColor getColor(State state);
+
+	struct DialogState {
+		Graphics::Surface screen;
+	} *_dialog;
+
+	void setupFonts();
+	void deleteFonts();
+
+	void setupFont(const Common::String &key, const Common::String &name, FontStyle style);
+
+	const Graphics::Font *_fonts[kFontStyleMax];
+
+private:
+	void processExtraValues();
+
+	enum ImageHandles {
+		kDialogBkgdCorner = 0,
+		kDialogBkgdTop = 1,
+		kDialogBkgdLeft = 2,
+		kDialogBkgd = 3,
+		
+		kWidgetBkgdCorner = 4,
+		kWidgetBkgdTop = 5,
+		kWidgetBkgdLeft = 6,
+		kWidgetBkgd = 7,
+		
+		kCheckboxEmpty = 8,
+		kCheckboxChecked = 9,
+		
+		kWidgetArrow = 10,
+		
+		kTabBkgdCorner = 11,
+		kTabBkgdTop = 12,
+		kTabBkgdLeft = 13,
+		kTabBkgd = 14,
+		
+		kSliderBkgdCorner = 15,
+		kSliderBkgdTop = 16,
+		kSliderBkgdLeft = 17,
+		kSliderBkgd = 18,
+		
+		kSliderCorner = 19,
+		kSliderTop = 20,
+		kSliderLeft = 21,
+		kSlider = 22,
+		
+		kScrollbarBkgdCorner = 23,
+		kScrollbarBkgdTop = 24,
+		kScrollbarBkgdLeft = 25,
+		kScrollbarBkgd = 26,
+		
+		kScrollbarCorner = 27,
+		kScrollbarTop = 28,
+		kScrollbarLeft = 29,
+		kScrollbar = 30,
+		
+		kButtonBkgdCorner = 31,
+		kButtonBkgdTop = 32,
+		kButtonBkgdLeft = 33,
+		kButtonBkgd = 34,
+		
+		kWidgetSmallBkgdCorner = 35,
+		kWidgetSmallBkgdTop = 36,
+		kWidgetSmallBkgdLeft = 37,
+		kWidgetSmallBkgd = 38,
+
+		kThemeLogo = 39,
+
+		kPopUpWidgetBkgdCorner = 40,
+		kPopUpWidgetBkgdTop = 41,
+		kPopUpWidgetBkgdLeft = 42,
+		kPopUpWidgetBkgd = 43,
+
+		kEditTextBkgdCorner = 44,
+		kEditTextBkgdTop = 45,
+		kEditTextBkgdLeft = 46,
+		kEditTextBkgd = 47,
+
+		kGUICursor = 48,
+	
+		kImageHandlesMax
+	};
+
+private:
+	int _dimPercentValue;
+	typedef OverlayColor (ThemeModern::*InactiveDialogCallback)(OverlayColor col);	
+	InactiveDialogCallback _dialogShadingCallback;
+	
+	OverlayColor calcLuminance(OverlayColor col);
+	OverlayColor calcDimColor(OverlayColor col);
+
+	bool _useCursor;
+	void setUpCursor();
+	void createCursor();
+	int _cursorHotspotX, _cursorHotspotY;
+	int _cursorTargetScale;
+#define MAX_CURS_COLORS 255
+	byte *_cursor;
+	bool _needPaletteUpdates;
+	uint _cursorWidth, _cursorHeight;
+	byte _cursorPal[4*MAX_CURS_COLORS];
+
+private:
+	Common::String _imageHandles[kImageHandlesMax];
+	const Graphics::Surface **_images;
+	
+	enum ColorHandles {
+		kMainDialogStart = 0,
+		kMainDialogEnd = 1,
+		
+		kDialogStart = 2,
+		kDialogEnd = 3,
+		
+		kColorStateDisabled = 4,
+		kColorStateHighlight = 5,
+		kColorStateEnabled = 6,
+		kColorTransparency = 7,
+		
+		kTextInvertedBackground = 8,
+		kTextInvertedColor = 9,
+		
+		kWidgetBackgroundStart = 10,
+		kWidgetBackgroundEnd = 11,
+		kWidgetBackgroundSmallStart = 12,
+		kWidgetBackgroundSmallEnd = 13,
+		
+		kButtonBackgroundStart = 14,
+		kButtonBackgroundEnd = 15,
+		kButtonTextEnabled = 16,
+		kButtonTextDisabled = 17,
+		kButtonTextHighlight = 18,
+		
+		kSliderBackgroundStart = 19,
+		kSliderBackgroundEnd = 20,
+		kSliderStart = 21,
+		kSliderEnd = 22,
+		
+		kTabBackgroundStart = 23,
+		kTabBackgroundEnd = 24,
+		
+		kScrollbarBackgroundStart = 25,
+		kScrollbarBackgroundEnd = 26,
+		kScrollbarButtonStart = 27,
+		kScrollbarButtonEnd = 28,
+		kScrollbarSliderStart = 29,
+		kScrollbarSliderEnd = 30,
+		
+		kCaretColor = 31,
+		
+		kSliderHighStart = 32,
+		kSliderHighEnd = 33,
+		
+		kButtonBackgroundHighlightStart = 34,
+		kButtonBackgroundHighlightEnd = 35,
+		
+		kScrollbarButtonHighlightStart = 36,
+		kScrollbarButtonHighlightEnd = 37,
+		kScrollbarSliderHighlightStart = 38,
+		kScrollbarSliderHighlightEnd = 39,
+
+		kPopUpWidgetStart = 40,
+		kPopUpWidgetEnd = 41,
+		kPopUpWidgetHighlightStart = 42,
+		kPopUpWidgetHighlightEnd = 43,
+		
+		kEditTextBackgroundStart = 44,
+		kEditTextBackgroundEnd = 45,
+
+		kTabActiveStart = 46,
+		kTabActiveEnd = 47,
+		kTabInactiveStart = 48,
+		kTabInactiveEnd = 49,
+
+		kColorHandlesMax
+	};
+	
+	OverlayColor _colors[kColorHandlesMax];
+	
+	enum GradientFactors {
+		kMainDialogFactor = 0,
+		kDialogFactor = 1,
+		kDialogSpecialFactor = 2,
+		
+		kWidgetSmallFactor = 3,
+		kWidgetFactor = 4,
+		
+		kButtonFactor = 5,
+		
+		kSliderFactor = 6,
+		kSliderBackground = 7,
+		
+		kTabFactor = 7,
+		
+		kScrollbarFactor = 8,
+		kScrollbarBkgdFactor = 9,
+
+		kPopUpWidgetFactor = 10,
+		
+		kEditTextFactor = 11,
+		
+		kMaxGradientFactors
+	};
+	
+	uint _gradientFactors[kMaxGradientFactors];
+};
+
+} // end of namespace GUI
+
+#endif
+
+#endif
+


Property changes on: scummvm/trunk/gui/ThemeModern.h
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: scummvm/trunk/gui/newgui.cpp
===================================================================
--- scummvm/trunk/gui/newgui.cpp	2007-02-08 22:54:09 UTC (rev 25431)
+++ scummvm/trunk/gui/newgui.cpp	2007-02-08 23:25:07 UTC (rev 25432)
@@ -27,6 +27,8 @@
 #include "gui/newgui.h"
 #include "gui/dialog.h"
 #include "gui/eval.h"
+#include "gui/ThemeModern.h"
+#include "gui/ThemeClassic.h"
 
 #include "common/config-manager.h"
 

Modified: scummvm/trunk/gui/newgui.h
===================================================================
--- scummvm/trunk/gui/newgui.h	2007-02-08 22:54:09 UTC (rev 25431)
+++ scummvm/trunk/gui/newgui.h	2007-02-08 23:25:07 UTC (rev 25432)
@@ -28,6 +28,7 @@
 #include "common/str.h"
 #include "graphics/fontman.h"
 #include "gui/theme.h"
+#include "gui/widget.h"
 
 class OSystem;
 

Modified: scummvm/trunk/gui/theme.h
===================================================================
--- scummvm/trunk/gui/theme.h	2007-02-08 22:54:09 UTC (rev 25431)
+++ scummvm/trunk/gui/theme.h	2007-02-08 23:25:07 UTC (rev 25432)
@@ -32,8 +32,6 @@
 #include "graphics/surface.h"
 #include "graphics/fontman.h"
 
-#include "gui/widget.h"
-
 #define THEME_VERSION 19
 
 namespace GUI {
@@ -247,402 +245,6 @@
 	static const char *_defaultConfigINI;
 	int _loadedThemeX, _loadedThemeY;
 };
-
-// enable this to disable transparency support for the classic theme
-//#define CT_NO_TRANSPARENCY
-
-class ThemeClassic : public Theme {
-public:
-	ThemeClassic(OSystem *system, const Common::String &config = "classic", const Common::ConfigFile *cfg = 0);
-	virtual ~ThemeClassic();
-
-	bool init();
-	void deinit();
-
-	void refresh();
-
-	void enable();
-	void disable();
-
-	void openDialog(bool topDialog);
-	void closeDialog();
-
-	void clearAll();
-	void drawAll();
-	
-	void resetDrawArea();
-
-	const Graphics::Font *getFont(FontStyle font) const { return _font; }
-	int getFontHeight(FontStyle font = kFontStyleBold) const { if (_initOk) return _font->getFontHeight(); return 0; }
-	int getStringWidth(const Common::String &str, FontStyle font) const { if (_initOk) return _font->getStringWidth(str); return 0; }
-	int getCharWidth(byte c, FontStyle font) const { if (_initOk) return _font->getCharWidth(c); return 0; }
-
-	void drawDialogBackground(const Common::Rect &r, uint16 hints, State state);
-	void drawText(const Common::Rect &r, const Common::String &str, State state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font);
-	void drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, State state);
-
-	void drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background, State state);
-	void drawButton(const Common::Rect &r, const Common::String &str, State state, uint16 hints);
-	void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, State state, int alpha, bool themeTrans);
-	void drawSlider(const Common::Rect &r, int width, State state);
-	void drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, State state);
-	void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, int titleVPad, State state);
-	void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState, State state);
-	void drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, State state, TextAlign align);
-	void drawCaret(const Common::Rect &r, bool erase, State state);
-	void drawLineSeparator(const Common::Rect &r, State state);
-	void restoreBackground(Common::Rect r, bool special = false);
-	bool addDirtyRect(Common::Rect r, bool save = false, bool special = false);
-
-	int getTabSpacing() const;
-	int getTabPadding() const;
-
-private:
-	void box(int x, int y, int width, int height, OverlayColor colorA, OverlayColor colorB, bool skipLastRow = false);
-	void box(int x, int y, int width, int height);
-
-	OverlayColor getColor(State state);
-
-	OSystem *_system;
-	Graphics::Surface _screen;
-
-#ifndef CT_NO_TRANSPARENCY
-	struct DialogState {
-		Graphics::Surface screen;
-	} *_dialog;
-
-	void blendScreenToDialog();
-#endif
-	bool _enableBlending;
-
-	bool _forceRedraw;
-	bool _initOk;
-	bool _enabled;
-
-	Common::String _fontName;
-	const Graphics::Font *_font;
-	OverlayColor _color, _shadowcolor;
-	OverlayColor _bgcolor;
-	OverlayColor _textcolor;
-	OverlayColor _textcolorhi;
-
-	enum {
-		kColor = 0,
-		kShadowColor = 1,
-		kBGColor = 2,
-		kTextColor = 3,
-		kTextColorHi = 4,
-		kMaxColors = 5
-	};
-	uint8 _colors[kMaxColors][3];
-
-	void setupConfig();
-	bool loadConfig();
-};
-
-#ifndef DISABLE_FANCY_THEMES
-
-class ThemeModern : public Theme {
-public:
-	ThemeModern(OSystem *system, const Common::String &stylefile, const Common::ConfigFile *cfg = 0);
-	virtual ~ThemeModern();
-
-	bool init();
-	void deinit();
-
-	void refresh();
-
-	bool ownCursor() { return _useCursor; }
-
-	void enable();
-	void disable();
-	
-	void openDialog(bool topDialog);
-	void closeDialog();
-
-	void clearAll();
-	void drawAll();
-	
-	void setDrawArea(const Common::Rect &r);
-	void resetDrawArea();
-
-	const Graphics::Font *getFont(FontStyle font = kFontStyleBold) const { return _fonts[font]; }
-	int getFontHeight(FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getFontHeight(); return 0; }
-	int getStringWidth(const Common::String &str, FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getStringWidth(str); return 0; }
-	int getCharWidth(byte c, FontStyle font = kFontStyleBold) const { if (_fonts[font]) return _fonts[font]->getCharWidth(c); return 0; }
-
-	void drawDialogBackground(const Common::Rect &r, uint16 hints, State state);
-	void drawText(const Common::Rect &r, const Common::String &str, State state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font);
-	void drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, State state);
-
-	void drawWidgetBackground(const Common::Rect &r, uint16 hints, WidgetBackground background, State state);
-	void drawButton(const Common::Rect &r, const Common::String &str, State state, uint16 hints);
-	void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, State state, int alpha, bool themeTrans);
-	void drawSlider(const Common::Rect &r, int width, State state);
-	void drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, State state);
-	void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, int titleVPad, State state);
-	void drawScrollbar(const Common::Rect &r, int sliderY, int sliderHeight, ScrollbarState, State state);
-	void drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, State state, TextAlign align);
-	void drawCaret(const Common::Rect &r, bool erase, State state);
-	void drawLineSeparator(const Common::Rect &r, State state);
-
-	void restoreBackground(Common::Rect r, bool special = false);
-	bool addDirtyRect(Common::Rect r, bool backup = false, bool special = false);
-
-	int getTabSpacing() const;
-	int getTabPadding() const;
-
-	bool supportsImages() const { return true; }
-	const Graphics::Surface *getImageSurface(const kThemeImages n) const { return n == kImageLogo ? _images[kThemeLogo] : 0; }
-private:
-	void colorFade(const Common::Rect &r, OverlayColor start, OverlayColor end, uint factor = 1);
-	void drawRect(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
-				const Graphics::Surface *left, const Graphics::Surface *fill, int alpha, bool skipLastRow = false);
-	void drawRectMasked(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
-						const Graphics::Surface *left, const Graphics::Surface *fill, int alpha,
-						OverlayColor start, OverlayColor end, uint factor = 1, bool skipLastRow = false, bool skipTopRow = false);
-	void drawSurface(const Common::Rect &r, const Graphics::Surface *surf, bool upDown, bool leftRight, int alpha);
-	void drawSurfaceMasked(const Common::Rect &r, const Graphics::Surface *surf, bool upDown, bool leftRight, int alpha,
-							OverlayColor start, OverlayColor end, uint factor = 1);
-
-	enum ShadowStyles {
-		kShadowFull = 0,
-		kShadowSmall = 1,
-		kShadowButton = 2,
-		kShadowEmboss = 3,
-		kShadowPopUp = 4
-	};
-
-	Common::Rect shadowRect(const Common::Rect &r, uint32 shadowStyle);
-	void drawShadow(const Common::Rect &r, const Graphics::Surface *corner, const Graphics::Surface *top,
-					const Graphics::Surface *left, const Graphics::Surface *fill, uint32 shadowStyle, bool skipLastRow = false,
-					bool skipTopRow = false);
-	void drawShadowRect(const Common::Rect &r, const Common::Rect &area, const Graphics::Surface *corner,
-						const Graphics::Surface *top, const Graphics::Surface *left, const Graphics::Surface *fill,
-						int alpha, bool skipLastRow = false, bool skipTopRow = false);
-
-	int _shadowLeftWidth, _shadowRightWidth;
-	int _shadowTopHeight, _shadowBottomHeight;
-
-	OSystem *_system;
-	Graphics::Surface _screen;
-	Common::Rect _shadowDrawArea;
-
-	bool _initOk;
-	bool _forceRedraw;
-	bool _enabled;
-
-	int _lastUsedBitMask;
-	void resetupGuiRenderer();
-	void setupColors();
-
-	OverlayColor getColor(State state);
-
-	struct DialogState {
-		Graphics::Surface screen;
-	} *_dialog;
-
-	void setupFonts();
-	void deleteFonts();
-
-	void setupFont(const Common::String &key, const Common::String &name, FontStyle style);
-
-	const Graphics::Font *_fonts[kFontStyleMax];
-
-private:
-	void processExtraValues();
-
-	enum ImageHandles {
-		kDialogBkgdCorner = 0,
-		kDialogBkgdTop = 1,
-		kDialogBkgdLeft = 2,
-		kDialogBkgd = 3,
-		
-		kWidgetBkgdCorner = 4,
-		kWidgetBkgdTop = 5,
-		kWidgetBkgdLeft = 6,
-		kWidgetBkgd = 7,
-		
-		kCheckboxEmpty = 8,
-		kCheckboxChecked = 9,
-		
-		kWidgetArrow = 10,
-		
-		kTabBkgdCorner = 11,
-		kTabBkgdTop = 12,
-		kTabBkgdLeft = 13,
-		kTabBkgd = 14,
-		
-		kSliderBkgdCorner = 15,
-		kSliderBkgdTop = 16,
-		kSliderBkgdLeft = 17,
-		kSliderBkgd = 18,
-		
-		kSliderCorner = 19,
-		kSliderTop = 20,
-		kSliderLeft = 21,
-		kSlider = 22,
-		
-		kScrollbarBkgdCorner = 23,
-		kScrollbarBkgdTop = 24,
-		kScrollbarBkgdLeft = 25,
-		kScrollbarBkgd = 26,
-		
-		kScrollbarCorner = 27,
-		kScrollbarTop = 28,
-		kScrollbarLeft = 29,
-		kScrollbar = 30,
-		
-		kButtonBkgdCorner = 31,
-		kButtonBkgdTop = 32,
-		kButtonBkgdLeft = 33,
-		kButtonBkgd = 34,
-		
-		kWidgetSmallBkgdCorner = 35,
-		kWidgetSmallBkgdTop = 36,
-		kWidgetSmallBkgdLeft = 37,
-		kWidgetSmallBkgd = 38,
-
-		kThemeLogo = 39,
-
-		kPopUpWidgetBkgdCorner = 40,
-		kPopUpWidgetBkgdTop = 41,
-		kPopUpWidgetBkgdLeft = 42,
-		kPopUpWidgetBkgd = 43,
-
-		kEditTextBkgdCorner = 44,
-		kEditTextBkgdTop = 45,
-		kEditTextBkgdLeft = 46,
-		kEditTextBkgd = 47,
-
-		kGUICursor = 48,
-	
-		kImageHandlesMax
-	};
-
-private:
-	int _dimPercentValue;
-	typedef OverlayColor (ThemeModern::*InactiveDialogCallback)(OverlayColor col);	
-	InactiveDialogCallback _dialogShadingCallback;
-	
-	OverlayColor calcLuminance(OverlayColor col);
-	OverlayColor calcDimColor(OverlayColor col);
-
-	bool _useCursor;
-	void setUpCursor();
-	void createCursor();
-	int _cursorHotspotX, _cursorHotspotY;
-	int _cursorTargetScale;
-#define MAX_CURS_COLORS 255
-	byte *_cursor;
-	bool _needPaletteUpdates;
-	uint _cursorWidth, _cursorHeight;
-	byte _cursorPal[4*MAX_CURS_COLORS];
-
-private:
-	Common::String _imageHandles[kImageHandlesMax];
-	const Graphics::Surface **_images;
-	
-	enum ColorHandles {
-		kMainDialogStart = 0,
-		kMainDialogEnd = 1,
-		
-		kDialogStart = 2,
-		kDialogEnd = 3,
-		
-		kColorStateDisabled = 4,
-		kColorStateHighlight = 5,
-		kColorStateEnabled = 6,
-		kColorTransparency = 7,
-		
-		kTextInvertedBackground = 8,
-		kTextInvertedColor = 9,
-		
-		kWidgetBackgroundStart = 10,
-		kWidgetBackgroundEnd = 11,
-		kWidgetBackgroundSmallStart = 12,
-		kWidgetBackgroundSmallEnd = 13,
-		
-		kButtonBackgroundStart = 14,
-		kButtonBackgroundEnd = 15,
-		kButtonTextEnabled = 16,
-		kButtonTextDisabled = 17,
-		kButtonTextHighlight = 18,
-		
-		kSliderBackgroundStart = 19,
-		kSliderBackgroundEnd = 20,
-		kSliderStart = 21,
-		kSliderEnd = 22,
-		
-		kTabBackgroundStart = 23,
-		kTabBackgroundEnd = 24,
-		
-		kScrollbarBackgroundStart = 25,
-		kScrollbarBackgroundEnd = 26,
-		kScrollbarButtonStart = 27,
-		kScrollbarButtonEnd = 28,
-		kScrollbarSliderStart = 29,
-		kScrollbarSliderEnd = 30,
-		
-		kCaretColor = 31,
-		
-		kSliderHighStart = 32,
-		kSliderHighEnd = 33,
-		
-		kButtonBackgroundHighlightStart = 34,
-		kButtonBackgroundHighlightEnd = 35,
-		
-		kScrollbarButtonHighlightStart = 36,
-		kScrollbarButtonHighlightEnd = 37,
-		kScrollbarSliderHighlightStart = 38,
-		kScrollbarSliderHighlightEnd = 39,
-
-		kPopUpWidgetStart = 40,
-		kPopUpWidgetEnd = 41,
-		kPopUpWidgetHighlightStart = 42,
-		kPopUpWidgetHighlightEnd = 43,
-		
-		kEditTextBackgroundStart = 44,
-		kEditTextBackgroundEnd = 45,
-
-		kTabActiveStart = 46,
-		kTabActiveEnd = 47,
-		kTabInactiveStart = 48,
-		kTabInactiveEnd = 49,
-
-		kColorHandlesMax
-	};
-	
-	OverlayColor _colors[kColorHandlesMax];
-	
-	enum GradientFactors {
-		kMainDialogFactor = 0,
-		kDialogFactor = 1,
-		kDialogSpecialFactor = 2,
-		
-		kWidgetSmallFactor = 3,
-		kWidgetFactor = 4,
-		
-		kButtonFactor = 5,
-		
-		kSliderFactor = 6,
-		kSliderBackground = 7,
-		
-		kTabFactor = 7,
-		
-		kScrollbarFactor = 8,
-		kScrollbarBkgdFactor = 9,
-
-		kPopUpWidgetFactor = 10,
-		
-		kEditTextFactor = 11,
-		
-		kMaxGradientFactors
-	};
-	
-	uint _gradientFactors[kMaxGradientFactors];
-};
-#endif // DISABLE_FANCY_THEMES
 } // end of namespace GUI
 
 #endif // GUI_THEME_H


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list