00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __PLGUI_THEME_H__
00024 #define __PLGUI_THEME_H__
00025 #pragma once
00026
00027
00028
00029
00030
00031 #include <PLCore/Base/Object.h>
00032 #include <PLMath/Vector2i.h>
00033 #include <PLGraphics/Color/Color4.h>
00034 #include "PLGui/Gui/Resources/Image.h"
00035 #include "PLGui/Gui/Resources/Font.h"
00036 #include "PLGui/PLGuiDefinitions.h"
00037
00038
00039
00040
00041
00042 namespace PLGraphics {
00043 class Color4;
00044 }
00045 namespace PLGui {
00046 class Gui;
00047 class Graphics;
00048 }
00049
00050
00051
00052
00053
00054 namespace PLGui {
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 class Theme : public PLCore::Object {
00065
00066
00067
00068
00069
00070 pl_class(PLGUI_RTTI_EXPORT, Theme, "PLGui", PLCore::Object, "GUI theme class")
00071 pl_class_end
00072
00073
00074
00075
00076
00077 friend class Gui;
00078
00079
00080
00081
00082
00083 public:
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 PLGUI_API Theme(Gui &cGui, const PLCore::String &sName = "");
00094
00095
00096
00097
00098
00099 PLGUI_API virtual ~Theme();
00100
00101
00102
00103
00104
00105
00106
00107
00108 PLGUI_API Gui *GetGui() const;
00109
00110
00111
00112
00113
00114
00115
00116
00117 PLGUI_API PLCore::String GetName() const;
00118
00119
00120
00121
00122
00123
00124
00125
00126 PLGUI_API const PLGui::Font &GetDefaultFont() const;
00127
00128
00129
00130
00131
00132
00133
00134
00135 PLGUI_API const PLGui::Image &GetDefaultIcon() const;
00136
00137
00138
00139
00140
00141
00142
00143
00144 PLGUI_API int GetWindowBorderSize() const;
00145
00146
00147
00148
00149
00150
00151
00152
00153 PLGUI_API int GetWindowTitleBarHeight() const;
00154
00155
00156
00157
00158
00159
00160
00161
00162 PLGUI_API int GetMenuBarHeight() const;
00163
00164
00165
00166
00167
00168
00169
00170
00171 PLGUI_API PLGraphics::Color4 GetWindowColor() const;
00172
00173
00174
00175
00176
00177
00178
00179
00180 PLGUI_API int GetPanelBorderSize() const;
00181
00182
00183
00184
00185
00186
00187
00188
00189 PLGUI_API PLGraphics::Color4 GetPanelColor() const;
00190
00191
00192
00193
00194
00195
00196
00197
00198 PLGUI_API PLMath::Vector2i GetSysButtonSize() const;
00199
00200
00201
00202
00203
00204 public:
00205
00206 virtual void DrawRect(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, ELineStyle nStyle, const PLGraphics::Color4 &cColor, int nWidth, int nRound = 0) = 0;
00207 virtual void DrawBorder(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EBorderStyle nBorderStyle) = 0;
00208 virtual void DrawFocusRect(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2) = 0;
00209 virtual void DrawSeparator(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation) = 0;
00210 virtual void DrawRule(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation) = 0;
00211
00212
00213 virtual void DrawPanel(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EBorderStyle nBorderStyle) = 0;
00214 virtual void DrawWindow(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, bool bBorder, PLCore::uint32 nWidgetState, const PLCore::String &sTitle, const PLGui::Image &cIcon) = 0;
00215 virtual void DrawSystemButton(Graphics &cGraphics, const PLMath::Vector2i &vPos, ESystemCommand nSystemCommand, PLCore::uint32 nWidgetState) = 0;
00216 virtual void DrawButton(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, const PLCore::String &sTitle, const Image &cImage, PLCore::uint32 nWidgetState) = 0;
00217 virtual void DrawToggleButton(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, const PLCore::String &sTitle, const Image &cImage, PLCore::uint32 nWidgetState, ECheckState nChecked) = 0;
00218 virtual void DrawRadioButton(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, const PLCore::String &sTitle, PLCore::uint32 nWidgetState, ECheckState nChecked) = 0;
00219 virtual void DrawCheckBox(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, const PLCore::String &sTitle, PLCore::uint32 nWidgetState, ECheckState nChecked) = 0;
00220 virtual void DrawTooltip(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, PLCore::uint32 nWidgetState) = 0;
00221 virtual void DrawSlider(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00222 virtual void DrawSliderHandle(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00223 virtual void DrawScrollBar(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00224 virtual void DrawScrollBarPlusButton(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00225 virtual void DrawScrollBarMinusButton(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00226 virtual void DrawScrollBarHandle(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00227 virtual void DrawSplitter(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation) = 0;
00228 virtual void DrawMenuBar(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00229 virtual void DrawPopupMenu(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00230 virtual void DrawMenuItem(Graphics &cGraphics, const PLMath::Vector2i &vPos1, const PLMath::Vector2i &vPos2, const PLCore::String &sTitle, const Image &cImage, bool bDrawArrow, EMenuItemType nType, EOrientation nOrientation, PLCore::uint32 nWidgetState) = 0;
00231
00232
00233
00234
00235
00236 protected:
00237
00238 Gui *m_pGui;
00239 PLCore::String m_sName;
00240
00241
00242 PLGui::Font m_cDefaultFont;
00243 PLGui::Image m_cDefaultIcon;
00244
00245
00246 int m_nWindowBorderSize;
00247 int m_nWindowTitleBarHeight;
00248 int m_nMenuBarHeight;
00249 PLGraphics::Color4 m_cWindowColor;
00250
00251
00252 int m_nPanelBorderSize;
00253 PLGraphics::Color4 m_cPanelColor;
00254
00255
00256 PLMath::Vector2i m_vSysButtonSize;
00257
00258
00259 };
00260
00261
00262
00263
00264
00265 }
00266
00267
00268 #endif // __PLGUI_THEME_H__