From: Mikko Rasa Date: Thu, 15 Sep 2016 21:46:32 +0000 (+0300) Subject: Inherit Root from GL::Renderable X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=3bdb7fd6873ca45ce7e7754040b69b0d941eef31;p=libs%2Fgltk.git Inherit Root from GL::Renderable This allows better integration with GL::Pipeline and the new GL::View class. --- 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);