Irrlicht 3D Engine
IGUISkin.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 __I_GUI_SKIN_H_INCLUDED__
6 #define __I_GUI_SKIN_H_INCLUDED__
7 
9 #include "EGUIAlignment.h"
10 #include "SColor.h"
11 #include "rect.h"
12 
13 namespace irr
14 {
15 namespace gui
16 {
17  class IGUIFont;
18  class IGUISpriteBank;
19  class IGUIElement;
20 
22 
31  {
34 
37 
40 
43 
46  };
47 
49  const c8* const GUISkinTypeNames[EGST_COUNT+1] =
50  {
51  "windowsClassic",
52  "windowsMetallic",
53  "burning",
54  "unknown",
55  0,
56  };
57 
58 
61  {
112 
115  EGDC_COUNT
116  };
117 
119  const c8* const GUISkinColorNames[EGDC_COUNT+1] =
120  {
121  "3DDarkShadow",
122  "3DShadow",
123  "3DFace",
124  "3DHighlight",
125  "3DLight",
126  "ActiveBorder",
127  "ActiveCaption",
128  "AppWorkspace",
129  "ButtonText",
130  "GrayText",
131  "Highlight",
132  "HighlightText",
133  "InactiveBorder",
134  "InactiveCaption",
135  "ToolTip",
136  "ToolTipBackground",
137  "ScrollBar",
138  "Window",
139  "WindowSymbol",
140  "Icon",
141  "IconHighlight",
142  "GrayWindowSymbol",
143  "Editable",
144  "GrayEditable",
145  "FocusedEditable",
146  0,
147  };
148 
151  {
194 
197  EGDS_COUNT
198  };
199 
200 
202  const c8* const GUISkinSizeNames[EGDS_COUNT+1] =
203  {
204  "ScrollBarSize",
205  "MenuHeight",
206  "WindowButtonWidth",
207  "CheckBoxWidth",
208  "MessageBoxWidth",
209  "MessageBoxHeight",
210  "ButtonWidth",
211  "ButtonHeight",
212  "TextDistanceX",
213  "TextDistanceY",
214  "TitleBarTextX",
215  "TitleBarTextY",
216  "MessageBoxGapSpace",
217  "MessageBoxMinTextWidth",
218  "MessageBoxMaxTextWidth",
219  "MessageBoxMinTextHeight",
220  "MessageBoxMaxTextHeight",
221  "ButtonPressedImageOffsetX",
222  "ButtonPressedImageOffsetY",
223  "ButtonPressedTextOffsetX",
224  "ButtonPressedTextOffsetY",
225  0
226  };
227 
228 
230  {
247 
249  EGDT_COUNT
250  };
251 
253  const c8* const GUISkinTextNames[EGDT_COUNT+1] =
254  {
255  "MessageBoxOkay",
256  "MessageBoxCancel",
257  "MessageBoxYes",
258  "MessageBoxNo",
259  "WindowButtonClose",
260  "WindowButtonMaximize",
261  "WindowButtonMinimize",
262  "WindowButtonRestore",
263  0
264  };
265 
268  {
309 
316 
318  EGDI_COUNT
319  };
320 
321  const c8* const GUISkinIconNames[EGDI_COUNT+1] =
322  {
323  "windowMaximize",
324  "windowRestore",
325  "windowClose",
326  "windowMinimize",
327  "windowResize",
328  "cursorUp",
329  "cursorDown",
330  "cursorLeft",
331  "cursorRight",
332  "menuMore",
333  "checkBoxChecked",
334  "dropDown",
335  "smallCursorUp",
336  "smallCursorDown",
337  "radioButtonChecked",
338  "moreLeft",
339  "moreRight",
340  "moreUp",
341  "moreDown",
342  "expand",
343  "collapse",
344  "file",
345  "directory",
346  0
347  };
348 
349  // Customizable fonts
351  {
364  EGDF_COUNT
365  };
366 
367  const c8* const GUISkinFontNames[EGDF_COUNT+1] =
368  {
369  "defaultFont",
370  "buttonFont",
371  "windowFont",
372  "menuFont",
373  "tooltipFont",
374  0
375  };
376 
379  {
380  public:
381 
383  virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0;
384 
386  virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor) = 0;
387 
389  virtual s32 getSize(EGUI_DEFAULT_SIZE size) const = 0;
390 
392 
394  virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const = 0;
395 
397 
399  virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText) = 0;
400 
402  virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size) = 0;
403 
405  virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const = 0;
406 
408  virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0;
409 
411  virtual IGUISpriteBank* getSpriteBank() const = 0;
412 
414  virtual void setSpriteBank(IGUISpriteBank* bank) = 0;
415 
417 
418  virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const = 0;
419 
421 
425  virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index) = 0;
426 
428 
436  virtual void draw3DButtonPaneStandard(IGUIElement* element,
437  const core::rect<s32>& rect,
438  const core::rect<s32>* clip=0) = 0;
439 
441 
449  virtual void draw3DButtonPanePressed(IGUIElement* element,
450  const core::rect<s32>& rect,
451  const core::rect<s32>* clip=0) = 0;
452 
454 
465  virtual void draw3DSunkenPane(IGUIElement* element,
466  video::SColor bgcolor, bool flat, bool fillBackGround,
467  const core::rect<s32>& rect,
468  const core::rect<s32>* clip=0) = 0;
469 
471 
485  bool drawTitleBar, video::SColor titleBarColor,
486  const core::rect<s32>& rect,
487  const core::rect<s32>* clip=0,
488  core::rect<s32>* checkClientArea=0) = 0;
489 
491 
499  virtual void draw3DMenuPane(IGUIElement* element,
500  const core::rect<s32>& rect,
501  const core::rect<s32>* clip=0) = 0;
502 
504 
510  virtual void draw3DToolBar(IGUIElement* element,
511  const core::rect<s32>& rect,
512  const core::rect<s32>* clip=0) = 0;
513 
515 
523  virtual void draw3DTabButton(IGUIElement* element, bool active,
524  const core::rect<s32>& rect, const core::rect<s32>* clip=0, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT) = 0;
525 
527 
536  virtual void draw3DTabBody(IGUIElement* element, bool border, bool background,
537  const core::rect<s32>& rect, const core::rect<s32>* clip=0, s32 tabHeight=-1, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT ) = 0;
538 
540 
549  virtual void drawIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon,
550  const core::position2di position, u32 starttime=0, u32 currenttime=0,
551  bool loop=false, const core::rect<s32>* clip=0) = 0;
552 
554 
562  virtual void draw2DRectangle(IGUIElement* element, const video::SColor &color,
563  const core::rect<s32>& pos, const core::rect<s32>* clip = 0) = 0;
564 
566  virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; }
567  };
568 
569 
570 } // end namespace gui
571 } // end namespace irr
572 
573 #endif
574 
2d vector template class with lots of operators and methods.
Definition: vector2d.h:22
Base class of all GUI elements.
Definition: IGUIElement.h:26
Font interface.
Definition: IGUIFont.h:40
A skin modifies the look of the GUI elements.
Definition: IGUISkin.h:379
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)=0
draws an icon, usually from the skin's sprite bank
virtual void draw2DRectangle(IGUIElement *element, const video::SColor &color, const core::rect< s32 > &pos, const core::rect< s32 > *clip=0)=0
draws a 2d rectangle.
virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const =0
Returns a default icon.
virtual void setFont(IGUIFont *font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT)=0
sets a default font
virtual void draw3DMenuPane(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)=0
draws a standard 3d menu pane
virtual IGUISpriteBank * getSpriteBank() const =0
returns the sprite bank
virtual const wchar_t * getDefaultText(EGUI_DEFAULT_TEXT text) const =0
Returns a default text.
virtual core::rect< s32 > draw3DWindowBackground(IGUIElement *element, bool drawTitleBar, video::SColor titleBarColor, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, core::rect< s32 > *checkClientArea=0)=0
draws a window background
virtual void setSpriteBank(IGUISpriteBank *bank)=0
sets the sprite bank
virtual void draw3DButtonPaneStandard(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)=0
draws a standard 3d button pane
virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t *newText)=0
Sets a default text.
virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index)=0
Sets a default icon.
virtual void draw3DToolBar(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)=0
draws a standard 3d tool bar
virtual void draw3DTabButton(IGUIElement *element, bool active, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)=0
draws a tab button
virtual void draw3DButtonPanePressed(IGUIElement *element, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)=0
draws a pressed 3d button pane
virtual IGUIFont * getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const =0
returns the default font
virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor)=0
sets a default color
virtual s32 getSize(EGUI_DEFAULT_SIZE size) const =0
returns size for the given size type
virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const =0
returns default color
virtual EGUI_SKIN_TYPE getType() const
get the type of this skin
Definition: IGUISkin.h:566
virtual void draw3DSunkenPane(IGUIElement *element, video::SColor bgcolor, bool flat, bool fillBackGround, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0)=0
draws a sunken 3d pane
virtual void draw3DTabBody(IGUIElement *element, bool border, bool background, const core::rect< s32 > &rect, const core::rect< s32 > *clip=0, s32 tabHeight=-1, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT)=0
draws a tab control body
virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size)=0
sets a default size
Sprite bank interface.
An object which is able to serialize and deserialize its attributes into an attributes object.
Class representing a 32 bit ARGB color.
Definition: SColor.h:202
EGUI_DEFAULT_TEXT
Definition: IGUISkin.h:230
@ EGDT_MSG_BOX_NO
Text for the No button on a message box.
Definition: IGUISkin.h:238
@ EGDT_MSG_BOX_YES
Text for the Yes button on a message box.
Definition: IGUISkin.h:236
@ EGDT_WINDOW_MAXIMIZE
Tooltip text for window maximize button.
Definition: IGUISkin.h:242
@ EGDT_WINDOW_RESTORE
Tooltip text for window restore button.
Definition: IGUISkin.h:246
@ EGDT_MSG_BOX_CANCEL
Text for the Cancel button on a message box.
Definition: IGUISkin.h:234
@ EGDT_WINDOW_CLOSE
Tooltip text for window close button.
Definition: IGUISkin.h:240
@ EGDT_WINDOW_MINIMIZE
Tooltip text for window minimize button.
Definition: IGUISkin.h:244
@ EGDT_MSG_BOX_OK
Text for the OK button on a message box.
Definition: IGUISkin.h:232
@ EGDT_COUNT
this value is not used, it only specifies the number of default texts
Definition: IGUISkin.h:249
@ EGUIA_UPPERLEFT
Aligned to parent's top or left side (default)
Definition: EGUIAlignment.h:15
EGUI_DEFAULT_SIZE
Enumeration for default sizes.
Definition: IGUISkin.h:151
@ EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X
pixels to move the button image to the right when a pushbutton is pressed
Definition: IGUISkin.h:187
@ EGDS_MESSAGE_BOX_MIN_TEXT_HEIGHT
minimal space to reserve for messagebox text-height
Definition: IGUISkin.h:183
@ EGDS_MESSAGE_BOX_MIN_TEXT_WIDTH
minimal space to reserve for messagebox text-width
Definition: IGUISkin.h:179
@ EGDS_WINDOW_BUTTON_WIDTH
width of a window button
Definition: IGUISkin.h:157
@ EGDS_SCROLLBAR_SIZE
default with / height of scrollbar
Definition: IGUISkin.h:153
@ EGDS_MESSAGE_BOX_WIDTH
Definition: IGUISkin.h:161
@ EGDS_MESSAGE_BOX_GAP_SPACE
free space in a messagebox between borders and contents on all sides
Definition: IGUISkin.h:177
@ EGDS_MENU_HEIGHT
height of menu
Definition: IGUISkin.h:155
@ EGDS_MESSAGE_BOX_MAX_TEXT_HEIGHT
maximal space to reserve for messagebox text-height
Definition: IGUISkin.h:185
@ EGDS_BUTTON_HEIGHT
height of a default button
Definition: IGUISkin.h:167
@ EGDS_TEXT_DISTANCE_Y
distance for text from background
Definition: IGUISkin.h:171
@ EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH
maximal space to reserve for messagebox text-width
Definition: IGUISkin.h:181
@ EGDS_COUNT
Definition: IGUISkin.h:197
@ EGDS_TITLEBARTEXT_DISTANCE_X
distance for text in the title bar, from the left of the window rect
Definition: IGUISkin.h:173
@ EGDS_MESSAGE_BOX_HEIGHT
Definition: IGUISkin.h:163
@ EGDS_TITLEBARTEXT_DISTANCE_Y
distance for text in the title bar, from the top of the window rect
Definition: IGUISkin.h:175
@ EGDS_BUTTON_PRESSED_TEXT_OFFSET_Y
pixels to move the button text down when a pushbutton is pressed
Definition: IGUISkin.h:193
@ EGDS_CHECK_BOX_WIDTH
width of a checkbox check
Definition: IGUISkin.h:159
@ EGDS_TEXT_DISTANCE_X
distance for text from background
Definition: IGUISkin.h:169
@ EGDS_BUTTON_WIDTH
width of a default button
Definition: IGUISkin.h:165
@ EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y
pixels to move the button image down when a pushbutton is pressed
Definition: IGUISkin.h:189
@ EGDS_BUTTON_PRESSED_TEXT_OFFSET_X
pixels to move the button text to the right when a pushbutton is pressed
Definition: IGUISkin.h:191
const c8 *const GUISkinFontNames[EGDF_COUNT+1]
Definition: IGUISkin.h:367
const c8 *const GUISkinTextNames[EGDT_COUNT+1]
Names for default skin sizes.
Definition: IGUISkin.h:253
EGUI_SKIN_TYPE
Enumeration of available default skins.
Definition: IGUISkin.h:31
@ EGST_UNKNOWN
An unknown skin, not serializable at present.
Definition: IGUISkin.h:42
@ EGST_COUNT
this value is not used, it only specifies the number of skin types
Definition: IGUISkin.h:45
@ EGST_WINDOWS_METALLIC
Like EGST_WINDOWS_CLASSIC, but with metallic shaded windows and buttons.
Definition: IGUISkin.h:36
@ EGST_WINDOWS_CLASSIC
Default windows look and feel.
Definition: IGUISkin.h:33
@ EGST_BURNING_SKIN
Burning's skin.
Definition: IGUISkin.h:39
const c8 *const GUISkinTypeNames[EGST_COUNT+1]
Names for gui element types.
Definition: IGUISkin.h:49
EGUI_DEFAULT_ICON
Customizable symbols for GUI.
Definition: IGUISkin.h:268
@ EGDI_MORE_DOWN
icon indicating that there is more content below
Definition: IGUISkin.h:306
@ EGDI_CURSOR_LEFT
scroll bar left button
Definition: IGUISkin.h:284
@ EGDI_RADIO_BUTTON_CHECKED
selection dot in a radio button
Definition: IGUISkin.h:298
@ EGDI_SMALL_CURSOR_DOWN
smaller down arrow
Definition: IGUISkin.h:296
@ EGDI_MORE_RIGHT
icon indicating that there is more content to the right
Definition: IGUISkin.h:302
@ EGDI_CURSOR_UP
scroll bar up button
Definition: IGUISkin.h:280
@ EGDI_FILE
file icon for file selection
Definition: IGUISkin.h:313
@ EGDI_CURSOR_RIGHT
scroll bar right button
Definition: IGUISkin.h:286
@ EGDI_COLLAPSE
minus icon for trees
Definition: IGUISkin.h:311
@ EGDI_SMALL_CURSOR_UP
smaller up arrow
Definition: IGUISkin.h:294
@ EGDI_DROP_DOWN
down arrow for dropdown menus
Definition: IGUISkin.h:292
@ EGDI_CURSOR_DOWN
scroll bar down button
Definition: IGUISkin.h:282
@ EGDI_MENU_MORE
icon for menu children
Definition: IGUISkin.h:288
@ EGDI_WINDOW_MAXIMIZE
maximize window button
Definition: IGUISkin.h:270
@ EGDI_WINDOW_RESTORE
restore window button
Definition: IGUISkin.h:272
@ EGDI_MORE_LEFT
<< icon indicating there is more content to the left
Definition: IGUISkin.h:300
@ EGDI_MORE_UP
icon indicating that there is more content above
Definition: IGUISkin.h:304
@ EGDI_EXPAND
plus icon for trees
Definition: IGUISkin.h:308
@ EGDI_WINDOW_CLOSE
close window button
Definition: IGUISkin.h:274
@ EGDI_WINDOW_RESIZE
resize icon for bottom right corner of a window
Definition: IGUISkin.h:278
@ EGDI_WINDOW_MINIMIZE
minimize window button
Definition: IGUISkin.h:276
@ EGDI_CHECK_BOX_CHECKED
tick for checkbox
Definition: IGUISkin.h:290
@ EGDI_DIRECTORY
folder icon for file selection
Definition: IGUISkin.h:315
@ EGDI_COUNT
value not used, it only specifies the number of icons
Definition: IGUISkin.h:318
EGUI_DEFAULT_FONT
Definition: IGUISkin.h:351
@ EGDF_MENU
Font for menu items.
Definition: IGUISkin.h:359
@ EGDF_DEFAULT
For static text, edit boxes, lists and most other places.
Definition: IGUISkin.h:353
@ EGDF_WINDOW
Font for window title bars.
Definition: IGUISkin.h:357
@ EGDF_TOOLTIP
Font for tooltips.
Definition: IGUISkin.h:361
@ EGDF_BUTTON
Font for buttons.
Definition: IGUISkin.h:355
@ EGDF_COUNT
Definition: IGUISkin.h:364
EGUI_DEFAULT_COLOR
Enumeration for skin colors.
Definition: IGUISkin.h:61
@ EGDC_BUTTON_TEXT
Text on a button.
Definition: IGUISkin.h:79
@ EGDC_ICON_HIGH_LIGHT
Selected icons in a list or tree.
Definition: IGUISkin.h:103
@ EGDC_3D_HIGH_LIGHT
Highlight color for three-dimensional display elements (for edges facing the light source....
Definition: IGUISkin.h:69
@ EGDC_APP_WORKSPACE
Background color of multiple document interface (MDI) applications.
Definition: IGUISkin.h:77
@ EGDC_HIGH_LIGHT
Item(s) selected in a control.
Definition: IGUISkin.h:83
@ EGDC_ACTIVE_BORDER
Active window border.
Definition: IGUISkin.h:73
@ EGDC_WINDOW_SYMBOL
Window symbols like on close buttons, scroll bars and check boxes.
Definition: IGUISkin.h:99
@ EGDC_TOOLTIP
Tool tip text color.
Definition: IGUISkin.h:91
@ EGDC_INACTIVE_BORDER
Inactive window border.
Definition: IGUISkin.h:87
@ EGDC_FOCUSED_EDITABLE
Show focus of window background for editable field (editbox or when checkbox-field is pressed)
Definition: IGUISkin.h:111
@ EGDC_HIGH_LIGHT_TEXT
Text of item(s) selected in a control.
Definition: IGUISkin.h:85
@ EGDC_TOOLTIP_BACKGROUND
Tool tip background color.
Definition: IGUISkin.h:93
@ EGDC_SCROLLBAR
Scrollbar gray area.
Definition: IGUISkin.h:95
@ EGDC_GRAY_EDITABLE
Grayed (disabled) window background for editable field (editbox, checkbox-field)
Definition: IGUISkin.h:109
@ EGDC_EDITABLE
Window background for editable field (editbox, checkbox-field)
Definition: IGUISkin.h:107
@ EGDC_ACTIVE_CAPTION
Active window title bar text.
Definition: IGUISkin.h:75
@ EGDC_INACTIVE_CAPTION
Inactive window caption.
Definition: IGUISkin.h:89
@ EGDC_WINDOW
Window background.
Definition: IGUISkin.h:97
@ EGDC_3D_FACE
Face color for three-dimensional display elements and for dialog box backgrounds.
Definition: IGUISkin.h:67
@ EGDC_3D_LIGHT
Light color for three-dimensional display elements (for edges facing the light source....
Definition: IGUISkin.h:71
@ EGDC_GRAY_TEXT
Grayed (disabled) text.
Definition: IGUISkin.h:81
@ EGDC_3D_DARK_SHADOW
Dark shadow for three-dimensional display elements.
Definition: IGUISkin.h:63
@ EGDC_GRAY_WINDOW_SYMBOL
Grayed (disabled) window symbols like on close buttons, scroll bars and check boxes.
Definition: IGUISkin.h:105
@ EGDC_COUNT
Definition: IGUISkin.h:115
@ EGDC_ICON
Icons in a list or tree.
Definition: IGUISkin.h:101
@ EGDC_3D_SHADOW
Shadow color for three-dimensional display elements (for edges facing away from the light source).
Definition: IGUISkin.h:65
const c8 *const GUISkinSizeNames[EGDS_COUNT+1]
Names for default skin sizes.
Definition: IGUISkin.h:202
const c8 *const GUISkinColorNames[EGDC_COUNT+1]
Names for default skin colors.
Definition: IGUISkin.h:119
const c8 *const GUISkinIconNames[EGDI_COUNT+1]
Definition: IGUISkin.h:321
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:13
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
char c8
8 bit character variable.
Definition: irrTypes.h:31
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66