From 3bdb7fd6873ca45ce7e7754040b69b0d941eef31 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 16 Sep 2016 00:46:32 +0300 Subject: [PATCH] Inherit Root from GL::Renderable This allows better integration with GL::Pipeline and the new GL::View class. --- source/root.cpp | 14 +++++++++++++- source/root.h | 10 +++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/source/root.cpp b/source/root.cpp index b4c16cf..e867fae 100644 --- a/source/root.cpp +++ b/source/root.cpp @@ -135,8 +135,11 @@ void Root::tick() } } -void Root::render() const +void Root::render(const GL::Tag &tag) const { + if(tag.id) + return; + GL::Bind bind_blend(GL::Blend::alpha()); GL::Renderer renderer(&camera); @@ -144,6 +147,15 @@ void Root::render() const Widget::render(renderer); } +void Root::render(GL::Renderer &renderer, const GL::Tag &tag) const +{ + if(tag.id) + return; + + renderer.end(); + render(tag); +} + bool Root::button_press_event(unsigned btn) { if(visible) diff --git a/source/root.h b/source/root.h index b0751b6..aeb2b9b 100644 --- a/source/root.h +++ b/source/root.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -18,9 +19,11 @@ class Label; /** A Root is a special type of Panel that covers the entire viewport and receives -input from keyboard and mouse. +input from keyboard and mouse. It can be used by itself or in a GL::Pipeline. +Due to its specialized nature it's recommended to not use it with Scenes or +other containers. */ -class Root: public Panel, public sigc::trackable +class Root: public Panel, public GL::Renderable, public sigc::trackable { public: sigc::signal signal_tooltip; @@ -60,7 +63,8 @@ public: virtual unsigned get_height() const { return geom.h; } void tick(); - void render() const; + virtual void render(const GL::Tag & = GL::Tag()) const; + virtual void render(GL::Renderer &, const GL::Tag & = GL::Tag()) const; private: bool button_press_event(unsigned); -- 2.45.2