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 _CEGUIRenderCache_h_
00029 #define _CEGUIRenderCache_h_
00030
00031 #include "CEGUIVector.h"
00032 #include "CEGUIRect.h"
00033 #include "CEGUIImage.h"
00034 #include "CEGUIFont.h"
00035 #include <vector>
00036
00037
00038 #if defined(_MSC_VER)
00039 # pragma warning(push)
00040 # pragma warning(disable : 4251)
00041 #endif
00042
00043
00044
00045 namespace CEGUI
00046 {
00063 class CEGUIEXPORT RenderCache
00064 {
00065 public:
00070 RenderCache();
00071
00076 ~RenderCache();
00077
00086 bool hasCachedImagery() const;
00087
00104 void render(const Point& basePos, float baseZ, const Rect& clipper);
00105
00110 void clearCachedImagery();
00111
00133 void cacheImage(const Image& image, const Rect& destArea, float zOffset, const ColourRect& cols, const Rect* clipper = 0, bool clipToDisplay = false);
00134
00162 void cacheText(const String& text, Font* font, TextFormatting format, const Rect& destArea, float zOffset, const ColourRect& cols, const Rect* clipper = 0, bool clipToDisplay = false);
00163
00164 private:
00169 struct ImageInfo
00170 {
00171 const Image* source_image;
00172 Rect target_area;
00173 float z_offset;
00174 ColourRect colours;
00175 Rect customClipper;
00176 bool usingCustomClipper;
00177 bool clipToDisplay;
00178 };
00179
00184 struct TextInfo
00185 {
00186 String text;
00187 Font* source_font;
00188 TextFormatting formatting;
00189 Rect target_area;
00190 float z_offset;
00191 ColourRect colours;
00192 Rect customClipper;
00193 bool usingCustomClipper;
00194 bool clipToDisplay;
00195 };
00196
00197 typedef std::vector<ImageInfo> ImageryList;
00198 typedef std::vector<TextInfo> TextList;
00199
00200 ImageryList d_cachedImages;
00201 TextList d_cachedTexts;
00202 };
00203
00204 }
00205
00206
00207 #if defined(_MSC_VER)
00208 # pragma warning(pop)
00209 #endif
00210
00211
00212 #endif // end of guard _CEGUIRenderCache_h_