00001
00002
00003
00004
00005 #ifndef __I_GUI_SKIN_H_INCLUDED__
00006 #define __I_GUI_SKIN_H_INCLUDED__
00007
00008 #include "IAttributeExchangingObject.h"
00009 #include "SColor.h"
00010 #include "rect.h"
00011
00012 namespace irr
00013 {
00014 namespace gui
00015 {
00016 class IGUIFont;
00017 class IGUISpriteBank;
00018 class IGUIElement;
00019
00021
00029 enum EGUI_SKIN_TYPE
00030 {
00032 EGST_WINDOWS_CLASSIC=0,
00034 EGST_WINDOWS_METALLIC,
00036 EGST_BURNING_SKIN,
00037
00039 EGST_UNKNOWN
00040 };
00041
00043 const c8* const GUISkinTypeNames[] =
00044 {
00045 "windowsClassic",
00046 "windowsMetallic",
00047 "burning",
00048 "unknown",
00049 0,
00050 };
00051
00052
00054 enum EGUI_DEFAULT_COLOR
00055 {
00057 EGDC_3D_DARK_SHADOW = 0,
00059 EGDC_3D_SHADOW,
00061 EGDC_3D_FACE,
00063 EGDC_3D_HIGH_LIGHT,
00065 EGDC_3D_LIGHT,
00067 EGDC_ACTIVE_BORDER,
00069 EGDC_ACTIVE_CAPTION,
00071 EGDC_APP_WORKSPACE,
00073 EGDC_BUTTON_TEXT,
00075 EGDC_GRAY_TEXT,
00077 EGDC_HIGH_LIGHT,
00079 EGDC_HIGH_LIGHT_TEXT,
00081 EGDC_INACTIVE_BORDER,
00083 EGDC_INACTIVE_CAPTION,
00085 EGDC_TOOLTIP,
00087 EGDC_TOOLTIP_BACKGROUND,
00089 EGDC_SCROLLBAR,
00091 EGDC_WINDOW,
00093 EGDC_WINDOW_SYMBOL,
00095 EGDC_ICON,
00097 EGDC_ICON_HIGH_LIGHT,
00100 EGDC_COUNT
00101 };
00102
00104 const c8* const GUISkinColorNames[] =
00105 {
00106 "3DDarkShadow",
00107 "3DShadow",
00108 "3DFace",
00109 "3DHighlight",
00110 "3DLight",
00111 "ActiveBorder",
00112 "ActiveCaption",
00113 "AppWorkspace",
00114 "ButtonText",
00115 "GrayText",
00116 "Highlight",
00117 "HighlightText",
00118 "InactiveBorder",
00119 "InactiveCaption",
00120 "ToolTip",
00121 "ToolTipBackground",
00122 "ScrollBar",
00123 "Window",
00124 "WindowSymbol",
00125 "Icon",
00126 "IconHighlight",
00127 0,
00128 };
00129
00131 enum EGUI_DEFAULT_SIZE
00132 {
00134 EGDS_SCROLLBAR_SIZE = 0,
00136 EGDS_MENU_HEIGHT,
00138 EGDS_WINDOW_BUTTON_WIDTH,
00140 EGDS_CHECK_BOX_WIDTH,
00142 EGDS_MESSAGE_BOX_WIDTH,
00144 EGDS_MESSAGE_BOX_HEIGHT,
00146 EGDS_BUTTON_WIDTH,
00148 EGDS_BUTTON_HEIGHT,
00150 EGDS_TEXT_DISTANCE_X,
00152 EGDS_TEXT_DISTANCE_Y,
00155 EGDS_COUNT
00156 };
00157
00158
00160 const c8* const GUISkinSizeNames[] =
00161 {
00162 "ScrollBarSize",
00163 "MenuHeight",
00164 "WindowButtonWidth",
00165 "CheckBoxWidth",
00166 "MessageBoxWidth",
00167 "MessageBoxHeight",
00168 "ButtonWidth",
00169 "ButtonHeight",
00170 "TextDistanceX",
00171 "TextDistanceY",
00172 0,
00173 };
00174
00175
00176 enum EGUI_DEFAULT_TEXT
00177 {
00179 EGDT_MSG_BOX_OK = 0,
00181 EGDT_MSG_BOX_CANCEL,
00183 EGDT_MSG_BOX_YES,
00185 EGDT_MSG_BOX_NO,
00187 EGDT_WINDOW_CLOSE,
00189 EGDT_WINDOW_MAXIMIZE,
00191 EGDT_WINDOW_MINIMIZE,
00193 EGDT_WINDOW_RESTORE,
00194
00196 EGDT_COUNT
00197 };
00198
00200 const c8* const GUISkinTextNames[] =
00201 {
00202 "MessageBoxOkay",
00203 "MessageBoxCancel",
00204 "MessageBoxYes",
00205 "MessageBoxNo",
00206 "WindowButtonClose",
00207 "WindowButtonMaximize",
00208 "WindowButtonMinimize",
00209 "WindowButtonRestore",
00210 0,
00211 };
00212
00214 enum EGUI_DEFAULT_ICON
00215 {
00217 EGDI_WINDOW_MAXIMIZE = 0,
00219 EGDI_WINDOW_RESTORE,
00221 EGDI_WINDOW_CLOSE,
00223 EGDI_WINDOW_MINIMIZE,
00225 EGDI_WINDOW_RESIZE,
00227 EGDI_CURSOR_UP,
00229 EGDI_CURSOR_DOWN,
00231 EGDI_CURSOR_LEFT,
00233 EGDI_CURSOR_RIGHT,
00235 EGDI_MENU_MORE,
00237 EGDI_CHECK_BOX_CHECKED,
00239 EGDI_DROP_DOWN,
00241 EGDI_SMALL_CURSOR_UP,
00243 EGDI_SMALL_CURSOR_DOWN,
00245 EGDI_RADIO_BUTTON_CHECKED,
00247 EGDI_MORE_LEFT,
00249 EGDI_MORE_RIGHT,
00251 EGDI_MORE_UP,
00253 EGDI_MORE_DOWN,
00255 EGDI_EXPAND,
00257 EGDI_COLLAPSE,
00259 EGDI_FILE,
00261 EGDI_DIRECTORY,
00262
00264 EGDI_COUNT
00265 };
00266
00267 const c8* const GUISkinIconNames[] =
00268 {
00269 "windowMaximize",
00270 "windowRestore",
00271 "windowClose",
00272 "windowMinimize",
00273 "windowResize",
00274 "cursorUp",
00275 "cursorDown",
00276 "cursorLeft",
00277 "cursorRight",
00278 "menuMore",
00279 "checkBoxChecked",
00280 "dropDown",
00281 "smallCursorUp",
00282 "smallCursorDown",
00283 "radioButtonChecked",
00284 "moreLeft",
00285 "moreRight",
00286 "moreUp",
00287 "moreDown",
00288 "expand",
00289 "collapse",
00290 "file",
00291 "directory",
00292 0
00293 };
00294
00295
00296 enum EGUI_DEFAULT_FONT
00297 {
00299 EGDF_DEFAULT=0,
00301 EGDF_BUTTON,
00303 EGDF_WINDOW,
00305 EGDF_MENU,
00307 EGDF_TOOLTIP,
00310 EGDF_COUNT
00311 };
00312
00313 const c8* const GUISkinFontNames[] =
00314 {
00315 "defaultFont",
00316 "buttonFont",
00317 "windowFont",
00318 "menuFont",
00319 "tooltipFont",
00320 0
00321 };
00322
00324 class IGUISkin : public virtual io::IAttributeExchangingObject
00325 {
00326 public:
00327
00329 virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0;
00330
00332 virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor) = 0;
00333
00335 virtual s32 getSize(EGUI_DEFAULT_SIZE size) const = 0;
00336
00338
00340 virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const = 0;
00341
00343
00345 virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText) = 0;
00346
00348 virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size) = 0;
00349
00351 virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const = 0;
00352
00354 virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0;
00355
00357 virtual IGUISpriteBank* getSpriteBank() const = 0;
00358
00360 virtual void setSpriteBank(IGUISpriteBank* bank) = 0;
00361
00363
00364 virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const = 0;
00365
00367
00371 virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index) = 0;
00372
00374
00382 virtual void draw3DButtonPaneStandard(IGUIElement* element,
00383 const core::rect<s32>& rect,
00384 const core::rect<s32>* clip=0) = 0;
00385
00387
00395 virtual void draw3DButtonPanePressed(IGUIElement* element,
00396 const core::rect<s32>& rect,
00397 const core::rect<s32>* clip=0) = 0;
00398
00400
00411 virtual void draw3DSunkenPane(IGUIElement* element,
00412 video::SColor bgcolor, bool flat, bool fillBackGround,
00413 const core::rect<s32>& rect,
00414 const core::rect<s32>* clip=0) = 0;
00415
00417
00426 virtual core::rect<s32> draw3DWindowBackground(IGUIElement* element,
00427 bool drawTitleBar, video::SColor titleBarColor,
00428 const core::rect<s32>& rect,
00429 const core::rect<s32>* clip=0) = 0;
00430
00432
00440 virtual void draw3DMenuPane(IGUIElement* element,
00441 const core::rect<s32>& rect,
00442 const core::rect<s32>* clip=0) = 0;
00443
00445
00451 virtual void draw3DToolBar(IGUIElement* element,
00452 const core::rect<s32>& rect,
00453 const core::rect<s32>* clip=0) = 0;
00454
00456
00463 virtual void draw3DTabButton(IGUIElement* element, bool active,
00464 const core::rect<s32>& rect, const core::rect<s32>* clip=0) = 0;
00465
00467
00474 virtual void draw3DTabBody(IGUIElement* element, bool border, bool background,
00475 const core::rect<s32>& rect, const core::rect<s32>* clip=0) = 0;
00476
00478
00487 virtual void drawIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon,
00488 const core::position2di position, u32 starttime=0, u32 currenttime=0,
00489 bool loop=false, const core::rect<s32>* clip=0) = 0;
00490
00492
00500 virtual void draw2DRectangle(IGUIElement* element, const video::SColor &color,
00501 const core::rect<s32>& pos, const core::rect<s32>* clip = 0) = 0;
00502
00504 virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; }
00505 };
00506
00507
00508 }
00509 }
00510
00511 #endif
00512