Geometry.h
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 ROCKETCOREGEOMETRY_H
00029 #define ROCKETCOREGEOMETRY_H
00030
00031 #include <Rocket/Core/Header.h>
00032 #include <Rocket/Core/Vertex.h>
00033
00034 namespace Rocket {
00035 namespace Core {
00036
00037 class Context;
00038 class Element;
00039 class RenderInterface;
00040 struct Texture;
00041
00048 class ROCKETCORE_API Geometry
00049 {
00050 public:
00051 Geometry(Element* host_element = NULL);
00052 Geometry(Context* host_context);
00053 ~Geometry();
00054
00057 void SetHostElement(Element* host_element);
00058
00061 void Render(const Vector2f& translation);
00062
00065 std::vector< Vertex >& GetVertices();
00068 std::vector< int >& GetIndices();
00069
00072 const Texture* GetTexture() const;
00074 void SetTexture(const Texture* texture);
00075
00078 void Release(bool clear_buffers = false);
00079
00080 private:
00081
00082 RenderInterface* GetRenderInterface();
00083
00084 Context* host_context;
00085 Element* host_element;
00086
00087 std::vector< Vertex > vertices;
00088 std::vector< int > indices;
00089 const Texture* texture;
00090
00091 CompiledGeometryHandle compiled_geometry;
00092 bool compile_attempted;
00093 bool fixed_texcoords;
00094 };
00095
00096 typedef std::vector< Geometry > GeometryList;
00097
00098 }
00099 }
00100
00101 #endif