00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00034
00035 #pragma once
00036
00037 #include "api_gui.h"
00038 #include "../Core/System/sharedptr.h"
00039
00040 class CL_GUIThemePart;
00041 class CL_GraphicContext;
00042 class CL_ResourceManager;
00043 class CL_GUIComponent;
00044 class CL_Colorf;
00045 class CL_Size;
00046 class CL_Rect;
00047 class CL_Font;
00048 class CL_GUITheme_Impl;
00049 class CL_GUIThemeProvider;
00050
00054 class CL_API_GUI CL_GUITheme
00055 {
00058
00059 public:
00063 CL_GUITheme(CL_GUIThemeProvider *provider);
00064
00068 CL_GUITheme(const CL_GUITheme ©);
00069
00070 ~CL_GUITheme();
00071
00075
00076 public:
00077
00081 bool is_null();
00082
00084 CL_GUIThemeProvider *get_provider() const;
00085
00093 CL_StringRef get_property(
00094 const CL_GUIThemePart &part,
00095 const CL_StringRef &name,
00096 const CL_StringRef &css_value);
00097
00099 CL_ResourceManager get_resources() const;
00100
00104
00105 public:
00107 void set_resources(CL_ResourceManager resources);
00108
00110 void render_box(
00111 CL_GraphicContext &gc,
00112 CL_GUIThemePart &part,
00113 const CL_Rect &rect,
00114 const CL_Rect &clip_rect);
00115
00116 CL_Rect render_text(
00117 CL_GraphicContext &gc,
00118 CL_GUIThemePart &part,
00119 CL_Font &font,
00120 const CL_StringRef &text,
00121 const CL_Rect &content_rect,
00122 const CL_Rect &clip_rect);
00123
00126
00127
00128 void component_destroyed(CL_GUIComponent *component);
00129
00133
00134 private:
00135 CL_SharedPtr<CL_GUITheme_Impl> impl;
00137 };
00138