|
IrrlichtEngine
|
00001 // Copyright (C) 2002-2011 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_GUI_SKIN_H_INCLUDED__ 00006 #define __I_GUI_SKIN_H_INCLUDED__ 00007 00008 #include "IAttributeExchangingObject.h" 00009 #include "EGUIAlignment.h" 00010 #include "SColor.h" 00011 #include "rect.h" 00012 00013 namespace irr 00014 { 00015 namespace gui 00016 { 00017 class IGUIFont; 00018 class IGUISpriteBank; 00019 class IGUIElement; 00020 00022 00030 enum EGUI_SKIN_TYPE 00031 { 00033 EGST_WINDOWS_CLASSIC=0, 00034 00036 EGST_WINDOWS_METALLIC, 00037 00039 EGST_BURNING_SKIN, 00040 00042 EGST_UNKNOWN, 00043 00045 EGST_COUNT 00046 }; 00047 00049 const c8* const GUISkinTypeNames[EGST_COUNT+1] = 00050 { 00051 "windowsClassic", 00052 "windowsMetallic", 00053 "burning", 00054 "unknown", 00055 0, 00056 }; 00057 00058 00060 enum EGUI_DEFAULT_COLOR 00061 { 00063 EGDC_3D_DARK_SHADOW = 0, 00065 EGDC_3D_SHADOW, 00067 EGDC_3D_FACE, 00069 EGDC_3D_HIGH_LIGHT, 00071 EGDC_3D_LIGHT, 00073 EGDC_ACTIVE_BORDER, 00075 EGDC_ACTIVE_CAPTION, 00077 EGDC_APP_WORKSPACE, 00079 EGDC_BUTTON_TEXT, 00081 EGDC_GRAY_TEXT, 00083 EGDC_HIGH_LIGHT, 00085 EGDC_HIGH_LIGHT_TEXT, 00087 EGDC_INACTIVE_BORDER, 00089 EGDC_INACTIVE_CAPTION, 00091 EGDC_TOOLTIP, 00093 EGDC_TOOLTIP_BACKGROUND, 00095 EGDC_SCROLLBAR, 00097 EGDC_WINDOW, 00099 EGDC_WINDOW_SYMBOL, 00101 EGDC_ICON, 00103 EGDC_ICON_HIGH_LIGHT, 00105 EGDC_GRAY_WINDOW_SYMBOL, 00107 EGDC_EDITABLE, 00109 EGDC_GRAY_EDITABLE, 00111 EGDC_FOCUSED_EDITABLE, 00112 00115 EGDC_COUNT 00116 }; 00117 00119 const c8* const GUISkinColorNames[EGDC_COUNT+1] = 00120 { 00121 "3DDarkShadow", 00122 "3DShadow", 00123 "3DFace", 00124 "3DHighlight", 00125 "3DLight", 00126 "ActiveBorder", 00127 "ActiveCaption", 00128 "AppWorkspace", 00129 "ButtonText", 00130 "GrayText", 00131 "Highlight", 00132 "HighlightText", 00133 "InactiveBorder", 00134 "InactiveCaption", 00135 "ToolTip", 00136 "ToolTipBackground", 00137 "ScrollBar", 00138 "Window", 00139 "WindowSymbol", 00140 "Icon", 00141 "IconHighlight", 00142 "GrayWindowSymbol", 00143 "Editable", 00144 "GrayEditable", 00145 "FocusedEditable", 00146 0, 00147 }; 00148 00150 enum EGUI_DEFAULT_SIZE 00151 { 00153 EGDS_SCROLLBAR_SIZE = 0, 00155 EGDS_MENU_HEIGHT, 00157 EGDS_WINDOW_BUTTON_WIDTH, 00159 EGDS_CHECK_BOX_WIDTH, 00161 EGDS_MESSAGE_BOX_WIDTH, 00163 EGDS_MESSAGE_BOX_HEIGHT, 00165 EGDS_BUTTON_WIDTH, 00167 EGDS_BUTTON_HEIGHT, 00169 EGDS_TEXT_DISTANCE_X, 00171 EGDS_TEXT_DISTANCE_Y, 00173 EGDS_TITLEBARTEXT_DISTANCE_X, 00175 EGDS_TITLEBARTEXT_DISTANCE_Y, 00177 EGDS_MESSAGE_BOX_GAP_SPACE, 00179 EGDS_MESSAGE_BOX_MIN_TEXT_WIDTH, 00181 EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH, 00183 EGDS_MESSAGE_BOX_MIN_TEXT_HEIGHT, 00185 EGDS_MESSAGE_BOX_MAX_TEXT_HEIGHT, 00186 00189 EGDS_COUNT 00190 }; 00191 00192 00194 const c8* const GUISkinSizeNames[EGDS_COUNT+1] = 00195 { 00196 "ScrollBarSize", 00197 "MenuHeight", 00198 "WindowButtonWidth", 00199 "CheckBoxWidth", 00200 "MessageBoxWidth", 00201 "MessageBoxHeight", 00202 "ButtonWidth", 00203 "ButtonHeight", 00204 "TextDistanceX", 00205 "TextDistanceY", 00206 "TitleBarTextX", 00207 "TitleBarTextY", 00208 "MessageBoxGapSpace", 00209 "MessageBoxMinTextWidth", 00210 "MessageBoxMaxTextWidth", 00211 "MessageBoxMinTextHeight", 00212 "MessageBoxMaxTextHeight", 00213 0 00214 }; 00215 00216 00217 enum EGUI_DEFAULT_TEXT 00218 { 00220 EGDT_MSG_BOX_OK = 0, 00222 EGDT_MSG_BOX_CANCEL, 00224 EGDT_MSG_BOX_YES, 00226 EGDT_MSG_BOX_NO, 00228 EGDT_WINDOW_CLOSE, 00230 EGDT_WINDOW_MAXIMIZE, 00232 EGDT_WINDOW_MINIMIZE, 00234 EGDT_WINDOW_RESTORE, 00235 00237 EGDT_COUNT 00238 }; 00239 00241 const c8* const GUISkinTextNames[EGDT_COUNT+1] = 00242 { 00243 "MessageBoxOkay", 00244 "MessageBoxCancel", 00245 "MessageBoxYes", 00246 "MessageBoxNo", 00247 "WindowButtonClose", 00248 "WindowButtonMaximize", 00249 "WindowButtonMinimize", 00250 "WindowButtonRestore", 00251 0 00252 }; 00253 00255 enum EGUI_DEFAULT_ICON 00256 { 00258 EGDI_WINDOW_MAXIMIZE = 0, 00260 EGDI_WINDOW_RESTORE, 00262 EGDI_WINDOW_CLOSE, 00264 EGDI_WINDOW_MINIMIZE, 00266 EGDI_WINDOW_RESIZE, 00268 EGDI_CURSOR_UP, 00270 EGDI_CURSOR_DOWN, 00272 EGDI_CURSOR_LEFT, 00274 EGDI_CURSOR_RIGHT, 00276 EGDI_MENU_MORE, 00278 EGDI_CHECK_BOX_CHECKED, 00280 EGDI_DROP_DOWN, 00282 EGDI_SMALL_CURSOR_UP, 00284 EGDI_SMALL_CURSOR_DOWN, 00286 EGDI_RADIO_BUTTON_CHECKED, 00288 EGDI_MORE_LEFT, 00290 EGDI_MORE_RIGHT, 00292 EGDI_MORE_UP, 00294 EGDI_MORE_DOWN, 00296 EGDI_EXPAND, 00297 00299 EGDI_COLLAPSE, 00301 EGDI_FILE, 00303 EGDI_DIRECTORY, 00304 00306 EGDI_COUNT 00307 }; 00308 00309 const c8* const GUISkinIconNames[EGDI_COUNT+1] = 00310 { 00311 "windowMaximize", 00312 "windowRestore", 00313 "windowClose", 00314 "windowMinimize", 00315 "windowResize", 00316 "cursorUp", 00317 "cursorDown", 00318 "cursorLeft", 00319 "cursorRight", 00320 "menuMore", 00321 "checkBoxChecked", 00322 "dropDown", 00323 "smallCursorUp", 00324 "smallCursorDown", 00325 "radioButtonChecked", 00326 "moreLeft", 00327 "moreRight", 00328 "moreUp", 00329 "moreDown", 00330 "expand", 00331 "collapse", 00332 "file", 00333 "directory", 00334 0 00335 }; 00336 00337 // Customizable fonts 00338 enum EGUI_DEFAULT_FONT 00339 { 00341 EGDF_DEFAULT=0, 00343 EGDF_BUTTON, 00345 EGDF_WINDOW, 00347 EGDF_MENU, 00349 EGDF_TOOLTIP, 00352 EGDF_COUNT 00353 }; 00354 00355 const c8* const GUISkinFontNames[EGDF_COUNT+1] = 00356 { 00357 "defaultFont", 00358 "buttonFont", 00359 "windowFont", 00360 "menuFont", 00361 "tooltipFont", 00362 0 00363 }; 00364 00366 class IGUISkin : public virtual io::IAttributeExchangingObject 00367 { 00368 public: 00369 00371 virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0; 00372 00374 virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor) = 0; 00375 00377 virtual s32 getSize(EGUI_DEFAULT_SIZE size) const = 0; 00378 00380 00382 virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const = 0; 00383 00385 00387 virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText) = 0; 00388 00390 virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size) = 0; 00391 00393 virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const = 0; 00394 00396 virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0; 00397 00399 virtual IGUISpriteBank* getSpriteBank() const = 0; 00400 00402 virtual void setSpriteBank(IGUISpriteBank* bank) = 0; 00403 00405 00406 virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const = 0; 00407 00409 00413 virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index) = 0; 00414 00416 00424 virtual void draw3DButtonPaneStandard(IGUIElement* element, 00425 const core::rect<s32>& rect, 00426 const core::rect<s32>* clip=0) = 0; 00427 00429 00437 virtual void draw3DButtonPanePressed(IGUIElement* element, 00438 const core::rect<s32>& rect, 00439 const core::rect<s32>* clip=0) = 0; 00440 00442 00453 virtual void draw3DSunkenPane(IGUIElement* element, 00454 video::SColor bgcolor, bool flat, bool fillBackGround, 00455 const core::rect<s32>& rect, 00456 const core::rect<s32>* clip=0) = 0; 00457 00459 00472 virtual core::rect<s32> draw3DWindowBackground(IGUIElement* element, 00473 bool drawTitleBar, video::SColor titleBarColor, 00474 const core::rect<s32>& rect, 00475 const core::rect<s32>* clip=0, 00476 core::rect<s32>* checkClientArea=0) = 0; 00477 00479 00487 virtual void draw3DMenuPane(IGUIElement* element, 00488 const core::rect<s32>& rect, 00489 const core::rect<s32>* clip=0) = 0; 00490 00492 00498 virtual void draw3DToolBar(IGUIElement* element, 00499 const core::rect<s32>& rect, 00500 const core::rect<s32>* clip=0) = 0; 00501 00503 00511 virtual void draw3DTabButton(IGUIElement* element, bool active, 00512 const core::rect<s32>& rect, const core::rect<s32>* clip=0, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT) = 0; 00513 00515 00524 virtual void draw3DTabBody(IGUIElement* element, bool border, bool background, 00525 const core::rect<s32>& rect, const core::rect<s32>* clip=0, s32 tabHeight=-1, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT ) = 0; 00526 00528 00537 virtual void drawIcon(IGUIElement* element, EGUI_DEFAULT_ICON icon, 00538 const core::position2di position, u32 starttime=0, u32 currenttime=0, 00539 bool loop=false, const core::rect<s32>* clip=0) = 0; 00540 00542 00550 virtual void draw2DRectangle(IGUIElement* element, const video::SColor &color, 00551 const core::rect<s32>& pos, const core::rect<s32>* clip = 0) = 0; 00552 00554 virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; } 00555 }; 00556 00557 00558 } // end namespace gui 00559 } // end namespace irr 00560 00561 #endif 00562