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 #ifndef _CEGUIRenderedString_h_
00029 #define _CEGUIRenderedString_h_
00030
00031 #include "CEGUISize.h"
00032 #include <vector>
00033 #include <utility>
00034
00035 #if defined(_MSC_VER)
00036 # pragma warning(push)
00037 # pragma warning(disable : 4251)
00038 #endif
00039
00040
00041 namespace CEGUI
00042 {
00050 class CEGUIEXPORT RenderedString
00051 {
00052 public:
00054 RenderedString();
00055
00057 virtual ~RenderedString();
00058
00095 void draw(const size_t line, GeometryBuffer& buffer, const Vector2& position,
00096 const ColourRect* mod_colours, const Rect* clip_rect,
00097 const float space_extra) const;
00098
00100
00114 Size getPixelSize(const size_t line) const;
00115
00117 void appendComponent(const RenderedStringComponent& component);
00118
00120 void clearComponents();
00121
00123 size_t getComponentCount() const;
00124
00148 void split(const size_t line, float split_point, RenderedString& left);
00149
00151 size_t getSpaceCount(const size_t line) const;
00152
00154 void appendLineBreak();
00155
00157 size_t getLineCount() const;
00158
00160 RenderedString(const RenderedString& other);
00162 RenderedString& operator=(const RenderedString& rhs);
00163
00164 protected:
00166 typedef std::vector<RenderedStringComponent*> ComponentList;
00168 ComponentList d_components;
00170 typedef std::pair<size_t, size_t> LineInfo;
00172 typedef std::vector<LineInfo> LineList;
00174 LineList d_lines;
00176 void cloneComponentList(const ComponentList& list);
00178 static void clearComponentList(ComponentList& list);
00179 };
00180
00181 }
00182
00183 #if defined(_MSC_VER)
00184 # pragma warning(pop)
00185 #endif
00186
00187 #endif // end of guard _CEGUIRenderedString_h_