summaryrefslogtreecommitdiffhomepage
path: root/src/rmlui/irodeo_rmlui.hpp
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-23 02:47:55 -0400
committerrealtradam <[email protected]>2023-06-23 02:47:55 -0400
commitf26149d554a6c473ec51b8c8f59af12f1bedea84 (patch)
tree07c8464fd179504276bea3e4103b4ad79ef6fcfa /src/rmlui/irodeo_rmlui.hpp
parent5f57ca96bb0702be7a6b518626ad1d300e5d92e6 (diff)
downloadRodeoKit-f26149d554a6c473ec51b8c8f59af12f1bedea84.tar.gz
RodeoKit-f26149d554a6c473ec51b8c8f59af12f1bedea84.zip
progress on implementing render interface
Diffstat (limited to 'src/rmlui/irodeo_rmlui.hpp')
-rw-r--r--src/rmlui/irodeo_rmlui.hpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/rmlui/irodeo_rmlui.hpp b/src/rmlui/irodeo_rmlui.hpp
new file mode 100644
index 0000000..66573b0
--- /dev/null
+++ b/src/rmlui/irodeo_rmlui.hpp
@@ -0,0 +1,66 @@
+#pragma once
+
+#define RMLUI_STATIC_LIB
+
+// -- external --
+#include <RmlUi/Core/RenderInterface.h>
+#include <RmlUi/Core/Types.h>
+
+class RenderInterface_Rodeo : public Rml::RenderInterface {
+ public:
+
+ bool is_projecting = false;
+
+ RenderInterface_Rodeo();
+ ~RenderInterface_Rodeo();
+
+ // The viewport should be updated whenever the window size changes.
+ void SetViewport(int viewport_width, int viewport_height);
+
+ // Sets up OpenGL states for taking rendering commands from RmlUi.
+ void BeginFrame();
+ void EndFrame();
+
+ // -- Inherited from Rml::RenderInterface --
+
+ void RenderGeometry(
+ Rml::Vertex* vertices,
+ int num_vertices,
+ int* indices,
+ int num_indices,
+ Rml::TextureHandle texture,
+ const Rml::Vector2f& translation
+ ) override;
+
+ void EnableScissorRegion(bool enable) override;
+ void SetScissorRegion(int x, int y, int width, int height) override;
+
+ bool LoadTexture(
+ Rml::TextureHandle& texture_handle,
+ Rml::Vector2i& texture_dimensions,
+ const Rml::String& source
+ ) override;
+ bool GenerateTexture(
+ Rml::TextureHandle& texture_handle,
+ const Rml::byte* source,
+ const Rml::Vector2i& source_dimensions
+ ) override;
+ void ReleaseTexture(Rml::TextureHandle texture_handle) override;
+
+ void SetTransform(const Rml::Matrix4f* transform) override;
+
+ // Can be passed to RenderGeometry() to enable texture rendering without changing the bound texture.
+ static const Rml::TextureHandle TextureEnableWithoutBinding = Rml::TextureHandle(-1);
+
+ private:
+ //Rml::Matrix4f transform, projection;
+ //ProgramId transform_dirty_state = ProgramId::All;
+ //bool transform_active = false;
+
+ //enum class ScissoringState { Disable, Scissor, Stencil };
+ //ScissoringState scissoring_state = ScissoringState::Disable;
+
+ int viewport_width = 0;
+ int viewport_height = 0;
+
+};