Crazy Eddie's GUI System  0.8.4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
CEGUI::RenderingWindow Class Reference

RenderingWindow is a RenderingSurface that can be "drawn back" onto another RenderingSurface and is primarily intended to be used as a kind of cache for rendered imagery. More...

+ Inheritance diagram for CEGUI::RenderingWindow:
+ Collaboration diagram for CEGUI::RenderingWindow:

Public Member Functions

 RenderingWindow (TextureTarget &target, RenderingSurface &owner)
 Constructor for RenderingWindow objects. More...
 
 ~RenderingWindow ()
 Destructor for RenderingWindow objects.
 
void setClippingRegion (const Rectf &region)
 Set the clipping region that will be used when rendering the imagery for this RenderingWindow back onto the RenderingSurface that owns it. More...
 
void setPosition (const Vector2f &position)
 Set the two dimensional position of the RenderingWindow in pixels. The origin is at the top-left corner. More...
 
void setSize (const Sizef &size)
 Set the size of the RenderingWindow in pixels. More...
 
void setRotation (const Quaternion &rotation)
 Set the rotation quaternion to be used when rendering the RenderingWindow back onto it's owning RenderingSurface. More...
 
void setPivot (const Vector3f &pivot)
 Set the location of the pivot point around which the RenderingWindow will be rotated. More...
 
const Vector2fgetPosition () const
 Return the current pixel position of the RenderingWindow. The origin is at the top-left corner. More...
 
const SizefgetSize () const
 Return the current size of the RenderingWindow in pixels. More...
 
const QuaterniongetRotation () const
 Return the current rotation being applied to the RenderingWindow. More...
 
const Vector3fgetPivot () const
 Return the rotation pivot point location for the RenderingWindow. More...
 
const TextureTargetgetTextureTarget () const
 Return the TextureTarget object that is the target for content rendered to this RenderingWindows. This is the same object passed into the constructor. More...
 
TextureTargetgetTextureTarget ()
 
void update (const float elapsed)
 Peform time based updated for the RenderingWindow. More...
 
void setRenderEffect (RenderEffect *effect)
 Set the RenderEffect that should be used with the RenderingWindow. This may be 0 to remove a previously set RenderEffect. More...
 
RenderEffectgetRenderEffect ()
 Return a pointer to the RenderEffect currently being used with the RenderingWindow. A return value of 0 indicates that no RenderEffect is being used. More...
 
void realiseGeometry ()
 generate geometry to be used when rendering back the RenderingWindow to it's owning RenderingSurface. More...
 
void invalidateGeometry ()
 Mark the geometry used when rendering the RenderingWindow back to it's owning RenderingSurface as invalid so that it gets regenerated on the next rendering pass. More...
 
const RenderingSurfacegetOwner () const
 Return the RenderingSurface that owns the RenderingWindow. This is also the RenderingSurface that will be used when the RenderingWindow renders back it's cached imagery content. More...
 
RenderingSurfacegetOwner ()
 
void unprojectPoint (const Vector2f &p_in, Vector2f &p_out)
 Fill in Vector2 object p_out with an unprojected version of the point described by Vector2 p_in.
 
void draw ()
 Draw the GeometryBuffers for all rendering queues to the RenderTarget that this RenderingSurface is targetting. More...
 
void invalidate ()
 Marks the RenderingSurface as invalid, causing the geometry to be rerendered to the RenderTarget next time draw is called. More...
 
bool isRenderingWindow () const
 Return whether this RenderingSurface is actually an instance of the RenderingWindow subclass. More...
 
- Public Member Functions inherited from CEGUI::RenderingSurface
 RenderingSurface (RenderTarget &target)
 Constructor for RenderingSurface objects. More...
 
virtual ~RenderingSurface ()
 Destructor for RenderingSurface objects.
 
void addGeometryBuffer (const RenderQueueID queue, const GeometryBuffer &buffer)
 Add the specified GeometryBuffer to the specified queue for rendering when the RenderingSurface is drawn. More...
 
void removeGeometryBuffer (const RenderQueueID queue, const GeometryBuffer &buffer)
 Remove the specified GeometryBuffer from the specified queue. More...
 
void clearGeometry (const RenderQueueID queue)
 Clears all GeometryBuffers from the specified rendering queue. More...
 
void clearGeometry ()
 Clears all GeometryBuffers from all rendering queues. More...
 
bool isInvalidated () const
 Return whether this RenderingSurface is invalidated. More...
 
virtual RenderingWindowcreateRenderingWindow (TextureTarget &target)
 Create and return a reference to a child RenderingWindow object that will render back onto this RenderingSurface when it's draw member function is called. More...
 
virtual void destroyRenderingWindow (RenderingWindow &window)
 Destroy a RenderingWindow we own. If we are not the present owner of the given RenderingWindow, nothing happens. More...
 
virtual void transferRenderingWindow (RenderingWindow &window)
 transfer ownership of the RenderingWindow to this RenderingSurface. More...
 
const RenderTargetgetRenderTarget () const
 Return the RenderTarget object that this RenderingSurface is drawing to. More...
 
RenderTargetgetRenderTarget ()
 
- Public Member Functions inherited from CEGUI::EventSet
 EventSet ()
 Constructor for EventSet objects.
 
virtual ~EventSet (void)
 Destructor for EventSet objects.
 
void addEvent (const String &name)
 Creates a new Event object with the given name and adds it to the EventSet. More...
 
void addEvent (Event &event)
 Adds the given Event object to the EventSet. Ownership of the object passes to EventSet and it will be deleted when it is removed from the EventSet - whether explicitly via removeEvent or when the EventSet is destroyed. More...
 
void removeEvent (const String &name)
 Removes the Event with the given name. All connections to the event are disconnected, and the underlying Event object is destroyed. More...
 
void removeEvent (Event &event)
 Removes the given event from the EventSet. All connections to the event are disconnected, and the event object is destroyed. More...
 
void removeAllEvents (void)
 Remove all Event objects from the EventSet. Add connections will be disconnected, and all Event objects destroyed.
 
bool isEventPresent (const String &name)
 Checks to see if an Event with the given name is present in this EventSet. More...
 
virtual Event::Connection subscribeEvent (const String &name, Event::Subscriber subscriber)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
virtual Event::Connection subscribeEvent (const String &name, Event::Group group, Event::Subscriber subscriber)
 Subscribes a handler to the specified group of the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
template<typename Arg1 , typename Arg2 >
Event::Connection subscribeEvent (const String &name, Arg1 arg1, Arg2 arg2)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
template<typename Arg1 , typename Arg2 >
Event::Connection subscribeEvent (const String &name, Event::Group group, Arg1 arg1, Arg2 arg2)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
virtual Event::Connection subscribeScriptedEvent (const String &name, const String &subscriber_name)
 Subscribes the named Event to a scripted funtion. More...
 
virtual Event::Connection subscribeScriptedEvent (const String &name, Event::Group group, const String &subscriber_name)
 Subscribes the specified group of the named Event to a scripted funtion. More...
 
virtual void fireEvent (const String &name, EventArgs &args, const String &eventNamespace="")
 Fires the named event passing the given EventArgs object. More...
 
bool isMuted (void) const
 Return whether the EventSet is muted or not. More...
 
void setMutedState (bool setting)
 Set the mute state for this EventSet. More...
 
EventgetEventObject (const String &name, bool autoAdd=false)
 Return a pointer to the Event object with the given name, optionally adding such an Event object to the EventSet if it does not already exist. More...
 
EventIterator getEventIterator (void) const
 Return a EventSet::EventIterator object to iterate over the events currently added to the EventSet.
 

Protected Member Functions

virtual void realiseGeometry_impl ()
 default generates geometry to draw window as a single quad.
 
void setOwner (RenderingSurface &owner)
 set a new owner for this RenderingWindow object
 
- Protected Member Functions inherited from CEGUI::RenderingSurface
virtual void drawContent ()
 
void draw (const RenderQueue &queue, RenderQueueEventArgs &args)
 draw a rendering queue, firing events before and after.
 
void detatchWindow (RenderingWindow &w)
 detatch ReneringWindow from this RenderingSurface
 
void attachWindow (RenderingWindow &w)
 attach ReneringWindow from this RenderingSurface
 
- Protected Member Functions inherited from CEGUI::EventSet
void fireEvent_impl (const String &name, EventArgs &args)
 Implementation event firing member.
 
ScriptModulegetScriptModule () const
 Helper to return the script module pointer or throw.
 
 EventSet (EventSet &)
 
EventSetoperator= (EventSet &)
 

Protected Attributes

Rendererd_renderer
 holds ref to renderer
 
TextureTargetd_textarget
 TextureTarget to draw to. Like d_target in base, but avoiding downcasts.
 
RenderingSurfaced_owner
 RenderingSurface that owns this object, we render back to this object.
 
GeometryBufferd_geometry
 GeometryBuffer that holds geometry for drawing this window.
 
bool d_geometryValid
 indicates whether data in GeometryBuffer is up-to-date
 
Vector2f d_position
 Position of this RenderingWindow.
 
Sizef d_size
 Size of this RenderingWindow.
 
Quaternion d_rotation
 Rotation for this RenderingWindow.
 
Vector3f d_pivot
 Pivot point used for the rotation.
 
- Protected Attributes inherited from CEGUI::RenderingSurface
RenderQueueList d_queues
 the collection of RenderQueue objects.
 
RenderingWindowList d_windows
 collection of RenderingWindow object we own
 
RenderTargetd_target
 RenderTarget that this surface actually draws to.
 
bool d_invalidated
 holds invalidated state of target (as far as we are concerned)
 
- Protected Attributes inherited from CEGUI::EventSet
EventMap d_events
 
bool d_muted
 true if events for this EventSet have been muted.
 

Friends

void RenderingSurface::transferRenderingWindow (RenderingWindow &)
 

Additional Inherited Members

- Public Types inherited from CEGUI::EventSet
typedef ConstMapIterator
< EventMap > 
EventIterator
 
- Static Public Attributes inherited from CEGUI::RenderingSurface
static const String EventNamespace
 Namespace for global events from RenderingSurface objects.
 
static const String EventRenderQueueStarted
 
static const String EventRenderQueueEnded
 
- Protected Types inherited from CEGUI::RenderingSurface
typedef std::map
< RenderQueueID, RenderQueue
RenderQueueList
 collection type for the queues
 
typedef std::vector
< RenderingWindow
*CEGUI_VECTOR_ALLOC(RenderingWindow *)> 
RenderingWindowList
 collection type for created RenderingWindow objects
 

Detailed Description

RenderingWindow is a RenderingSurface that can be "drawn back" onto another RenderingSurface and is primarily intended to be used as a kind of cache for rendered imagery.

Constructor & Destructor Documentation

CEGUI::RenderingWindow::RenderingWindow ( TextureTarget target,
RenderingSurface owner 
)

Constructor for RenderingWindow objects.

Parameters
targetThe TextureTarget based object that will be used as the target for content rendering done by the RenderingWindow.
ownerThe RenderingSurface object that will be our initial owner. This RenderingSurface is also the target where our cached imagery will be rendered back to.
Note
The TextureTarget target remains under it's original ownership, and the RenderingSurface owner actually owns this object.

Member Function Documentation

void CEGUI::RenderingWindow::draw ( )
virtual

Draw the GeometryBuffers for all rendering queues to the RenderTarget that this RenderingSurface is targetting.

The GeometryBuffers remain in the rendering queues after the draw operation is complete. This allows the next draw operation to occur without needing to requeue all the GeometryBuffers (if for instance the sequence of buffers to be drawn remains unchanged).

Reimplemented from CEGUI::RenderingSurface.

const RenderingSurface& CEGUI::RenderingWindow::getOwner ( ) const

Return the RenderingSurface that owns the RenderingWindow. This is also the RenderingSurface that will be used when the RenderingWindow renders back it's cached imagery content.

Returns
RenderingSurface object that owns, and is targetted by, the RenderingWindow.
const Vector3f& CEGUI::RenderingWindow::getPivot ( ) const

Return the rotation pivot point location for the RenderingWindow.

Returns
Vector3 object describing the current location of the pivot point used when rotating the RenderingWindow.
const Vector2f& CEGUI::RenderingWindow::getPosition ( ) const

Return the current pixel position of the RenderingWindow. The origin is at the top-left corner.

Returns
Vector2 object describing the pixel position of the RenderingWindow.
Note
This position is an absolute pixel location relative to the screen or other root surface. It is not relative to the owner of the RenderingWindow.
RenderEffect* CEGUI::RenderingWindow::getRenderEffect ( )

Return a pointer to the RenderEffect currently being used with the RenderingWindow. A return value of 0 indicates that no RenderEffect is being used.

Returns
Pointer to the RenderEffect used with this RenderingWindow, or 0 for none.
const Quaternion& CEGUI::RenderingWindow::getRotation ( ) const

Return the current rotation being applied to the RenderingWindow.

Returns
Quaternion object describing the rotation for the RenderingWindow.
const Sizef& CEGUI::RenderingWindow::getSize ( ) const

Return the current size of the RenderingWindow in pixels.

Returns
Size object describing the current pixel size of the RenderingWindow.
const TextureTarget& CEGUI::RenderingWindow::getTextureTarget ( ) const

Return the TextureTarget object that is the target for content rendered to this RenderingWindows. This is the same object passed into the constructor.

Returns
The TextureTarget object that receives the rendered output resulting from geometry queued to this RenderingWindow.
void CEGUI::RenderingWindow::invalidate ( )
virtual

Marks the RenderingSurface as invalid, causing the geometry to be rerendered to the RenderTarget next time draw is called.

Note that some surface types can never be in a 'valid' state and so rerendering occurs whenever draw is called. This function mainly exists as a means to hint to other surface types - those that physically cache the rendered output - that geometry content has changed and the cached imagery should be cleared and redrawn.

Reimplemented from CEGUI::RenderingSurface.

void CEGUI::RenderingWindow::invalidateGeometry ( )

Mark the geometry used when rendering the RenderingWindow back to it's owning RenderingSurface as invalid so that it gets regenerated on the next rendering pass.

This is separate from the main invalidate() function because in most cases invalidating the cached imagery will not require the potentially expensive regeneration of the geometry for the RenderingWindow itself.

bool CEGUI::RenderingWindow::isRenderingWindow ( ) const
virtual

Return whether this RenderingSurface is actually an instance of the RenderingWindow subclass.

Returns

Reimplemented from CEGUI::RenderingSurface.

void CEGUI::RenderingWindow::realiseGeometry ( )

generate geometry to be used when rendering back the RenderingWindow to it's owning RenderingSurface.

Note
In normal usage you should never have to call this directly. There may be certain cases where it might be useful to call this when using the RenderEffect system.
void CEGUI::RenderingWindow::setClippingRegion ( const Rectf region)

Set the clipping region that will be used when rendering the imagery for this RenderingWindow back onto the RenderingSurface that owns it.

Note
This is not the clipping region used when rendering the queued geometry onto the RenderingWindow, that still uses whatever regions are set on the queued GeometryBuffer objects.
Parameters
regionRect object describing a rectangular clipping region.
Note
The region should be described as absolute pixel locations relative to the screen or other root surface. The region should not be described relative to the owner of the RenderingWindow.
void CEGUI::RenderingWindow::setPivot ( const Vector3f pivot)

Set the location of the pivot point around which the RenderingWindow will be rotated.

Parameters
pivotVector3 describing the three dimensional point around which the RenderingWindow will be rotated.
void CEGUI::RenderingWindow::setPosition ( const Vector2f position)

Set the two dimensional position of the RenderingWindow in pixels. The origin is at the top-left corner.

Parameters
positionVector2 object describing the desired location of the RenderingWindow, in pixels.
Note
This position is an absolute pixel location relative to the screen or other root surface. It is not relative to the owner of the RenderingWindow.
void CEGUI::RenderingWindow::setRenderEffect ( RenderEffect effect)

Set the RenderEffect that should be used with the RenderingWindow. This may be 0 to remove a previously set RenderEffect.

Note
Ownership of the RenderEffect does not change; the RenderingWindow will not delete a RenderEffect assigned to it when the RenderingWindow is destroyed.
void CEGUI::RenderingWindow::setRotation ( const Quaternion rotation)

Set the rotation quaternion to be used when rendering the RenderingWindow back onto it's owning RenderingSurface.

Parameters
rotationQuaternion object describing the rotation.
void CEGUI::RenderingWindow::setSize ( const Sizef size)

Set the size of the RenderingWindow in pixels.

Parameters
sizeSize object that describes the desired size of the RenderingWindow, in pixels.
void CEGUI::RenderingWindow::update ( const float  elapsed)

Peform time based updated for the RenderingWindow.

Note
Currently this really only has meaning for RenderingWindow objects that have RenderEffect objects set. Though this may not always be the case.
Parameters
elapsedfloat value describing the number of seconds that have passed since the previous call to update.