Crazy Eddie's GUI System  0.8.7
RendererModules/DirectFB/Renderer.h
1 /***********************************************************************
2  created: Tue Mar 10 2009
3  author: Paul D Turner (parts based on code by Keith Mok)
4 *************************************************************************/
5 /***************************************************************************
6  * Copyright (C) 2004 - 2009 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 _CEGUIDirectFBRenderer_h_
28 #define _CEGUIDirectFBRenderer_h_
29 
30 #include "CEGUI/Renderer.h"
31 #include "CEGUI/Size.h"
32 #include "CEGUI/Vector.h"
33 #include <directfb.h>
34 #include <vector>
35 #include <map>
36 
37 // Start of CEGUI namespace section
38 namespace CEGUI
39 {
40 class DirectFBTexture;
41 class DirectFBGeometryBuffer;
42 
44 class DirectFBRenderer : public Renderer
45 {
46 public:
48  static DirectFBRenderer& create(IDirectFB& directfb,
49  IDirectFBSurface& surface,
50  const int abi = CEGUI_VERSION_ABI);
52  static void destroy(DirectFBRenderer& renderer);
53 
55  IDirectFBSurface& getTargetSurface() const;
56 
58  void setTargetSurface(IDirectFBSurface& surface);
59 
75  bool isTexCoordSystemFlipped() const { return false; }
76 
77  // Implementation of Renderer interface.
87  const String& filename,
88  const String& resourceGroup);
89  Texture& createTexture(const CEGUI::String& name, const Sizef& size);
90  void destroyTexture(Texture& texture);
91  void destroyTexture(const CEGUI::String& name);
93  Texture& getTexture(const String&) const;
94  bool isTextureDefined(const String& name) const;
96  void endRendering();
97  void setDisplaySize(const Sizef& sz);
98  const Sizef& getDisplaySize() const;
99  const Vector2f& getDisplayDPI() const;
100  uint getMaxTextureSize() const;
101  const String& getIdentifierString() const;
102 
103 protected:
105  DirectFBRenderer(IDirectFB& directfb, IDirectFBSurface& surface);
108 
110  static void logTextureCreation(DirectFBTexture* texture);
112  static void logTextureDestruction(DirectFBTexture* texture);
113 
117  IDirectFB& d_directfb;
119  IDirectFBSurface& d_rootSurface;
121  IDirectFBSurface* d_targetSurface;
129  typedef std::vector<TextureTarget*> TextureTargetList;
133  typedef std::vector<DirectFBGeometryBuffer*> GeometryBufferList;
137  typedef std::map<String, DirectFBTexture*, StringFastLessCompare> TextureMap;
140 };
141 
142 } // End of CEGUI namespace section
143 
144 #endif // end of guard _CEGUIDirectFBRenderer_h_
Implementation of CEGUI::Renderer interface using DirectFB.
Definition: RendererModules/DirectFB/Renderer.h:45
Texture & getTexture(const String &) const
Return a Texture object that was previously created by calling the createTexture functions.
void setTargetSurface(IDirectFBSurface &surface)
Set the target DirectFB surface.
~DirectFBRenderer()
Destructor.
void destroyAllGeometryBuffers()
Destroy all GeometryBuffer objects created by this Renderer.
Vector2f d_displayDPI
What the renderer considers to be the current display DPI resolution.
Definition: RendererModules/DirectFB/Renderer.h:125
GeometryBuffer & createGeometryBuffer()
Create a new GeometryBuffer and return a reference to it. You should remove the GeometryBuffer from a...
GeometryBufferList d_geometryBuffers
Container used to track geometry buffers.
Definition: RendererModules/DirectFB/Renderer.h:135
const String & getIdentifierString() const
Return identification string for the renderer module.
const Sizef & getDisplaySize() const
Return the size of the display or host window in pixels.
IDirectFBSurface & d_rootSurface
The DirectFB surface to be used as the default root target.
Definition: RendererModules/DirectFB/Renderer.h:119
void destroyAllTextureTargets()
Destory all TextureTarget objects created by this Renderer.
static DirectFBRenderer & create(IDirectFB &directfb, IDirectFBSurface &surface, const int abi=CEGUI_VERSION_ABI)
create a DirectFBRenderer object.
IDirectFB & d_directfb
DirectFB interface we were given when constructed.
Definition: RendererModules/DirectFB/Renderer.h:117
std::map< String, DirectFBTexture *, StringFastLessCompare > TextureMap
container type used to hold Textures we create.
Definition: RendererModules/DirectFB/Renderer.h:137
void destroyTextureTarget(TextureTarget *target)
Function that cleans up TextureTarget objects created with the createTextureTarget function.
IDirectFBSurface * d_targetSurface
The current target DirectFB surface.
Definition: RendererModules/DirectFB/Renderer.h:121
RenderTarget & getDefaultRenderTarget()
Returns the default RenderTarget object. The default render target is is typically one that targets t...
std::vector< TextureTarget * > TextureTargetList
container type used to hold TextureTargets we create.
Definition: RendererModules/DirectFB/Renderer.h:129
std::vector< DirectFBGeometryBuffer * > GeometryBufferList
container type used to hold GeometryBuffers we create.
Definition: RendererModules/DirectFB/Renderer.h:133
void destroyTexture(Texture &texture)
Destroy a Texture object that was previously created by calling the createTexture functions.
RenderTarget * d_defaultTarget
The default RenderTarget.
Definition: RendererModules/DirectFB/Renderer.h:127
void destroyAllTextures()
Destroy all Texture objects created by this Renderer.
bool isTextureDefined(const String &name) const
Return whether a texture with the given name exists.
TextureMap d_textures
Container used to track textures.
Definition: RendererModules/DirectFB/Renderer.h:139
Texture & createTexture(const CEGUI::String &name)
Create a 'null' Texture object.
IDirectFBSurface & getTargetSurface() const
Return the current target DirectFB surface.
Texture & createTexture(const CEGUI::String &name, const Sizef &size)
Create a Texture object with the given pixel dimensions as specified by size.
TextureTarget * createTextureTarget()
Create a TextureTarget that can be used to cache imagery; this is a RenderTarget that does not lose i...
void beginRendering()
Perform any operations required to put the system into a state ready for rendering operations to begi...
Texture & createTexture(const CEGUI::String &name, const String &filename, const String &resourceGroup)
Create a Texture object using the given image file.
static String d_rendererID
String holding the renderer identification text.
Definition: RendererModules/DirectFB/Renderer.h:115
DirectFBRenderer(IDirectFB &directfb, IDirectFBSurface &surface)
Constructor.
TextureTargetList d_textureTargets
Container used to track texture targets.
Definition: RendererModules/DirectFB/Renderer.h:131
void setDisplaySize(const Sizef &sz)
Set the size of the display or host window in pixels for this Renderer object.
static void logTextureCreation(DirectFBTexture *texture)
helper to safely log the creation of a named texture
void destroyTexture(const CEGUI::String &name)
Destroy a Texture object that was previously created by calling the createTexture functions.
void endRendering()
Perform any operations required to finalise rendering.
void destroyGeometryBuffer(const GeometryBuffer &buffer)
Destroy a GeometryBuffer that was returned when calling the createGeometryBuffer function....
static void logTextureDestruction(DirectFBTexture *texture)
helper to safely log the destruction of a named texture
uint getMaxTextureSize() const
Return the pixel size of the maximum supported texture.
bool isTexCoordSystemFlipped() const
Returns if the texture coordinate system is vertically flipped or not. The original of a texture coor...
Definition: RendererModules/DirectFB/Renderer.h:75
static void destroy(DirectFBRenderer &renderer)
destroy a DirectFBRenderer object created by the create call.
Sizef d_displaySize
What the renderer considers to be the current display size.
Definition: RendererModules/DirectFB/Renderer.h:123
const Vector2f & getDisplayDPI() const
Return the resolution of the display or host window in dots per inch.
Implementation of CEGUI::Texture interface using DirectFB.
Definition: RendererModules/DirectFB/Texture.h:39
Abstract class defining the interface for objects that buffer geometry for later rendering.
Definition: GeometryBuffer.h:44
Defines interface to some surface that can be rendered to. Concrete instances of objects that impleme...
Definition: RenderTarget.h:60
Abstract class defining the basic required interface for Renderer objects.
Definition: Renderer.h:84
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
Abstract base class specifying the required interface for Texture objects.
Definition: Texture.h:54
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1