}
}
-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);
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)
#include <sigc++/trackable.h>
#include <msp/gl/camera.h>
#include <msp/gl/program.h>
+#include <msp/gl/renderable.h>
#include <msp/graphics/window.h>
#include <msp/input/keyboard.h>
#include <msp/input/mouse.h>
/**
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<std::string, int, int> signal_tooltip;
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);