Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
RenderingSurface.h
1/***********************************************************************
2 created: Mon Jan 12 2009
3 author: Paul D Turner
4*************************************************************************/
5/***************************************************************************
6 * Copyright (C) 2004 - 2011 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27#ifndef _CEGUIRenderingSurface_h_
28#define _CEGUIRenderingSurface_h_
29
30#include "CEGUI/EventSet.h"
31#include "CEGUI/EventArgs.h"
32#include "CEGUI/RenderQueue.h"
33
34#if defined(_MSC_VER)
35# pragma warning(push)
36# pragma warning(disable : 4251)
37#endif
38
39
40// Start of CEGUI namespace section
41namespace CEGUI
42{
43//----------------------------------------------------------------------------//
46{
47 RQ_USER_0,
50 RQ_USER_1,
53 RQ_USER_2,
56 RQ_USER_3,
59 RQ_USER_4,
62 RQ_USER_5
63};
64
65//----------------------------------------------------------------------------//
66
73class CEGUIEXPORT RenderQueueEventArgs : public EventArgs
74{
75public:
85
88};
89
90//----------------------------------------------------------------------------//
91
108class CEGUIEXPORT RenderingSurface :
109 public EventSet,
110 public AllocatedObject<RenderingSurface>
111{
112public:
114 static const String EventNamespace;
130
149
152
174 const GeometryBuffer& buffer);
175
188 const GeometryBuffer& buffer);
189
202 void clearGeometry(const RenderQueueID queue);
203
213
224 virtual void draw();
225
238 virtual void invalidate();
239
255 bool isInvalidated() const;
256
266 virtual bool isRenderingWindow() const;
267
291
306
308
319
330 RenderTarget& getRenderTarget();
331
332protected:
336 virtual void drawContent();
337
339 void draw(const RenderQueue& queue, RenderQueueEventArgs& args);
340
343
346
348 typedef std::map<RenderQueueID, RenderQueue, std::less<RenderQueueID>
351 typedef std::vector<RenderingWindow*
361};
362
363} // End of CEGUI namespace section
364
365#if defined(_MSC_VER)
366# pragma warning(pop)
367#endif
368
369#endif // end of guard _CEGUIRenderingSurface_h_
Definition MemoryAllocatedObject.h:110
Base class used as the argument to all subscribers Event object.
Definition EventArgs.h:51
Interface providing event signaling and handling.
Definition EventSet.h:167
Abstract class defining the interface for objects that buffer geometry for later rendering.
Definition GeometryBuffer.h:44
EventArgs based class that is passed to handlers subcribed to hear about begin/end events on renderin...
Definition RenderingSurface.h:74
RenderQueueID queueID
ID of the queue that this event has been fired for.
Definition RenderingSurface.h:87
RenderQueueEventArgs(const RenderQueueID id)
Constructor for RenderQueueEventArgs objects.
Class that represents a queue of GeometryBuffer objects to be rendered.
Definition RenderQueue.h:54
Defines interface to some surface that can be rendered to. Concrete instances of objects that impleme...
Definition RenderTarget.h:60
Class that represents a surface that can have geometry based imagery drawn to it.
Definition RenderingSurface.h:111
static const String EventNamespace
Namespace for global events from RenderingSurface objects.
Definition RenderingSurface.h:114
virtual ~RenderingSurface()
Destructor for RenderingSurface objects.
virtual void destroyRenderingWindow(RenderingWindow &window)
Destroy a RenderingWindow we own. If we are not the present owner of the given RenderingWindow,...
void clearGeometry(const RenderQueueID queue)
Clears all GeometryBuffers from the specified rendering queue.
std::vector< RenderingWindow *CEGUI_VECTOR_ALLOC(RenderingWindow *)> RenderingWindowList
collection type for created RenderingWindow objects
Definition RenderingSurface.h:352
RenderQueueList d_queues
the collection of RenderQueue objects.
Definition RenderingSurface.h:354
void draw(const RenderQueue &queue, RenderQueueEventArgs &args)
draw a rendering queue, firing events before and after.
RenderingSurface(RenderTarget &target)
Constructor for RenderingSurface objects.
virtual RenderingWindow & createRenderingWindow(TextureTarget &target)
Create and return a reference to a child RenderingWindow object that will render back onto this Rende...
virtual void transferRenderingWindow(RenderingWindow &window)
transfer ownership of the RenderingWindow to this RenderingSurface.
virtual void invalidate()
Marks the RenderingSurface as invalid, causing the geometry to be rerendered to the RenderTarget next...
RenderingWindowList d_windows
collection of RenderingWindow object we own
Definition RenderingSurface.h:356
void detatchWindow(RenderingWindow &w)
detatch ReneringWindow from this RenderingSurface
bool isInvalidated() const
Return whether this RenderingSurface is invalidated.
void attachWindow(RenderingWindow &w)
attach ReneringWindow from this RenderingSurface
const RenderTarget & getRenderTarget() const
Return the RenderTarget object that this RenderingSurface is drawing to.
void removeGeometryBuffer(const RenderQueueID queue, const GeometryBuffer &buffer)
Remove the specified GeometryBuffer from the specified queue.
void addGeometryBuffer(const RenderQueueID queue, const GeometryBuffer &buffer)
Add the specified GeometryBuffer to the specified queue for rendering when the RenderingSurface is dr...
RenderTarget * d_target
RenderTarget that this surface actually draws to.
Definition RenderingSurface.h:358
static const String EventRenderQueueStarted
Definition RenderingSurface.h:122
virtual void draw()
Draw the GeometryBuffers for all rendering queues to the RenderTarget that this RenderingSurface is t...
bool d_invalidated
holds invalidated state of target (as far as we are concerned)
Definition RenderingSurface.h:360
void clearGeometry()
Clears all GeometryBuffers from all rendering queues.
std::map< RenderQueueID, RenderQueue, std::less< RenderQueueID > CEGUI_MAP_ALLOC(RenderQueueID, RenderQueue)> RenderQueueList
collection type for the queues
Definition RenderingSurface.h:349
virtual bool isRenderingWindow() const
Return whether this RenderingSurface is actually an instance of the RenderingWindow subclass.
static const String EventRenderQueueEnded
Definition RenderingSurface.h:129
virtual void drawContent()
RenderingWindow is a RenderingSurface that can be "drawn back" onto another RenderingSurface and is p...
Definition RenderingWindow.h:51
String class used within the GUI system.
Definition String.h:64
Specialisation of RenderTarget interface that should be used as the base class for RenderTargets that...
Definition TextureTarget.h:41
Main namespace for Crazy Eddie's GUI Library.
Definition arch_overview.dox:1
RenderQueueID
Enumerated type for valid render queue IDs.
Definition RenderingSurface.h:46
@ RQ_BASE
Queue for base level rendering by the surface owner.
Definition RenderingSurface.h:52
@ RQ_CONTENT_1
Queue for first level of 'content' rendering.
Definition RenderingSurface.h:55
@ RQ_CONTENT_2
Queue for second level of 'content' rendering.
Definition RenderingSurface.h:58
@ RQ_UNDERLAY
Queue for rendering that appears beneath base imagery.
Definition RenderingSurface.h:49
@ RQ_OVERLAY
Queue for overlay rendering that appears above other regular rendering.
Definition RenderingSurface.h:61