Go to the documentation of this file.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
00032
00033 #pragma once
00034
00035 #include "api_gui.h"
00036 #include "../Core/System/sharedptr.h"
00037
00038 class CL_Size;
00039 class CL_Rect;
00040 class CL_GraphicContext;
00041 class CL_Font;
00042
00043 class CL_GUIComponent;
00044 class CL_GUIThemePartProperty;
00045 class CL_GUITheme;
00046 class CL_GUIThemePart_Impl;
00047
00051 class CL_API_GUI CL_GUIThemePart
00052 {
00055 public:
00057 CL_GUIThemePart();
00058
00059 CL_GUIThemePart(
00060 CL_GUIComponent *component,
00061 const CL_StringRef &relative_element_name = CL_StringRef());
00062
00063 ~CL_GUIThemePart();
00064
00068 public:
00070 CL_StringRef get_element_name() const;
00071
00073 bool get_state(const CL_StringRef &name) const;
00074
00076 CL_StringRef get_property(const CL_GUIThemePartProperty &property) const;
00077
00079 int get_property_int(const CL_GUIThemePartProperty &property) const;
00080
00084 CL_GUIComponent *get_component() const;
00085
00087 CL_Rect get_content_box(const CL_Rect &render_box_rect) const;
00088
00090 CL_Rect get_content_shrink_box() const;
00091
00093 CL_Rect get_render_box(const CL_Rect &content_box_rect) const;
00094
00096 CL_Size get_minimum_size() const;
00097
00099 int get_minimum_width() const;
00100
00102 int get_minimum_height() const;
00103
00105 CL_Size get_maximum_size() const;
00106
00108 int get_maximum_width() const;
00109
00111 int get_maximum_height() const;
00112
00114 CL_Size get_preferred_size() const;
00115
00117 int get_preferred_width() const;
00118
00120 int get_preferred_height() const;
00121
00123 CL_Font get_font() const;
00124
00126 CL_Size get_text_size(CL_GraphicContext &gc, const CL_StringRef &str) const;
00127
00131 public:
00133 bool set_state(const CL_StringRef &name, bool flag);
00134
00140 void render_box(CL_GraphicContext &gc, const CL_Rect &rect, const CL_Rect &clip_rect);
00141
00142 CL_Rect render_text(
00143 CL_GraphicContext &gc,
00144 const CL_StringRef &text,
00145 const CL_Rect &content_rect,
00146 const CL_Rect &clip_rect);
00147
00148 struct VerticalTextPosition
00149 {
00150 float top;
00151 float baseline;
00152 float bottom;
00153 };
00154
00156 VerticalTextPosition get_vertical_text_align(CL_GraphicContext &gc, CL_Font &font, const CL_Rect &content_rect);
00157
00161 private:
00162 CL_SharedPtr<CL_GUIThemePart_Impl> impl;
00163
00164 friend class CL_GUIThemePartProperty_Impl;
00166 };