00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef ROCKET_RENDER_INTERFACE_H
00016 #define ROCKET_RENDER_INTERFACE_H
00017
00018 #include "config_rocket.h"
00019 #include "cullTraverser.h"
00020 #include "cullTraverserData.h"
00021 #include "geom.h"
00022 #include "renderState.h"
00023 #include "transformState.h"
00024
00025 #include <Rocket/Core/RenderInterface.h>
00026
00027
00028
00029
00030
00031
00032 class RocketRenderInterface : public Rocket::Core::RenderInterface {
00033 public:
00034 void render(Rocket::Core::Context* context, CullTraverser *trav);
00035
00036 protected:
00037 struct CompiledGeometry {
00038 CPT(Geom) _geom;
00039 CPT(RenderState) _state;
00040 };
00041
00042 PT(Geom) make_geom(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, GeomEnums::UsageHint uh);
00043 void render_geom(const Geom* geom, const RenderState* state, const Rocket::Core::Vector2f& translation);
00044
00045 void RenderGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, Rocket::Core::TextureHandle texture, const Rocket::Core::Vector2f& translation);
00046 Rocket::Core::CompiledGeometryHandle CompileGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, Rocket::Core::TextureHandle texture);
00047 void RenderCompiledGeometry(Rocket::Core::CompiledGeometryHandle geometry, const Rocket::Core::Vector2f& translation);
00048 void ReleaseCompiledGeometry(Rocket::Core::CompiledGeometryHandle geometry);
00049
00050 bool LoadTexture(Rocket::Core::TextureHandle& texture_handle,
00051 Rocket::Core::Vector2i& texture_dimensions,
00052 const Rocket::Core::String& source);
00053 bool GenerateTexture(Rocket::Core::TextureHandle& texture_handle,
00054 const Rocket::Core::byte* source,
00055 const Rocket::Core::Vector2i& source_dimensions);
00056 void ReleaseTexture(Rocket::Core::TextureHandle texture_handle);
00057
00058 void EnableScissorRegion(bool enable);
00059 void SetScissorRegion(int x, int y, int width, int height);
00060
00061 private:
00062 Mutex _lock;
00063
00064
00065 bool _enable_scissor;
00066 LVecBase4f _scissor;
00067
00068
00069 CullTraverser *_trav;
00070 CPT(TransformState) _net_transform;
00071 CPT(RenderState) _net_state;
00072 Rocket::Core::Vector2i _dimensions;
00073 };
00074
00075 #endif