The exact commands to make this commit were: git reset --hard origin/master find -type f | # list all regular files grep -E '\.(h|cpp|fsh|vsh|mm)|LICENSE$' | # filter for text files xargs -n 1 -P $(nproc) sed -i 's:\s*$::' # for each file, trim trailing whitespace including the CR git commit -a
		
			
				
	
	
		
			581 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			581 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (C) 2002-2012 Nikolaus Gebhardt
 | |
| // This file is part of the "Irrlicht Engine".
 | |
| // For conditions of distribution and use, see copyright notice in irrlicht.h
 | |
| 
 | |
| #ifndef __I_GUI_SKIN_H_INCLUDED__
 | |
| #define __I_GUI_SKIN_H_INCLUDED__
 | |
| 
 | |
| #include "IReferenceCounted.h"
 | |
| #include "EGUIAlignment.h"
 | |
| #include "SColor.h"
 | |
| #include "rect.h"
 | |
| 
 | |
| namespace irr
 | |
| {
 | |
| namespace gui
 | |
| {
 | |
| 	class IGUIFont;
 | |
| 	class IGUISpriteBank;
 | |
| 	class IGUIElement;
 | |
| 
 | |
| 	//! Enumeration of available default skins.
 | |
| 	/** To set one of the skins, use the following code, for example to set
 | |
| 	the Windows classic skin:
 | |
| 	\code
 | |
| 	gui::IGUISkin* newskin = environment->createSkin(gui::EGST_WINDOWS_CLASSIC);
 | |
| 	environment->setSkin(newskin);
 | |
| 	newskin->drop();
 | |
| 	\endcode
 | |
| 	*/
 | |
| 	enum EGUI_SKIN_TYPE
 | |
| 	{
 | |
| 		//! Default windows look and feel
 | |
| 		EGST_WINDOWS_CLASSIC=0,
 | |
| 
 | |
| 		//! Like EGST_WINDOWS_CLASSIC, but with metallic shaded windows and buttons
 | |
| 		EGST_WINDOWS_METALLIC,
 | |
| 
 | |
| 		//! Burning's skin
 | |
| 		EGST_BURNING_SKIN,
 | |
| 
 | |
| 		//! An unknown skin, not serializable at present
 | |
| 		EGST_UNKNOWN,
 | |
| 
 | |
| 		//! this value is not used, it only specifies the number of skin types
 | |
| 		EGST_COUNT
 | |
| 	};
 | |
| 
 | |
| 	//! Names for gui element types
 | |
| 	const c8* const GUISkinTypeNames[EGST_COUNT+1] =
 | |
| 	{
 | |
| 		"windowsClassic",
 | |
| 		"windowsMetallic",
 | |
| 		"burning",
 | |
| 		"unknown",
 | |
| 		0,
 | |
| 	};
 | |
| 
 | |
| 
 | |
| 	//! Enumeration for skin colors
 | |
| 	enum EGUI_DEFAULT_COLOR
 | |
| 	{
 | |
| 		//! Dark shadow for three-dimensional display elements.
 | |
| 		EGDC_3D_DARK_SHADOW = 0,
 | |
| 		//! Shadow color for three-dimensional display elements (for edges facing away from the light source).
 | |
| 		EGDC_3D_SHADOW,
 | |
| 		//! Face color for three-dimensional display elements and for dialog box backgrounds.
 | |
| 		EGDC_3D_FACE,
 | |
| 		//! Highlight color for three-dimensional display elements (for edges facing the light source.)
 | |
| 		EGDC_3D_HIGH_LIGHT,
 | |
| 		//! Light color for three-dimensional display elements (for edges facing the light source.)
 | |
| 		EGDC_3D_LIGHT,
 | |
| 		//! Active window border.
 | |
| 		EGDC_ACTIVE_BORDER,
 | |
| 		//! Active window title bar text.
 | |
| 		EGDC_ACTIVE_CAPTION,
 | |
| 		//! Background color of multiple document interface (MDI) applications.
 | |
| 		EGDC_APP_WORKSPACE,
 | |
| 		//! Text on a button
 | |
| 		EGDC_BUTTON_TEXT,
 | |
| 		//! Grayed (disabled) text.
 | |
| 		EGDC_GRAY_TEXT,
 | |
| 		//! Item(s) selected in a control.
 | |
| 		EGDC_HIGH_LIGHT,
 | |
| 		//! Text of item(s) selected in a control.
 | |
| 		EGDC_HIGH_LIGHT_TEXT,
 | |
| 		//! Inactive window border.
 | |
| 		EGDC_INACTIVE_BORDER,
 | |
| 		//! Inactive window caption.
 | |
| 		EGDC_INACTIVE_CAPTION,
 | |
| 		//! Tool tip text color
 | |
| 		EGDC_TOOLTIP,
 | |
| 		//! Tool tip background color
 | |
| 		EGDC_TOOLTIP_BACKGROUND,
 | |
| 		//! Scrollbar gray area
 | |
| 		EGDC_SCROLLBAR,
 | |
| 		//! Window background
 | |
| 		EGDC_WINDOW,
 | |
| 		//! Window symbols like on close buttons, scroll bars and check boxes
 | |
| 		EGDC_WINDOW_SYMBOL,
 | |
| 		//! Icons in a list or tree
 | |
| 		EGDC_ICON,
 | |
| 		//! Selected icons in a list or tree
 | |
| 		EGDC_ICON_HIGH_LIGHT,
 | |
| 		//! Grayed (disabled) window symbols like on close buttons, scroll bars and check boxes
 | |
| 		EGDC_GRAY_WINDOW_SYMBOL,
 | |
| 		//! Window background for editable field (editbox, checkbox-field)
 | |
| 		EGDC_EDITABLE,
 | |
| 		//! Grayed (disabled) window background for editable field (editbox, checkbox-field)
 | |
| 		EGDC_GRAY_EDITABLE,
 | |
| 		//! Show focus of window background for editable field (editbox or when checkbox-field is pressed)
 | |
| 		EGDC_FOCUSED_EDITABLE,
 | |
| 
 | |
| 		//! this value is not used, it only specifies the amount of default colors
 | |
| 		//! available.
 | |
| 		EGDC_COUNT
 | |
| 	};
 | |
| 
 | |
| 	//! Names for default skin colors
 | |
| 	const c8* const GUISkinColorNames[EGDC_COUNT+1] =
 | |
| 	{
 | |
| 		"3DDarkShadow",
 | |
| 		"3DShadow",
 | |
| 		"3DFace",
 | |
| 		"3DHighlight",
 | |
| 		"3DLight",
 | |
| 		"ActiveBorder",
 | |
| 		"ActiveCaption",
 | |
| 		"AppWorkspace",
 | |
| 		"ButtonText",
 | |
| 		"GrayText",
 | |
| 		"Highlight",
 | |
| 		"HighlightText",
 | |
| 		"InactiveBorder",
 | |
| 		"InactiveCaption",
 | |
| 		"ToolTip",
 | |
| 		"ToolTipBackground",
 | |
| 		"ScrollBar",
 | |
| 		"Window",
 | |
| 		"WindowSymbol",
 | |
| 		"Icon",
 | |
| 		"IconHighlight",
 | |
| 		"GrayWindowSymbol",
 | |
| 		"Editable",
 | |
| 		"GrayEditable",
 | |
| 		"FocusedEditable",
 | |
| 		0,
 | |
| 	};
 | |
| 
 | |
| 	//! Enumeration for default sizes.
 | |
| 	enum EGUI_DEFAULT_SIZE
 | |
| 	{
 | |
| 		//! default with / height of scrollbar. Also width of drop-down button in comboboxes.
 | |
| 		EGDS_SCROLLBAR_SIZE = 0,
 | |
| 		//! height of menu
 | |
| 		EGDS_MENU_HEIGHT,
 | |
| 		//! width and height of a window titlebar button (like minimize/maximize/close buttons). The titlebar height is also calculated from that.
 | |
| 		EGDS_WINDOW_BUTTON_WIDTH,
 | |
| 		//! width of a checkbox check
 | |
| 		EGDS_CHECK_BOX_WIDTH,
 | |
| 		//! \deprecated This may be removed by Irrlicht 1.9
 | |
| 		EGDS_MESSAGE_BOX_WIDTH,
 | |
| 		//! \deprecated This may be removed by Irrlicht 1.9
 | |
| 		EGDS_MESSAGE_BOX_HEIGHT,
 | |
| 		//! width of a default button
 | |
| 		EGDS_BUTTON_WIDTH,
 | |
| 		//! height of a default button (OK and cancel buttons)
 | |
| 		EGDS_BUTTON_HEIGHT,
 | |
| 		//! distance for text from background
 | |
| 		EGDS_TEXT_DISTANCE_X,
 | |
| 		//! distance for text from background
 | |
| 		EGDS_TEXT_DISTANCE_Y,
 | |
| 		//! distance for text in the title bar, from the left of the window rect
 | |
| 		EGDS_TITLEBARTEXT_DISTANCE_X,
 | |
| 		//! distance for text in the title bar, from the top of the window rect
 | |
| 		EGDS_TITLEBARTEXT_DISTANCE_Y,
 | |
| 		//! free space in a messagebox between borders and contents on all sides
 | |
| 		EGDS_MESSAGE_BOX_GAP_SPACE,
 | |
| 		//! minimal space to reserve for messagebox text-width
 | |
| 		EGDS_MESSAGE_BOX_MIN_TEXT_WIDTH,
 | |
| 		//! maximal space to reserve for messagebox text-width
 | |
| 		EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH,
 | |
| 		//! minimal space to reserve for messagebox text-height
 | |
| 		EGDS_MESSAGE_BOX_MIN_TEXT_HEIGHT,
 | |
| 		//! maximal space to reserve for messagebox text-height
 | |
| 		EGDS_MESSAGE_BOX_MAX_TEXT_HEIGHT,
 | |
| 		//! pixels to move an unscaled button image to the right when a button is pressed and the unpressed image looks identical
 | |
| 		EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X,
 | |
| 		//! pixels to move an unscaled button image down when a button is pressed  and the unpressed image looks identical
 | |
| 		EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y,
 | |
| 		//! pixels to move the button text to the right when a button is pressed
 | |
| 		EGDS_BUTTON_PRESSED_TEXT_OFFSET_X,
 | |
| 		//! pixels to move the button text down when a button is pressed
 | |
| 		EGDS_BUTTON_PRESSED_TEXT_OFFSET_Y,
 | |
| 		//! pixels to move an unscaled button sprite to the right when a button is pressed
 | |
| 		EGDS_BUTTON_PRESSED_SPRITE_OFFSET_X,
 | |
| 		//! pixels to move an unscaled button sprite down when a button is pressed
 | |
| 		EGDS_BUTTON_PRESSED_SPRITE_OFFSET_Y,
 | |
| 
 | |
| 		//! this value is not used, it only specifies the amount of default sizes
 | |
| 		//! available.
 | |
| 		EGDS_COUNT
 | |
| 	};
 | |
| 
 | |
| 
 | |
| 	//! Names for default skin sizes
 | |
| 	const c8* const GUISkinSizeNames[EGDS_COUNT+1] =
 | |
| 	{
 | |
| 		"ScrollBarSize",
 | |
| 		"MenuHeight",
 | |
| 		"WindowButtonWidth",
 | |
| 		"CheckBoxWidth",
 | |
| 		"MessageBoxWidth",
 | |
| 		"MessageBoxHeight",
 | |
| 		"ButtonWidth",
 | |
| 		"ButtonHeight",
 | |
| 		"TextDistanceX",
 | |
| 		"TextDistanceY",
 | |
| 		"TitleBarTextX",
 | |
| 		"TitleBarTextY",
 | |
| 		"MessageBoxGapSpace",
 | |
| 		"MessageBoxMinTextWidth",
 | |
| 		"MessageBoxMaxTextWidth",
 | |
| 		"MessageBoxMinTextHeight",
 | |
| 		"MessageBoxMaxTextHeight",
 | |
| 		"ButtonPressedImageOffsetX",
 | |
| 		"ButtonPressedImageOffsetY",
 | |
| 		"ButtonPressedTextOffsetX",
 | |
| 		"ButtonPressedTextOffsetY",
 | |
| 		"ButtonPressedSpriteOffsetX",
 | |
| 		"ButtonPressedSpriteOffsetY",
 | |
| 		0
 | |
| 	};
 | |
| 
 | |
| 
 | |
| 	enum EGUI_DEFAULT_TEXT
 | |
| 	{
 | |
| 		//! Text for the OK button on a message box
 | |
| 		EGDT_MSG_BOX_OK = 0,
 | |
| 		//! Text for the Cancel button on a message box
 | |
| 		EGDT_MSG_BOX_CANCEL,
 | |
| 		//! Text for the Yes button on a message box
 | |
| 		EGDT_MSG_BOX_YES,
 | |
| 		//! Text for the No button on a message box
 | |
| 		EGDT_MSG_BOX_NO,
 | |
| 		//! Tooltip text for window close button
 | |
| 		EGDT_WINDOW_CLOSE,
 | |
| 		//! Tooltip text for window maximize button
 | |
| 		EGDT_WINDOW_MAXIMIZE,
 | |
| 		//! Tooltip text for window minimize button
 | |
| 		EGDT_WINDOW_MINIMIZE,
 | |
| 		//! Tooltip text for window restore button
 | |
| 		EGDT_WINDOW_RESTORE,
 | |
| 
 | |
| 		//! this value is not used, it only specifies the number of default texts
 | |
| 		EGDT_COUNT
 | |
| 	};
 | |
| 
 | |
| 	//! Names for default skin sizes
 | |
| 	const c8* const GUISkinTextNames[EGDT_COUNT+1] =
 | |
| 	{
 | |
| 		"MessageBoxOkay",
 | |
| 		"MessageBoxCancel",
 | |
| 		"MessageBoxYes",
 | |
| 		"MessageBoxNo",
 | |
| 		"WindowButtonClose",
 | |
| 		"WindowButtonMaximize",
 | |
| 		"WindowButtonMinimize",
 | |
| 		"WindowButtonRestore",
 | |
| 		0
 | |
| 	};
 | |
| 
 | |
| 	//! Customizable symbols for GUI
 | |
| 	enum EGUI_DEFAULT_ICON
 | |
| 	{
 | |
| 		//! maximize window button
 | |
| 		EGDI_WINDOW_MAXIMIZE = 0,
 | |
| 		//! restore window button
 | |
| 		EGDI_WINDOW_RESTORE,
 | |
| 		//! close window button
 | |
| 		EGDI_WINDOW_CLOSE,
 | |
| 		//! minimize window button
 | |
| 		EGDI_WINDOW_MINIMIZE,
 | |
| 		//! resize icon for bottom right corner of a window
 | |
| 		EGDI_WINDOW_RESIZE,
 | |
| 		//! scroll bar up button
 | |
| 		EGDI_CURSOR_UP,
 | |
| 		//! scroll bar down button
 | |
| 		EGDI_CURSOR_DOWN,
 | |
| 		//! scroll bar left button
 | |
| 		EGDI_CURSOR_LEFT,
 | |
| 		//! scroll bar right button
 | |
| 		EGDI_CURSOR_RIGHT,
 | |
| 		//! icon for menu children
 | |
| 		EGDI_MENU_MORE,
 | |
| 		//! tick for checkbox
 | |
| 		EGDI_CHECK_BOX_CHECKED,
 | |
| 		//! down arrow for dropdown menus
 | |
| 		EGDI_DROP_DOWN,
 | |
| 		//! smaller up arrow
 | |
| 		EGDI_SMALL_CURSOR_UP,
 | |
| 		//! smaller down arrow
 | |
| 		EGDI_SMALL_CURSOR_DOWN,
 | |
| 		//! selection dot in a radio button
 | |
| 		EGDI_RADIO_BUTTON_CHECKED,
 | |
| 		//! << icon indicating there is more content to the left
 | |
| 		EGDI_MORE_LEFT,
 | |
| 		//! >> icon indicating that there is more content to the right
 | |
| 		EGDI_MORE_RIGHT,
 | |
| 		//! icon indicating that there is more content above
 | |
| 		EGDI_MORE_UP,
 | |
| 		//! icon indicating that there is more content below
 | |
| 		EGDI_MORE_DOWN,
 | |
| 		//! plus icon for trees
 | |
| 		EGDI_EXPAND,
 | |
| 
 | |
| 		//! minus icon for trees
 | |
| 		EGDI_COLLAPSE,
 | |
| 		//! file icon for file selection
 | |
| 		EGDI_FILE,
 | |
| 		//! folder icon for file selection
 | |
| 		EGDI_DIRECTORY,
 | |
| 
 | |
| 		//! value not used, it only specifies the number of icons
 | |
| 		EGDI_COUNT
 | |
| 	};
 | |
| 
 | |
| 	const c8* const GUISkinIconNames[EGDI_COUNT+1] =
 | |
| 	{
 | |
| 		"windowMaximize",
 | |
| 		"windowRestore",
 | |
| 		"windowClose",
 | |
| 		"windowMinimize",
 | |
| 		"windowResize",
 | |
| 		"cursorUp",
 | |
| 		"cursorDown",
 | |
| 		"cursorLeft",
 | |
| 		"cursorRight",
 | |
| 		"menuMore",
 | |
| 		"checkBoxChecked",
 | |
| 		"dropDown",
 | |
| 		"smallCursorUp",
 | |
| 		"smallCursorDown",
 | |
| 		"radioButtonChecked",
 | |
| 		"moreLeft",
 | |
| 		"moreRight",
 | |
| 		"moreUp",
 | |
| 		"moreDown",
 | |
| 		"expand",
 | |
| 		"collapse",
 | |
| 		"file",
 | |
| 		"directory",
 | |
| 		0
 | |
| 	};
 | |
| 
 | |
| 	// Customizable fonts
 | |
| 	enum EGUI_DEFAULT_FONT
 | |
| 	{
 | |
| 		//! For static text, edit boxes, lists and most other places
 | |
| 		EGDF_DEFAULT=0,
 | |
| 		//! Font for buttons
 | |
| 		EGDF_BUTTON,
 | |
| 		//! Font for window title bars
 | |
| 		EGDF_WINDOW,
 | |
| 		//! Font for menu items
 | |
| 		EGDF_MENU,
 | |
| 		//! Font for tooltips
 | |
| 		EGDF_TOOLTIP,
 | |
| 		//! this value is not used, it only specifies the amount of default fonts
 | |
| 		//! available.
 | |
| 		EGDF_COUNT
 | |
| 	};
 | |
| 
 | |
| 	const c8* const GUISkinFontNames[EGDF_COUNT+1] =
 | |
| 	{
 | |
| 		"defaultFont",
 | |
| 		"buttonFont",
 | |
| 		"windowFont",
 | |
| 		"menuFont",
 | |
| 		"tooltipFont",
 | |
| 		0
 | |
| 	};
 | |
| 
 | |
| 	//! A skin modifies the look of the GUI elements.
 | |
| 	class IGUISkin : virtual public IReferenceCounted
 | |
| 	{
 | |
| 	public:
 | |
| 
 | |
| 		//! returns default color
 | |
| 		virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0;
 | |
| 
 | |
| 		//! sets a default color
 | |
| 		virtual void setColor(EGUI_DEFAULT_COLOR which, video::SColor newColor) = 0;
 | |
| 
 | |
| 		//! returns size for the given size type
 | |
| 		virtual s32 getSize(EGUI_DEFAULT_SIZE size) const = 0;
 | |
| 
 | |
| 		//! Returns a default text.
 | |
| 		/** For example for Message box button captions:
 | |
| 		"OK", "Cancel", "Yes", "No" and so on. */
 | |
| 		virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const = 0;
 | |
| 
 | |
| 		//! Sets a default text.
 | |
| 		/** For example for Message box button captions:
 | |
| 		"OK", "Cancel", "Yes", "No" and so on. */
 | |
| 		virtual void setDefaultText(EGUI_DEFAULT_TEXT which, const wchar_t* newText) = 0;
 | |
| 
 | |
| 		//! sets a default size
 | |
| 		virtual void setSize(EGUI_DEFAULT_SIZE which, s32 size) = 0;
 | |
| 
 | |
| 		//! returns the default font
 | |
| 		virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const = 0;
 | |
| 
 | |
| 		//! sets a default font
 | |
| 		virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0;
 | |
| 
 | |
| 		//! returns the sprite bank
 | |
| 		virtual IGUISpriteBank* getSpriteBank() const = 0;
 | |
| 
 | |
| 		//! sets the sprite bank
 | |
| 		virtual void setSpriteBank(IGUISpriteBank* bank) = 0;
 | |
| 
 | |
| 		//! Returns a default icon
 | |
| 		/** Returns the sprite index within the sprite bank */
 | |
| 		virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const = 0;
 | |
| 
 | |
| 		//! Sets a default icon
 | |
| 		/** Sets the sprite index used for drawing icons like arrows,
 | |
| 		close buttons and ticks in checkboxes
 | |
| 		\param icon: Enum specifying which icon to change
 | |
| 		\param index: The sprite index used to draw this icon */
 | |
| 		virtual void setIcon(EGUI_DEFAULT_ICON icon, u32 index) = 0;
 | |
| 
 | |
| 		//! draws a standard 3d button pane
 | |
| 		/** Used for drawing for example buttons in normal state.
 | |
| 		It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and
 | |
| 		EGDC_3D_FACE for this. See EGUI_DEFAULT_COLOR for details.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area. */
 | |
| 		virtual void draw3DButtonPaneStandard(IGUIElement* element,
 | |
| 			const core::rect<s32>& rect,
 | |
| 			const core::rect<s32>* clip=0) = 0;
 | |
| 
 | |
| 		//! draws a pressed 3d button pane
 | |
| 		/** Used for drawing for example buttons in pressed state.
 | |
| 		It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and
 | |
| 		EGDC_3D_FACE for this. See EGUI_DEFAULT_COLOR for details.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area. */
 | |
| 		virtual void draw3DButtonPanePressed(IGUIElement* element,
 | |
| 			const core::rect<s32>& rect,
 | |
| 			const core::rect<s32>* clip=0) = 0;
 | |
| 
 | |
| 		//! draws a sunken 3d pane
 | |
| 		/** Used for drawing the background of edit, combo or check boxes.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param bgcolor: Background color.
 | |
| 		\param flat: Specifies if the sunken pane should be flat or displayed as sunken
 | |
| 		deep into the ground.
 | |
| 		\param fillBackGround: Specifies if the background should be filled with the background
 | |
| 		color or not be drawn at all.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area. */
 | |
| 		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 window background
 | |
| 		/** Used for drawing the background of dialogs and windows.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param titleBarColor: Title color.
 | |
| 		\param drawTitleBar: True to enable title drawing.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area.
 | |
| 		\param checkClientArea: When set to non-null the function will not draw anything,
 | |
| 		but will instead return the clientArea which can be used for drawing by the calling window.
 | |
| 		That is the area without borders and without titlebar.
 | |
| 		\return Returns rect where it would be good to draw title bar text. This will
 | |
| 		work even when checkClientArea is set to a non-null value.*/
 | |
| 		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 standard 3d menu pane
 | |
| 		/** Used for drawing for menus and context menus.
 | |
| 		It uses the colors EGDC_3D_DARK_SHADOW, EGDC_3D_HIGH_LIGHT, EGDC_3D_SHADOW and
 | |
| 		EGDC_3D_FACE for this. See EGUI_DEFAULT_COLOR for details.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area. */
 | |
| 		virtual void draw3DMenuPane(IGUIElement* element,
 | |
| 			const core::rect<s32>& rect,
 | |
| 			const core::rect<s32>* clip=0) = 0;
 | |
| 
 | |
| 		//! draws a standard 3d tool bar
 | |
| 		/** Used for drawing for toolbars and menus.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area. */
 | |
| 		virtual void draw3DToolBar(IGUIElement* element,
 | |
| 			const core::rect<s32>& rect,
 | |
| 			const core::rect<s32>* clip=0) = 0;
 | |
| 
 | |
| 		//! draws a tab button
 | |
| 		/** Used for drawing for tab buttons on top of tabs.
 | |
| 		\param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param active: Specifies if the tab is currently active.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area.
 | |
| 		\param alignment Alignment of GUI element. */
 | |
| 		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 control body
 | |
| 		/** \param element: Pointer to the element which wishes to draw this. This parameter
 | |
| 		is usually not used by IGUISkin, but can be used for example by more complex
 | |
| 		implementations to find out how to draw the part exactly.
 | |
| 		\param border: Specifies if the border should be drawn.
 | |
| 		\param background: Specifies if the background should be drawn.
 | |
| 		\param rect: Defining area where to draw.
 | |
| 		\param clip: Clip area.
 | |
| 		\param tabHeight Height of tab.
 | |
| 		\param alignment Alignment of GUI element. */
 | |
| 		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 an icon, usually from the skin's sprite bank
 | |
| 		/** \param element: Pointer to the element which wishes to draw this icon.
 | |
| 		This parameter is usually not used by IGUISkin, but can be used for example
 | |
| 		by more complex implementations to find out how to draw the part exactly.
 | |
| 		\param icon: Specifies the icon to be drawn.
 | |
| 		\param position: The position to draw the icon
 | |
| 		\param starttime: The time at the start of the animation
 | |
| 		\param currenttime: The present time, used to calculate the frame number
 | |
| 		\param loop: Whether the animation should loop or not
 | |
| 		\param clip: Clip area. */
 | |
| 		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 a 2d rectangle.
 | |
| 		/** \param element: Pointer to the element which wishes to draw this icon.
 | |
| 		This parameter is usually not used by IGUISkin, but can be used for example
 | |
| 		by more complex implementations to find out how to draw the part exactly.
 | |
| 		\param color: Color of the rectangle to draw. The alpha component specifies how
 | |
| 		transparent the rectangle will be.
 | |
| 		\param pos: Position of the rectangle.
 | |
| 		\param clip: Pointer to rectangle against which the rectangle will be clipped.
 | |
| 		If the pointer is null, no clipping will be performed. */
 | |
| 		virtual void draw2DRectangle(IGUIElement* element, const video::SColor &color,
 | |
| 			const core::rect<s32>& pos, const core::rect<s32>* clip = 0) = 0;
 | |
| 
 | |
| 		//! get the type of this skin
 | |
| 		virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; }
 | |
| 	};
 | |
| 
 | |
| 
 | |
| } // end namespace gui
 | |
| } // end namespace irr
 | |
| 
 | |
| #endif
 | |
| 
 |