Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
guiSkin.h
Go to the documentation of this file.
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __GUI_SKIN_H_INCLUDED__
6#define __GUI_SKIN_H_INCLUDED__
7
8#include "IGUISkin.h"
9#include "irrString.h"
10#include <string>
11#include "ITexture.h"
12
13namespace irr
14{
15namespace video
16{
17 class IVideoDriver;
18}
19namespace gui
20{
21 class GUISkin : public IGUISkin
22 {
23 public:
24
25 GUISkin(EGUI_SKIN_TYPE type, video::IVideoDriver* driver);
26
28 virtual ~GUISkin();
29
31 virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const;
32
34 virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor);
35
37 virtual s32 getSize(EGUI_DEFAULT_SIZE size) const;
38
40 virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size);
41
43 virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const;
44
46 virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT);
47
49 virtual void setSpriteBank(IGUISpriteBank* bank);
50
52 virtual IGUISpriteBank* getSpriteBank() const;
53
55
56 virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const;
57
59
63 virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index);
64
66
68 virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const;
69
71
73 virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText);
74
76
84 virtual void draw3DButtonPaneStandard(IGUIElement* element,
85 const core::rect<s32>& rect,
86 const core::rect<s32>* clip=0)
87 {
88 drawColored3DButtonPaneStandard(element, rect,clip);
89 }
90
91 virtual void drawColored3DButtonPaneStandard(IGUIElement* element,
92 const core::rect<s32>& rect,
93 const core::rect<s32>* clip=0,
94 const video::SColor* colors=0);
95
97
105 virtual void draw3DButtonPanePressed(IGUIElement* element,
106 const core::rect<s32>& rect,
107 const core::rect<s32>* clip=0)
108 {
109 drawColored3DButtonPanePressed(element, rect, clip);
110 }
111
112 virtual void drawColored3DButtonPanePressed(IGUIElement* element,
113 const core::rect<s32>& rect,
114 const core::rect<s32>* clip=0,
115 const video::SColor* colors=0);
116
118
127 virtual void draw3DSunkenPane(IGUIElement* element,
128 video::SColor bgcolor, bool flat,
129 bool fillBackGround,
130 const core::rect<s32>& rect,
131 const core::rect<s32>* clip=0)
132 {
133 drawColored3DSunkenPane(element, bgcolor, flat, fillBackGround, rect, clip);
134 }
135
136 virtual void drawColored3DSunkenPane(IGUIElement* element,
137 video::SColor bgcolor, bool flat,
138 bool fillBackGround,
139 const core::rect<s32>& rect,
140 const core::rect<s32>* clip=0,
141 const video::SColor* colors=0);
142
144
157 virtual core::rect<s32> draw3DWindowBackground(IGUIElement* element,
158 bool drawTitleBar, video::SColor titleBarColor,
159 const core::rect<s32>& rect,
160 const core::rect<s32>* clip,
161 core::rect<s32>* checkClientArea)
162 {
163 return drawColored3DWindowBackground(element, drawTitleBar, titleBarColor,
164 rect, clip, checkClientArea);
165 }
166
167 virtual core::rect<s32> drawColored3DWindowBackground(IGUIElement* element,
168 bool drawTitleBar, video::SColor titleBarColor,
169 const core::rect<s32>& rect,
170 const core::rect<s32>* clip,
171 core::rect<s32>* checkClientArea,
172 const video::SColor* colors=0);
173
175
183 virtual void draw3DMenuPane(IGUIElement* element,
184 const core::rect<s32>& rect,
185 const core::rect<s32>* clip=0)
186 {
187 drawColored3DMenuPane(element, rect, clip);
188 }
189
190 virtual void drawColored3DMenuPane(IGUIElement* element,
191 const core::rect<s32>& rect,
192 const core::rect<s32>* clip=0,
193 const video::SColor* colors=0);
194
196
202 virtual void draw3DToolBar(IGUIElement* element,
203 const core::rect<s32>& rect,
204 const core::rect<s32>* clip=0)
205 {
206 drawColored3DToolBar(element, rect, clip);
207 }
208
209 virtual void drawColored3DToolBar(IGUIElement* element,
210 const core::rect<s32>& rect,
211 const core::rect<s32>* clip=0,
212 const video::SColor* colors=0);
213
215
222 virtual void draw3DTabButton(IGUIElement* element, bool active,
223 const core::rect<s32>& rect, const core::rect<s32>* clip=0, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)
224 {
225 drawColored3DTabButton(element, active, rect, clip, alignment);
226 }
227
228 virtual void drawColored3DTabButton(IGUIElement* element, bool active,
229 const core::rect<s32>& rect, const core::rect<s32>* clip=0, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT,
230 const video::SColor* colors=0);
231
233
240 virtual void draw3DTabBody(IGUIElement* element, bool border, bool background,
241 const core::rect<s32>& rect, const core::rect<s32>* clip=0, s32 tabHeight=-1, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)
242 {
243 drawColored3DTabBody(element, border, background, rect, clip, tabHeight, alignment);
244 }
245
246 virtual void drawColored3DTabBody(IGUIElement* element, bool border, bool background,
247 const core::rect<s32>& rect, const core::rect<s32>* clip=0, s32 tabHeight=-1, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT,
248 const video::SColor* colors=0);
249
251
260 virtual void drawIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon,
261 const core::position2di position,
262 u32 starttime=0, u32 currenttime=0,
263 bool loop=false, const core::rect<s32>* clip=0)
264 {
265 drawColoredIcon(element, icon, position, starttime, currenttime, loop, clip);
266 }
267
268 virtual void drawColoredIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon,
269 const core::position2di position,
270 u32 starttime=0, u32 currenttime=0,
271 bool loop=false, const core::rect<s32>* clip=0,
272 const video::SColor* colors=0);
273
275
283 virtual void draw2DRectangle(IGUIElement* element, const video::SColor &color,
284 const core::rect<s32>& pos, const core::rect<s32>* clip = 0);
285
286
288 virtual EGUI_SKIN_TYPE getType() const;
289
291 virtual void getColors(video::SColor* colors); // ::PATCH:
292
293 private:
294
295 video::SColor Colors[EGDC_COUNT];
296 s32 Sizes[EGDS_COUNT];
297 u32 Icons[EGDI_COUNT];
298 IGUIFont* Fonts[EGDF_COUNT];
299 IGUISpriteBank* SpriteBank;
300 core::stringw Texts[EGDT_COUNT];
301 video::IVideoDriver* Driver;
303
304 EGUI_SKIN_TYPE Type;
305 };
306
307 #define set3DSkinColors(skin, button_color) \
308 { \
309 skin->setColor(EGDC_3D_FACE, button_color); \
310 skin->setColor(EGDC_3D_DARK_SHADOW, button_color, 0.25f); \
311 skin->setColor(EGDC_3D_SHADOW, button_color, 0.5f); \
312 skin->setColor(EGDC_3D_LIGHT, button_color); \
313 skin->setColor(EGDC_3D_HIGH_LIGHT, button_color, 1.5f); \
314 }
315
316 #define getElementSkinColor(color) \
317 { \
318 if (!Colors) \
319 { \
320 IGUISkin* skin = Environment->getSkin(); \
321 if (skin) \
322 return skin->getColor(color); \
323 } \
324 return Colors[color]; \
325 }
326
327 #define setElementSkinColor(which, newColor, shading) \
328 { \
329 if (!Colors) \
330 { \
331 Colors = new video::SColor[EGDC_COUNT]; \
332 GUISkin* skin = (GUISkin *)Environment->getSkin(); \
333 if (skin) \
334 skin->getColors(Colors); \
335 } \
336 Colors[which] = newColor; \
337 setShading(Colors[which],shading); \
338 }
339} // end namespace gui
341inline void setShading(video::SColor &color,f32 s) // :PATCH:
342{
343 if (s < 1.0f)
344 {
345 color.setRed(color.getRed() * s);
346 color.setGreen(color.getGreen() * s);
347 color.setBlue(color.getBlue() * s);
348 }
349 else if (s > 1.0f)
350 {
351 s -= 1.0f;
352
353 color.setRed(color.getRed() + (255 - color.getRed()) * s);
354 color.setGreen(color.getGreen() + (255 - color.getGreen()) * s);
355 color.setBlue(color.getBlue() + (255 - color.getBlue()) * s);
356 }
357}
358} // end namespace irr
359
360#endif
Definition: guiSkin.h:22
virtual void draw3DButtonPanePressed(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)
draws a pressed 3d button pane
Definition: guiSkin.h:105
virtual void draw3DToolBar(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)
draws a standard 3d tool bar
Definition: guiSkin.h:202
virtual void drawColored3DToolBar(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws a standard 3d tool bar
Definition: guiSkin.cpp:754
IGUIFont * Fonts[EGDF_COUNT]
Definition: guiSkin.h:298
virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t *newText)
Sets a default text.
Definition: guiSkin.cpp:297
virtual core::rect< s32 > draw3DWindowBackground(IGUIElement *element, bool drawTitleBar, video::SColor titleBarColor, const core::rect< s32 > &rect, const core::rect< s32 > *clip, core::rect< s32 > *checkClientArea)
draws a window background
Definition: guiSkin.h:157
EGUI_SKIN_TYPE Type
Definition: guiSkin.h:304
virtual void drawColored3DSunkenPane(IGUIElement *element, video::SColor bgcolor, bool flat, bool fillBackGround, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws a sunken 3d pane
Definition: guiSkin.cpp:426
virtual void drawColored3DTabBody(IGUIElement *element, bool border, bool background, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, s32 tabHeight=-1, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT, const video::SColor *colors=0)
draws a tab control body
Definition: guiSkin.cpp:894
virtual void setSpriteBank(IGUISpriteBank *bank)
sets the sprite bank used for drawing icons
Definition: guiSkin.cpp:254
virtual void getColors(video::SColor *colors)
gets the colors
Definition: guiSkin.cpp:1028
IGUISpriteBank * SpriteBank
Definition: guiSkin.h:299
virtual void drawColored3DTabButton(IGUIElement *element, bool active, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT, const video::SColor *colors=0)
draws a tab button
Definition: guiSkin.cpp:807
virtual void drawIcon(IGUIElement *element, EGUI_DEFAULT_ICON icon, const core::position2di position, u32 starttime=0, u32 currenttime=0, bool loop=false, const core::rect< s32 > *clip=0)
draws an icon, usually from the skin's sprite bank
Definition: guiSkin.h:260
virtual EGUI_SKIN_TYPE getType() const
get the type of this skin
Definition: guiSkin.cpp:1011
virtual void drawColoredIcon(IGUIElement *element, EGUI_DEFAULT_ICON icon, const core::position2di position, u32 starttime=0, u32 currenttime=0, bool loop=false, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws an icon, usually from the skin's sprite bank
Definition: guiSkin.cpp:992
u32 Icons[EGDI_COUNT]
Definition: guiSkin.h:297
s32 Sizes[EGDS_COUNT]
Definition: guiSkin.h:296
virtual void draw2DRectangle(IGUIElement *element, const video::SColor &color, const core::rect< s32 > &pos, const core::rect< s32 > *clip=0)
draws a 2d rectangle.
Definition: guiSkin.cpp:1018
virtual void drawColored3DButtonPaneStandard(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws a standard 3d button pane
Definition: guiSkin.cpp:314
virtual IGUIFont * getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const
returns the default font
Definition: guiSkin.cpp:220
virtual IGUISpriteBank * getSpriteBank() const
gets the sprite bank used for drawing icons
Definition: guiSkin.cpp:247
virtual void draw3DButtonPaneStandard(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)
draws a standard 3d button pane
Definition: guiSkin.h:84
virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size)
sets a default size
Definition: guiSkin.cpp:212
virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor)
sets a default color
Definition: guiSkin.cpp:194
video::IVideoDriver * Driver
Definition: guiSkin.h:301
virtual s32 getSize(EGUI_DEFAULT_SIZE size) const
returns size for the given size type
Definition: guiSkin.cpp:202
virtual core::rect< s32 > drawColored3DWindowBackground(IGUIElement *element, bool drawTitleBar, video::SColor titleBarColor, const core::rect< s32 > &rect, const core::rect< s32 > *clip, core::rect< s32 > *checkClientArea, const video::SColor *colors=0)
draws a window background
Definition: guiSkin.cpp:515
virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const
returns default color
Definition: guiSkin.cpp:184
virtual void draw3DMenuPane(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)
draws a standard 3d menu pane
Definition: guiSkin.h:183
virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index)
Sets a default icon.
Definition: guiSkin.cpp:277
virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const
Returns a default icon.
Definition: guiSkin.cpp:267
virtual void draw3DTabButton(IGUIElement *element, bool active, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)
draws a tab button
Definition: guiSkin.h:222
virtual void draw3DTabBody(IGUIElement *element, bool border, bool background, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, s32 tabHeight=-1, EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)
draws a tab control body
Definition: guiSkin.h:240
virtual const wchar_t * getDefaultText(EGUI_DEFAULT_TEXT text) const
Returns a default text.
Definition: guiSkin.cpp:286
virtual void draw3DSunkenPane(IGUIElement *element, video::SColor bgcolor, bool flat, bool fillBackGround, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)
draws a sunken 3d pane
Definition: guiSkin.h:127
virtual ~GUISkin()
destructor
Definition: guiSkin.cpp:170
virtual void drawColored3DButtonPanePressed(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws a pressed 3d button pane
Definition: guiSkin.cpp:376
virtual void setFont(IGUIFont *font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT)
sets a default font
Definition: guiSkin.cpp:230
core::stringw Texts[EGDT_COUNT]
Definition: guiSkin.h:300
bool UseGradient
Definition: guiSkin.h:302
video::SColor Colors[EGDC_COUNT]
Definition: guiSkin.h:295
virtual void drawColored3DMenuPane(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, const video::SColor *colors=0)
draws a standard 3d menu pane
Definition: guiSkin.cpp:670
Definition: shader.h:61
void setShading(video::SColor &color, f32 s)
Sets the shading.
Definition: guiSkin.h:341