namespace gui\r
{\r
\r
-GUISkin::GUISkin(EGUI_SKIN_TYPE type, video::IVideoDriver *driver) :\r
- SpriteBank(0), Driver(driver), Type(type)\r
+GUISkin::GUISkin(EGUI_SKIN_TYPE type, video::IVideoDriver* driver)\r
+: SpriteBank(0), Driver(driver), Type(type)\r
{\r
-#ifdef _DEBUG\r
+ #ifdef _DEBUG\r
setDebugName("GUISkin");\r
-#endif\r
-\r
- if ((Type == EGST_WINDOWS_CLASSIC) || (Type == EGST_WINDOWS_METALLIC)) {\r
- Colors[EGDC_3D_DARK_SHADOW] = video::SColor(101, 50, 50, 50);\r
- Colors[EGDC_3D_SHADOW] = video::SColor(101, 130, 130, 130);\r
- Colors[EGDC_3D_FACE] = video::SColor(101, 210, 210, 210);\r
- Colors[EGDC_3D_HIGH_LIGHT] = video::SColor(101, 255, 255, 255);\r
- Colors[EGDC_3D_LIGHT] = video::SColor(101, 210, 210, 210);\r
- Colors[EGDC_ACTIVE_BORDER] = video::SColor(101, 16, 14, 115);\r
- Colors[EGDC_ACTIVE_CAPTION] = video::SColor(255, 255, 255, 255);\r
- Colors[EGDC_APP_WORKSPACE] = video::SColor(101, 100, 100, 100);\r
- Colors[EGDC_BUTTON_TEXT] = video::SColor(240, 10, 10, 10);\r
- Colors[EGDC_GRAY_TEXT] = video::SColor(240, 130, 130, 130);\r
- Colors[EGDC_HIGH_LIGHT] = video::SColor(101, 8, 36, 107);\r
- Colors[EGDC_HIGH_LIGHT_TEXT] = video::SColor(240, 255, 255, 255);\r
- Colors[EGDC_INACTIVE_BORDER] = video::SColor(101, 165, 165, 165);\r
- Colors[EGDC_INACTIVE_CAPTION] = video::SColor(255, 30, 30, 30);\r
- Colors[EGDC_TOOLTIP] = video::SColor(200, 0, 0, 0);\r
- Colors[EGDC_TOOLTIP_BACKGROUND] = video::SColor(200, 255, 255, 225);\r
- Colors[EGDC_SCROLLBAR] = video::SColor(101, 230, 230, 230);\r
- Colors[EGDC_WINDOW] = video::SColor(101, 255, 255, 255);\r
- Colors[EGDC_WINDOW_SYMBOL] = video::SColor(200, 10, 10, 10);\r
- Colors[EGDC_ICON] = video::SColor(200, 255, 255, 255);\r
- Colors[EGDC_ICON_HIGH_LIGHT] = video::SColor(200, 8, 36, 107);\r
- Colors[EGDC_GRAY_WINDOW_SYMBOL] = video::SColor(240, 100, 100, 100);\r
- Colors[EGDC_EDITABLE] = video::SColor(255, 255, 255, 255);\r
- Colors[EGDC_GRAY_EDITABLE] = video::SColor(255, 120, 120, 120);\r
- Colors[EGDC_FOCUSED_EDITABLE] = video::SColor(255, 240, 240, 255);\r
+ #endif\r
+\r
+ if ((Type == EGST_WINDOWS_CLASSIC) || (Type == EGST_WINDOWS_METALLIC))\r
+ {\r
+ Colors[EGDC_3D_DARK_SHADOW] = video::SColor(101,50,50,50);\r
+ Colors[EGDC_3D_SHADOW] = video::SColor(101,130,130,130);\r
+ Colors[EGDC_3D_FACE] = video::SColor(220,100,100,100);\r
+ Colors[EGDC_3D_HIGH_LIGHT] = video::SColor(101,255,255,255);\r
+ Colors[EGDC_3D_LIGHT] = video::SColor(101,210,210,210);\r
+ Colors[EGDC_ACTIVE_BORDER] = video::SColor(101,16,14,115);\r
+ Colors[EGDC_ACTIVE_CAPTION] = video::SColor(255,255,255,255);\r
+ Colors[EGDC_APP_WORKSPACE] = video::SColor(101,100,100,100);\r
+ Colors[EGDC_BUTTON_TEXT] = video::SColor(240,10,10,10);\r
+ Colors[EGDC_GRAY_TEXT] = video::SColor(240,130,130,130);\r
+ Colors[EGDC_HIGH_LIGHT] = video::SColor(101,8,36,107);\r
+ Colors[EGDC_HIGH_LIGHT_TEXT] = video::SColor(240,255,255,255);\r
+ Colors[EGDC_INACTIVE_BORDER] = video::SColor(101,165,165,165);\r
+ Colors[EGDC_INACTIVE_CAPTION] = video::SColor(255,30,30,30);\r
+ Colors[EGDC_TOOLTIP] = video::SColor(200,0,0,0);\r
+ Colors[EGDC_TOOLTIP_BACKGROUND] = video::SColor(200,255,255,225);\r
+ Colors[EGDC_SCROLLBAR] = video::SColor(101,230,230,230);\r
+ Colors[EGDC_WINDOW] = video::SColor(101,255,255,255);\r
+ Colors[EGDC_WINDOW_SYMBOL] = video::SColor(200,10,10,10);\r
+ Colors[EGDC_ICON] = video::SColor(200,255,255,255);\r
+ Colors[EGDC_ICON_HIGH_LIGHT] = video::SColor(200,8,36,107);\r
+ Colors[EGDC_GRAY_WINDOW_SYMBOL] = video::SColor(240,100,100,100);\r
+ Colors[EGDC_EDITABLE] = video::SColor(255,255,255,255);\r
+ Colors[EGDC_GRAY_EDITABLE] = video::SColor(255,120,120,120);\r
+ Colors[EGDC_FOCUSED_EDITABLE] = video::SColor(255,240,240,255);\r
+\r
\r
Sizes[EGDS_SCROLLBAR_SIZE] = 14;\r
Sizes[EGDS_MENU_HEIGHT] = 30;\r
\r
Sizes[EGDS_TITLEBARTEXT_DISTANCE_X] = 2;\r
Sizes[EGDS_TITLEBARTEXT_DISTANCE_Y] = 0;\r
- } else {\r
- // 0x80a6a8af\r
- Colors[EGDC_3D_DARK_SHADOW] = 0x60767982;\r
- // Colors[EGDC_3D_FACE] = 0xc0c9ccd4; // tab\r
- // background\r
- Colors[EGDC_3D_FACE] = 0xc0cbd2d9; // tab background\r
- Colors[EGDC_3D_SHADOW] =\r
- 0x50e4e8f1; // tab background, and left-top highlight\r
- Colors[EGDC_3D_HIGH_LIGHT] = 0x40c7ccdc;\r
- Colors[EGDC_3D_LIGHT] = 0x802e313a;\r
- Colors[EGDC_ACTIVE_BORDER] = 0x80404040; // window title\r
- Colors[EGDC_ACTIVE_CAPTION] = 0xffd0d0d0;\r
- Colors[EGDC_APP_WORKSPACE] = 0xc0646464; // unused\r
- Colors[EGDC_BUTTON_TEXT] = 0xd0161616;\r
- Colors[EGDC_GRAY_TEXT] = 0x3c141414;\r
- Colors[EGDC_HIGH_LIGHT] = 0x6c606060;\r
- Colors[EGDC_HIGH_LIGHT_TEXT] = 0xd0e0e0e0;\r
- Colors[EGDC_INACTIVE_BORDER] = 0xf0a5a5a5;\r
- Colors[EGDC_INACTIVE_CAPTION] = 0xffd2d2d2;\r
- Colors[EGDC_TOOLTIP] = 0xf00f2033;\r
- Colors[EGDC_TOOLTIP_BACKGROUND] = 0xc0cbd2d9;\r
- Colors[EGDC_SCROLLBAR] = 0xf0e0e0e0;\r
- Colors[EGDC_WINDOW] = 0xf0f0f0f0;\r
- Colors[EGDC_WINDOW_SYMBOL] = 0xd0161616;\r
- Colors[EGDC_ICON] = 0xd0161616;\r
- Colors[EGDC_ICON_HIGH_LIGHT] = 0xd0606060;\r
- Colors[EGDC_GRAY_WINDOW_SYMBOL] = 0x3c101010;\r
- Colors[EGDC_EDITABLE] = 0xf0ffffff;\r
- Colors[EGDC_GRAY_EDITABLE] = 0xf0cccccc;\r
- Colors[EGDC_FOCUSED_EDITABLE] = 0xf0fffff0;\r
+ }\r
+ else\r
+ {\r
+ //0x80a6a8af\r
+ Colors[EGDC_3D_DARK_SHADOW] = 0x60767982;\r
+ //Colors[EGDC_3D_FACE] = 0xc0c9ccd4; // tab background\r
+ Colors[EGDC_3D_FACE] = 0xc0cbd2d9; // tab background\r
+ Colors[EGDC_3D_SHADOW] = 0x50e4e8f1; // tab background, and left-top highlight\r
+ Colors[EGDC_3D_HIGH_LIGHT] = 0x40c7ccdc;\r
+ Colors[EGDC_3D_LIGHT] = 0x802e313a;\r
+ Colors[EGDC_ACTIVE_BORDER] = 0x80404040; // window title\r
+ Colors[EGDC_ACTIVE_CAPTION] = 0xffd0d0d0;\r
+ Colors[EGDC_APP_WORKSPACE] = 0xc0646464; // unused\r
+ Colors[EGDC_BUTTON_TEXT] = 0xd0161616;\r
+ Colors[EGDC_GRAY_TEXT] = 0x3c141414;\r
+ Colors[EGDC_HIGH_LIGHT] = 0x6c606060;\r
+ Colors[EGDC_HIGH_LIGHT_TEXT] = 0xd0e0e0e0;\r
+ Colors[EGDC_INACTIVE_BORDER] = 0xf0a5a5a5;\r
+ Colors[EGDC_INACTIVE_CAPTION] = 0xffd2d2d2;\r
+ Colors[EGDC_TOOLTIP] = 0xf00f2033;\r
+ Colors[EGDC_TOOLTIP_BACKGROUND] = 0xc0cbd2d9;\r
+ Colors[EGDC_SCROLLBAR] = 0xf0e0e0e0;\r
+ Colors[EGDC_WINDOW] = 0xf0f0f0f0;\r
+ Colors[EGDC_WINDOW_SYMBOL] = 0xd0161616;\r
+ Colors[EGDC_ICON] = 0xd0161616;\r
+ Colors[EGDC_ICON_HIGH_LIGHT] = 0xd0606060;\r
+ Colors[EGDC_GRAY_WINDOW_SYMBOL] = 0x3c101010;\r
+ Colors[EGDC_EDITABLE] = 0xf0ffffff;\r
+ Colors[EGDC_GRAY_EDITABLE] = 0xf0cccccc;\r
+ Colors[EGDC_FOCUSED_EDITABLE] = 0xf0fffff0;\r
\r
Sizes[EGDS_SCROLLBAR_SIZE] = 14;\r
Sizes[EGDS_MENU_HEIGHT] = 48;\r
Icons[EGDI_FILE] = 245;\r
Icons[EGDI_DIRECTORY] = 246;\r
\r
- for (u32 i = 0; i < EGDF_COUNT; ++i)\r
+ for (u32 i=0; i<EGDF_COUNT; ++i)\r
Fonts[i] = 0;\r
\r
- UseGradient = (Type == EGST_WINDOWS_METALLIC) || (Type == EGST_BURNING_SKIN);\r
+ UseGradient = (Type == EGST_WINDOWS_METALLIC) || (Type == EGST_BURNING_SKIN) ;\r
}\r
\r
+\r
//! destructor\r
GUISkin::~GUISkin()\r
{\r
- for (u32 i = 0; i < EGDF_COUNT; ++i) {\r
+ for (u32 i=0; i<EGDF_COUNT; ++i)\r
+ {\r
if (Fonts[i])\r
Fonts[i]->drop();\r
}\r
SpriteBank->drop();\r
}\r
\r
+\r
//! returns default color\r
video::SColor GUISkin::getColor(EGUI_DEFAULT_COLOR color) const\r
{\r
return video::SColor();\r
}\r
\r
+\r
//! sets a default color\r
void GUISkin::setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor)\r
{\r
Colors[which] = newColor;\r
}\r
\r
+\r
//! returns size for the given size type\r
s32 GUISkin::getSize(EGUI_DEFAULT_SIZE size) const\r
{\r
return 0;\r
}\r
\r
+\r
//! sets a default size\r
void GUISkin::setSize(EGUI_DEFAULT_SIZE which, s32 size)\r
{\r
Sizes[which] = size;\r
}\r
\r
+\r
//! returns the default font\r
-IGUIFont *GUISkin::getFont(EGUI_DEFAULT_FONT which) const\r
+IGUIFont* GUISkin::getFont(EGUI_DEFAULT_FONT which) const\r
{\r
if (((u32)which < EGDF_COUNT) && Fonts[which])\r
return Fonts[which];\r
return Fonts[EGDF_DEFAULT];\r
}\r
\r
+\r
//! sets a default font\r
-void GUISkin::setFont(IGUIFont *font, EGUI_DEFAULT_FONT which)\r
+void GUISkin::setFont(IGUIFont* font, EGUI_DEFAULT_FONT which)\r
{\r
if ((u32)which >= EGDF_COUNT)\r
return;\r
\r
- if (font) {\r
+ if (font)\r
+ {\r
font->grab();\r
if (Fonts[which])\r
Fonts[which]->drop();\r
}\r
}\r
\r
+\r
//! gets the sprite bank stored\r
-IGUISpriteBank *GUISkin::getSpriteBank() const\r
+IGUISpriteBank* GUISkin::getSpriteBank() const\r
{\r
return SpriteBank;\r
}\r
\r
+\r
//! set a new sprite bank or remove one by passing 0\r
-void GUISkin::setSpriteBank(IGUISpriteBank *bank)\r
+void GUISkin::setSpriteBank(IGUISpriteBank* bank)\r
{\r
if (bank)\r
bank->grab();\r
SpriteBank = bank;\r
}\r
\r
+\r
//! Returns a default icon\r
u32 GUISkin::getIcon(EGUI_DEFAULT_ICON icon) const\r
{\r
return 0;\r
}\r
\r
+\r
//! Sets a default icon\r
void GUISkin::setIcon(EGUI_DEFAULT_ICON icon, u32 index)\r
{\r
Icons[icon] = index;\r
}\r
\r
+\r
//! Returns a default text. For example for Message box button captions:\r
//! "OK", "Cancel", "Yes", "No" and so on.\r
-const wchar_t *GUISkin::getDefaultText(EGUI_DEFAULT_TEXT text) const\r
+const wchar_t* GUISkin::getDefaultText(EGUI_DEFAULT_TEXT text) const\r
{\r
if ((u32)text < EGDT_COUNT)\r
return Texts[text].c_str();\r
return Texts[0].c_str();\r
}\r
\r
+\r
//! Sets a default text. For example for Message box button captions:\r
//! "OK", "Cancel", "Yes", "No" and so on.\r
-void GUISkin::setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t *newText)\r
+void GUISkin::setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText)\r
{\r
if ((u32)which < EGDT_COUNT)\r
Texts[which] = newText;\r
}\r
\r
+\r
//! draws a standard 3d button pane\r
/** Used for drawing for example buttons in normal state.\r
It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and\r
is usually not used by ISkin, but can be used for example by more complex\r
implementations to find out how to draw the part exactly. */\r
// PATCH\r
-void GUISkin::drawColored3DButtonPaneStandard(IGUIElement *element,\r
- const core::rect<s32> &r, const core::rect<s32> *clip,\r
- const video::SColor *colors)\r
+void GUISkin::drawColored3DButtonPaneStandard(IGUIElement* element,\r
+ const core::rect<s32>& r,\r
+ const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
\r
core::rect<s32> rect = r;\r
\r
- if (Type == EGST_BURNING_SKIN) {\r
+ if ( Type == EGST_BURNING_SKIN )\r
+ {\r
rect.UpperLeftCorner.X -= 1;\r
rect.UpperLeftCorner.Y -= 1;\r
rect.LowerRightCorner.X += 1;\r
rect.LowerRightCorner.Y += 1;\r
draw3DSunkenPane(element,\r
- colors[EGDC_WINDOW].getInterpolated(0xFFFFFFFF, 0.9f),\r
- false, true, rect, clip);\r
+ colors[ EGDC_WINDOW ].getInterpolated( 0xFFFFFFFF, 0.9f )\r
+ ,false, true, rect, clip);\r
return;\r
}\r
\r
rect.LowerRightCorner.X -= 1;\r
rect.LowerRightCorner.Y -= 1;\r
\r
- if (!UseGradient) {\r
+ if (!UseGradient)\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], rect, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
const video::SColor c1 = colors[EGDC_3D_FACE];\r
- const video::SColor c2 =\r
- c1.getInterpolated(colors[EGDC_3D_DARK_SHADOW], 0.4f);\r
+ const video::SColor c2 = c1.getInterpolated(colors[EGDC_3D_DARK_SHADOW], 0.4f);\r
Driver->draw2DRectangle(rect, c1, c1, c2, c2, clip);\r
}\r
}\r
// END PATCH\r
\r
+\r
//! draws a pressed 3d button pane\r
/** Used for drawing for example buttons in pressed state.\r
It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and\r
is usually not used by ISkin, but can be used for example by more complex\r
implementations to find out how to draw the part exactly. */\r
// PATCH\r
-void GUISkin::drawColored3DButtonPanePressed(IGUIElement *element,\r
- const core::rect<s32> &r, const core::rect<s32> *clip,\r
- const video::SColor *colors)\r
+void GUISkin::drawColored3DButtonPanePressed(IGUIElement* element,\r
+ const core::rect<s32>& r,\r
+ const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
rect.UpperLeftCorner.X += 1;\r
rect.UpperLeftCorner.Y += 1;\r
\r
- if (!UseGradient) {\r
+ if (!UseGradient)\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], rect, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
const video::SColor c1 = colors[EGDC_3D_FACE];\r
- const video::SColor c2 =\r
- c1.getInterpolated(colors[EGDC_3D_DARK_SHADOW], 0.4f);\r
+ const video::SColor c2 = c1.getInterpolated(colors[EGDC_3D_DARK_SHADOW], 0.4f);\r
Driver->draw2DRectangle(rect, c1, c1, c2, c2, clip);\r
}\r
}\r
// END PATCH\r
\r
+\r
//! draws a sunken 3d pane\r
/** Used for drawing the background of edit, combo or check boxes.\r
\param element: Pointer to the element which wishes to draw this. This parameter\r
\param rect: Defining area where to draw.\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColored3DSunkenPane(IGUIElement *element, video::SColor bgcolor,\r
- bool flat, bool fillBackGround, const core::rect<s32> &r,\r
- const core::rect<s32> *clip, const video::SColor *colors)\r
+void GUISkin::drawColored3DSunkenPane(IGUIElement* element, video::SColor bgcolor,\r
+ bool flat, bool fillBackGround,\r
+ const core::rect<s32>& r,\r
+ const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
if (fillBackGround)\r
Driver->draw2DRectangle(bgcolor, rect, clip);\r
\r
- if (flat) {\r
+ if (flat)\r
+ {\r
// draw flat sunken pane\r
\r
rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 1;\r
- Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // top\r
+ Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // top\r
\r
++rect.UpperLeftCorner.Y;\r
rect.LowerRightCorner.Y = r.LowerRightCorner.Y;\r
rect.LowerRightCorner.X = rect.UpperLeftCorner.X + 1;\r
- Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // left\r
+ Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // left\r
\r
rect = r;\r
++rect.UpperLeftCorner.Y;\r
rect.UpperLeftCorner.X = rect.LowerRightCorner.X - 1;\r
- Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // right\r
+ Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // right\r
\r
rect = r;\r
++rect.UpperLeftCorner.X;\r
rect.UpperLeftCorner.Y = r.LowerRightCorner.Y - 1;\r
--rect.LowerRightCorner.X;\r
- Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // bottom\r
- } else {\r
+ Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // bottom\r
+ }\r
+ else\r
+ {\r
// draw deep sunken pane\r
rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 1;\r
- Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // top\r
+ Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // top\r
++rect.UpperLeftCorner.X;\r
++rect.UpperLeftCorner.Y;\r
--rect.LowerRightCorner.X;\r
Driver->draw2DRectangle(colors[EGDC_3D_DARK_SHADOW], rect, clip);\r
\r
rect.UpperLeftCorner.X = r.UpperLeftCorner.X;\r
- rect.UpperLeftCorner.Y = r.UpperLeftCorner.Y + 1;\r
+ rect.UpperLeftCorner.Y = r.UpperLeftCorner.Y+1;\r
rect.LowerRightCorner.X = rect.UpperLeftCorner.X + 1;\r
rect.LowerRightCorner.Y = r.LowerRightCorner.Y;\r
- Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // left\r
+ Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip); // left\r
++rect.UpperLeftCorner.X;\r
++rect.UpperLeftCorner.Y;\r
++rect.LowerRightCorner.X;\r
rect = r;\r
rect.UpperLeftCorner.X = rect.LowerRightCorner.X - 1;\r
++rect.UpperLeftCorner.Y;\r
- Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // right\r
+ Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // right\r
--rect.UpperLeftCorner.X;\r
++rect.UpperLeftCorner.Y;\r
--rect.LowerRightCorner.X;\r
++rect.UpperLeftCorner.X;\r
rect.UpperLeftCorner.Y = r.LowerRightCorner.Y - 1;\r
--rect.LowerRightCorner.X;\r
- Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // bottom\r
+ Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip); // bottom\r
++rect.UpperLeftCorner.X;\r
--rect.UpperLeftCorner.Y;\r
--rect.LowerRightCorner.X;\r
//! draws a window background\r
// return where to draw title bar text.\r
// PATCH\r
-core::rect<s32> GUISkin::drawColored3DWindowBackground(IGUIElement *element,\r
- bool drawTitleBar, video::SColor titleBarColor, const core::rect<s32> &r,\r
- const core::rect<s32> *clip, core::rect<s32> *checkClientArea,\r
- const video::SColor *colors)\r
+core::rect<s32> GUISkin::drawColored3DWindowBackground(IGUIElement* element,\r
+ bool drawTitleBar, video::SColor titleBarColor,\r
+ const core::rect<s32>& r,\r
+ const core::rect<s32>* clip,\r
+ core::rect<s32>* checkClientArea,\r
+ const video::SColor* colors)\r
{\r
- if (!Driver) {\r
- if (checkClientArea) {\r
+ if (!Driver)\r
+ {\r
+ if ( checkClientArea )\r
+ {\r
*checkClientArea = r;\r
}\r
return r;\r
\r
// top border\r
rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 1;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip);\r
}\r
\r
// left border\r
rect.LowerRightCorner.Y = r.LowerRightCorner.Y;\r
rect.LowerRightCorner.X = rect.UpperLeftCorner.X + 1;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_HIGH_LIGHT], rect, clip);\r
}\r
\r
rect.LowerRightCorner.X = r.LowerRightCorner.X;\r
rect.UpperLeftCorner.Y = r.UpperLeftCorner.Y;\r
rect.LowerRightCorner.Y = r.LowerRightCorner.Y;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_DARK_SHADOW], rect, clip);\r
}\r
\r
rect.LowerRightCorner.X -= 1;\r
rect.UpperLeftCorner.Y += 1;\r
rect.LowerRightCorner.Y -= 1;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip);\r
}\r
\r
rect.UpperLeftCorner.Y = r.LowerRightCorner.Y - 1;\r
rect.LowerRightCorner.Y = r.LowerRightCorner.Y;\r
rect.LowerRightCorner.X = r.LowerRightCorner.X;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_DARK_SHADOW], rect, clip);\r
}\r
\r
rect.LowerRightCorner.X -= 1;\r
rect.UpperLeftCorner.Y -= 1;\r
rect.LowerRightCorner.Y -= 1;\r
- if (!checkClientArea) {\r
+ if ( !checkClientArea )\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip);\r
}\r
\r
// client area for background\r
rect = r;\r
- rect.UpperLeftCorner.X += 1;\r
- rect.UpperLeftCorner.Y += 1;\r
+ rect.UpperLeftCorner.X +=1;\r
+ rect.UpperLeftCorner.Y +=1;\r
rect.LowerRightCorner.X -= 2;\r
rect.LowerRightCorner.Y -= 2;\r
- if (checkClientArea) {\r
+ if (checkClientArea)\r
+ {\r
*checkClientArea = rect;\r
}\r
\r
- if (!checkClientArea) {\r
- if (!UseGradient) {\r
+ if ( !checkClientArea )\r
+ {\r
+ if (!UseGradient)\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], rect, clip);\r
- } else if (Type == EGST_BURNING_SKIN) {\r
- const video::SColor c1 = colors[EGDC_WINDOW].getInterpolated(\r
- 0xFFFFFFFF, 0.9f);\r
- const video::SColor c2 = colors[EGDC_WINDOW].getInterpolated(\r
- 0xFFFFFFFF, 0.8f);\r
+ }\r
+ else if ( Type == EGST_BURNING_SKIN )\r
+ {\r
+ const video::SColor c1 = colors[EGDC_WINDOW].getInterpolated ( 0xFFFFFFFF, 0.9f );\r
+ const video::SColor c2 = colors[EGDC_WINDOW].getInterpolated ( 0xFFFFFFFF, 0.8f );\r
\r
Driver->draw2DRectangle(rect, c1, c1, c2, c2, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
const video::SColor c2 = colors[EGDC_3D_SHADOW];\r
const video::SColor c1 = colors[EGDC_3D_FACE];\r
Driver->draw2DRectangle(rect, c1, c1, c1, c2, clip);\r
rect.UpperLeftCorner.X += 2;\r
rect.UpperLeftCorner.Y += 2;\r
rect.LowerRightCorner.X -= 2;\r
- rect.LowerRightCorner.Y =\r
- rect.UpperLeftCorner.Y + getSize(EGDS_WINDOW_BUTTON_WIDTH) + 2;\r
+ rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + getSize(EGDS_WINDOW_BUTTON_WIDTH) + 2;\r
\r
- if (drawTitleBar) {\r
- if (checkClientArea) {\r
+ if (drawTitleBar )\r
+ {\r
+ if (checkClientArea)\r
+ {\r
(*checkClientArea).UpperLeftCorner.Y = rect.LowerRightCorner.Y;\r
- } else {\r
+ }\r
+ else\r
+ {\r
// draw title bar\r
- // if (!UseGradient)\r
+ //if (!UseGradient)\r
// Driver->draw2DRectangle(titleBarColor, rect, clip);\r
- // else\r
- if (Type == EGST_BURNING_SKIN) {\r
- const video::SColor c = titleBarColor.getInterpolated(\r
- video::SColor(titleBarColor.getAlpha(),\r
- 255, 255, 255),\r
- 0.8f);\r
- Driver->draw2DRectangle(rect, titleBarColor,\r
- titleBarColor, c, c, clip);\r
- } else {\r
- const video::SColor c = titleBarColor.getInterpolated(\r
- video::SColor(titleBarColor.getAlpha(), 0,\r
- 0, 0),\r
- 0.2f);\r
- Driver->draw2DRectangle(rect, titleBarColor, c,\r
- titleBarColor, c, clip);\r
+ //else\r
+ if ( Type == EGST_BURNING_SKIN )\r
+ {\r
+ const video::SColor c = titleBarColor.getInterpolated( video::SColor(titleBarColor.getAlpha(),255,255,255), 0.8f);\r
+ Driver->draw2DRectangle(rect, titleBarColor, titleBarColor, c, c, clip);\r
+ }\r
+ else\r
+ {\r
+ const video::SColor c = titleBarColor.getInterpolated(video::SColor(titleBarColor.getAlpha(),0,0,0), 0.2f);\r
+ Driver->draw2DRectangle(rect, titleBarColor, c, titleBarColor, c, clip);\r
}\r
}\r
}\r
}\r
// END PATCH\r
\r
+\r
//! draws a standard 3d menu pane\r
/** Used for drawing for menus and context menus.\r
It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and\r
\param rect: Defining area where to draw.\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColored3DMenuPane(IGUIElement *element, const core::rect<s32> &r,\r
- const core::rect<s32> *clip, const video::SColor *colors)\r
+void GUISkin::drawColored3DMenuPane(IGUIElement* element,\r
+ const core::rect<s32>& r, const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
\r
core::rect<s32> rect = r;\r
\r
- if (Type == EGST_BURNING_SKIN) {\r
+ if ( Type == EGST_BURNING_SKIN )\r
+ {\r
rect.UpperLeftCorner.Y -= 3;\r
draw3DButtonPaneStandard(element, rect, clip);\r
return;\r
Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], rect, clip);\r
\r
rect = r;\r
- rect.UpperLeftCorner.X += 1;\r
- rect.UpperLeftCorner.Y += 1;\r
+ rect.UpperLeftCorner.X +=1;\r
+ rect.UpperLeftCorner.Y +=1;\r
rect.LowerRightCorner.X -= 2;\r
rect.LowerRightCorner.Y -= 2;\r
\r
if (!UseGradient)\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], rect, clip);\r
- else {\r
+ else\r
+ {\r
const video::SColor c1 = colors[EGDC_3D_FACE];\r
const video::SColor c2 = colors[EGDC_3D_SHADOW];\r
Driver->draw2DRectangle(rect, c1, c1, c2, c2, clip);\r
}\r
// END PATCH\r
\r
+\r
//! draws a standard 3d tool bar\r
/** Used for drawing for toolbars and menus.\r
\param element: Pointer to the element which wishes to draw this. This parameter\r
\param rect: Defining area where to draw.\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColored3DToolBar(IGUIElement *element, const core::rect<s32> &r,\r
- const core::rect<s32> *clip, const video::SColor *colors)\r
+void GUISkin::drawColored3DToolBar(IGUIElement* element,\r
+ const core::rect<s32>& r,\r
+ const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
rect = r;\r
rect.LowerRightCorner.Y -= 1;\r
\r
- if (!UseGradient) {\r
+ if (!UseGradient)\r
+ {\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], rect, clip);\r
- } else if (Type == EGST_BURNING_SKIN) {\r
+ }\r
+ else\r
+ if ( Type == EGST_BURNING_SKIN )\r
+ {\r
const video::SColor c1 = 0xF0000000 | colors[EGDC_3D_FACE].color;\r
const video::SColor c2 = 0xF0000000 | colors[EGDC_3D_SHADOW].color;\r
\r
rect.LowerRightCorner.Y += 1;\r
Driver->draw2DRectangle(rect, c1, c2, c1, c2, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
const video::SColor c1 = colors[EGDC_3D_FACE];\r
const video::SColor c2 = colors[EGDC_3D_SHADOW];\r
Driver->draw2DRectangle(rect, c1, c1, c2, c2, clip);\r
\param rect: Defining area where to draw.\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColored3DTabButton(IGUIElement *element, bool active,\r
- const core::rect<s32> &frameRect, const core::rect<s32> *clip,\r
- EGUI_ALIGNMENT alignment, const video::SColor *colors)\r
+void GUISkin::drawColored3DTabButton(IGUIElement* element, bool active,\r
+ const core::rect<s32>& frameRect, const core::rect<s32>* clip, EGUI_ALIGNMENT alignment,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
\r
core::rect<s32> tr = frameRect;\r
\r
- if (alignment == EGUIA_UPPERLEFT) {\r
+ if ( alignment == EGUIA_UPPERLEFT )\r
+ {\r
tr.LowerRightCorner.X -= 2;\r
tr.LowerRightCorner.Y = tr.UpperLeftCorner.Y + 1;\r
tr.UpperLeftCorner.X += 1;\r
tr.UpperLeftCorner.X += 1;\r
tr.UpperLeftCorner.Y += 1;\r
Driver->draw2DRectangle(colors[EGDC_3D_DARK_SHADOW], tr, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
tr.LowerRightCorner.X -= 2;\r
tr.UpperLeftCorner.Y = tr.LowerRightCorner.Y - 1;\r
tr.UpperLeftCorner.X += 1;\r
// draw right middle gray shadow\r
tr.LowerRightCorner.X += 1;\r
tr.UpperLeftCorner.X = tr.LowerRightCorner.X - 1;\r
- // tr.LowerRightCorner.Y -= 1;\r
+ //tr.LowerRightCorner.Y -= 1;\r
Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], tr, clip);\r
\r
tr.LowerRightCorner.X += 1;\r
}\r
// END PATCH\r
\r
+\r
//! draws a tab control body\r
/** \param element: Pointer to the element which wishes to draw this. This parameter\r
is usually not used by ISkin, but can be used for example by more complex\r
\param rect: Defining area where to draw.\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColored3DTabBody(IGUIElement *element, bool border, bool background,\r
- const core::rect<s32> &rect, const core::rect<s32> *clip, s32 tabHeight,\r
- EGUI_ALIGNMENT alignment, const video::SColor *colors)\r
+void GUISkin::drawColored3DTabBody(IGUIElement* element, bool border, bool background,\r
+ const core::rect<s32>& rect, const core::rect<s32>* clip, s32 tabHeight, EGUI_ALIGNMENT alignment,\r
+ const video::SColor* colors)\r
{\r
if (!Driver)\r
return;\r
\r
core::rect<s32> tr = rect;\r
\r
- if (tabHeight == -1)\r
+ if ( tabHeight == -1 )\r
tabHeight = getSize(gui::EGDS_BUTTON_HEIGHT);\r
\r
// draw border.\r
- if (border) {\r
- if (alignment == EGUIA_UPPERLEFT) {\r
+ if (border)\r
+ {\r
+ if ( alignment == EGUIA_UPPERLEFT )\r
+ {\r
// draw left hightlight\r
tr.UpperLeftCorner.Y += tabHeight + 2;\r
tr.LowerRightCorner.X = tr.UpperLeftCorner.X + 1;\r
tr = rect;\r
tr.UpperLeftCorner.Y = tr.LowerRightCorner.Y - 1;\r
Driver->draw2DRectangle(colors[EGDC_3D_SHADOW], tr, clip);\r
- } else {\r
+ }\r
+ else\r
+ {\r
// draw left hightlight\r
tr.LowerRightCorner.Y -= tabHeight + 2;\r
tr.LowerRightCorner.X = tr.UpperLeftCorner.X + 1;\r
}\r
}\r
\r
- if (background) {\r
- if (alignment == EGUIA_UPPERLEFT) {\r
+ if (background)\r
+ {\r
+ if ( alignment == EGUIA_UPPERLEFT )\r
+ {\r
tr = rect;\r
tr.UpperLeftCorner.Y += tabHeight + 2;\r
tr.LowerRightCorner.X -= 1;\r
tr.UpperLeftCorner.X += 1;\r
tr.LowerRightCorner.Y -= 1;\r
- } else {\r
+ }\r
+ else\r
+ {\r
tr = rect;\r
tr.UpperLeftCorner.X += 1;\r
tr.UpperLeftCorner.Y -= 1;\r
tr.LowerRightCorner.X -= 1;\r
tr.LowerRightCorner.Y -= tabHeight + 2;\r
- // tr.UpperLeftCorner.X += 1;\r
+ //tr.UpperLeftCorner.X += 1;\r
}\r
\r
if (!UseGradient)\r
Driver->draw2DRectangle(colors[EGDC_3D_FACE], tr, clip);\r
- else {\r
+ else\r
+ {\r
video::SColor c1 = colors[EGDC_3D_FACE];\r
video::SColor c2 = colors[EGDC_3D_SHADOW];\r
Driver->draw2DRectangle(tr, c1, c1, c2, c2, clip);\r
}\r
// END PATCH\r
\r
+\r
//! draws an icon, usually from the skin's sprite bank\r
/** \param parent: Pointer to the element which wishes to draw this icon.\r
This parameter is usually not used by IGUISkin, but can be used for example\r
\param loop: Whether the animation should loop or not\r
\param clip: Clip area. */\r
// PATCH\r
-void GUISkin::drawColoredIcon(IGUIElement *element, EGUI_DEFAULT_ICON icon,\r
- const core::position2di position, u32 starttime, u32 currenttime,\r
- bool loop, const core::rect<s32> *clip, const video::SColor *colors)\r
+void GUISkin::drawColoredIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon,\r
+ const core::position2di position,\r
+ u32 starttime, u32 currenttime,\r
+ bool loop, const core::rect<s32>* clip,\r
+ const video::SColor* colors)\r
{\r
if (!SpriteBank)\r
return;\r
\r
bool gray = element && !element->isEnabled();\r
SpriteBank->draw2DSprite(Icons[icon], position, clip,\r
- colors[gray ? EGDC_GRAY_WINDOW_SYMBOL : EGDC_WINDOW_SYMBOL],\r
- starttime, currenttime, loop, true);\r
+ colors[gray? EGDC_GRAY_WINDOW_SYMBOL : EGDC_WINDOW_SYMBOL], starttime, currenttime, loop, true);\r
}\r
// END PATCH\r
\r
+\r
EGUI_SKIN_TYPE GUISkin::getType() const\r
{\r
return Type;\r
}\r
\r
+\r
//! draws a 2d rectangle.\r
-void GUISkin::draw2DRectangle(IGUIElement *element, const video::SColor &color,\r
- const core::rect<s32> &pos, const core::rect<s32> *clip)\r
+void GUISkin::draw2DRectangle(IGUIElement* element,\r
+ const video::SColor &color, const core::rect<s32>& pos,\r
+ const core::rect<s32>* clip)\r
{\r
Driver->draw2DRectangle(color, pos, clip);\r
}\r
\r
+\r
//! Writes attributes of the object.\r
//! Implement this to expose the attributes of your scene node animator for\r
//! scripting languages, editors, debuggers or xml serialization purposes.\r
-void GUISkin::serializeAttributes(\r
- io::IAttributes *out, io::SAttributeReadWriteOptions *options) const\r
+void GUISkin::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const\r
{\r
u32 i;\r
- for (i = 0; i < EGDC_COUNT; ++i)\r
+ for (i=0; i<EGDC_COUNT; ++i)\r
out->addColor(GUISkinColorNames[i], Colors[i]);\r
\r
- for (i = 0; i < EGDS_COUNT; ++i)\r
+ for (i=0; i<EGDS_COUNT; ++i)\r
out->addInt(GUISkinSizeNames[i], Sizes[i]);\r
\r
- for (i = 0; i < EGDT_COUNT; ++i)\r
+ for (i=0; i<EGDT_COUNT; ++i)\r
out->addString(GUISkinTextNames[i], Texts[i].c_str());\r
\r
- for (i = 0; i < EGDI_COUNT; ++i)\r
+ for (i=0; i<EGDI_COUNT; ++i)\r
out->addInt(GUISkinIconNames[i], Icons[i]);\r
}\r
\r
+\r
//! Reads attributes of the object.\r
//! Implement this to set the attributes of your scene node animator for\r
//! scripting languages, editors, debuggers or xml deserialization purposes.\r
-void GUISkin::deserializeAttributes(\r
- io::IAttributes *in, io::SAttributeReadWriteOptions *options)\r
+void GUISkin::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options)\r
{\r
- // TODO: This is not nice code for downward compatibility, whenever new values are\r
- // added and users load an old skin the corresponding values will be set to 0.\r
+ // TODO: This is not nice code for downward compatibility, whenever new values are added and users\r
+ // load an old skin the corresponding values will be set to 0.\r
u32 i;\r
- for (i = 0; i < EGDC_COUNT; ++i)\r
+ for (i=0; i<EGDC_COUNT; ++i)\r
Colors[i] = in->getAttributeAsColor(GUISkinColorNames[i]);\r
\r
- for (i = 0; i < EGDS_COUNT; ++i)\r
+ for (i=0; i<EGDS_COUNT; ++i)\r
Sizes[i] = in->getAttributeAsInt(GUISkinSizeNames[i]);\r
\r
- for (i = 0; i < EGDT_COUNT; ++i)\r
+ for (i=0; i<EGDT_COUNT; ++i)\r
Texts[i] = in->getAttributeAsStringW(GUISkinTextNames[i]);\r
\r
- for (i = 0; i < EGDI_COUNT; ++i)\r
+ for (i=0; i<EGDI_COUNT; ++i)\r
Icons[i] = in->getAttributeAsInt(GUISkinIconNames[i]);\r
}\r
\r
+\r
//! gets the colors\r
// PATCH\r
-void GUISkin::getColors(video::SColor *colors)\r
+void GUISkin::getColors(video::SColor* colors)\r
{\r
u32 i;\r
- for (i = 0; i < EGDC_COUNT; ++i)\r
+ for (i=0; i<EGDC_COUNT; ++i)\r
colors[i] = Colors[i];\r
}\r
// END PATCH\r
} // end namespace gui\r
} // end namespace irr\r
\r
+\r
#endif // _IRR_COMPILE_WITH_GUI_\r
+\r