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 _CEGUIRenderingSurface_h_
00029 #define _CEGUIRenderingSurface_h_
00030
00031 #include "CEGUIEventSet.h"
00032 #include "CEGUIEventArgs.h"
00033 #include "CEGUIRenderQueue.h"
00034
00035 #if defined(_MSC_VER)
00036 # pragma warning(push)
00037 # pragma warning(disable : 4251)
00038 #endif
00039
00040
00041
00042 namespace CEGUI
00043 {
00044
00046 enum RenderQueueID
00047 {
00048 RQ_USER_0,
00050 RQ_UNDERLAY,
00051 RQ_USER_1,
00053 RQ_BASE,
00054 RQ_USER_2,
00056 RQ_CONTENT_1,
00057 RQ_USER_3,
00059 RQ_CONTENT_2,
00060 RQ_USER_4,
00062 RQ_OVERLAY,
00063 RQ_USER_5
00064 };
00065
00066
00067
00074 class CEGUIEXPORT RenderQueueEventArgs : public EventArgs
00075 {
00076 public:
00085 RenderQueueEventArgs(const RenderQueueID id);
00086
00088 RenderQueueID queueID;
00089 };
00090
00091
00092
00109 class CEGUIEXPORT RenderingSurface : public EventSet
00110 {
00111 public:
00113 static const String EventNamespace;
00115 static const String EventRenderQueueStarted;
00117 static const String EventRenderQueueEnded;
00118
00136 RenderingSurface(RenderTarget& target);
00137
00139 virtual ~RenderingSurface();
00140
00161 void addGeometryBuffer(const RenderQueueID queue,
00162 const GeometryBuffer& buffer);
00163
00175 void removeGeometryBuffer(const RenderQueueID queue,
00176 const GeometryBuffer& buffer);
00177
00190 void clearGeometry(const RenderQueueID queue);
00191
00200 void clearGeometry();
00201
00212 virtual void draw();
00213
00226 virtual void invalidate();
00227
00243 bool isInvalidated() const;
00244
00254 virtual bool isRenderingWindow() const;
00255
00278 virtual RenderingWindow& createRenderingWindow(TextureTarget& target);
00279
00293 virtual void destroyRenderingWindow(RenderingWindow& window);
00294
00296
00306 virtual void transferRenderingWindow(RenderingWindow& window);
00307
00317 const RenderTarget& getRenderTarget() const;
00318 RenderTarget& getRenderTarget();
00319
00320 protected:
00322 void draw(const RenderQueue& queue, RenderQueueEventArgs& args);
00323
00325 void detatchWindow(RenderingWindow& w);
00326
00328 void attachWindow(RenderingWindow& w);
00329
00331 typedef std::map<RenderQueueID, RenderQueue> RenderQueueList;
00333 typedef std::vector<RenderingWindow*> RenderingWindowList;
00335 RenderQueueList d_queues;
00337 RenderingWindowList d_windows;
00339 RenderTarget& d_target;
00341 bool d_invalidated;
00342 };
00343
00344 }
00345
00346 #if defined(_MSC_VER)
00347 # pragma warning(pop)
00348 #endif
00349
00350 #endif // end of guard _CEGUIRenderingSurface_h_