cgv
Loading...
Searching...
No Matches
canvas_overlay.h
1#pragma once
2
3#include <cgv/render/managed_frame_buffer.h>
4#include <cgv_app/overlay.h>
5#include <cgv_g2d/canvas.h>
6#include <cgv_g2d/shape2d_styles.h>
7#include <cgv/gui/theme_info.h>
8
9#include "lib_begin.h"
10
11namespace cgv {
12namespace app {
13
14class CGV_API canvas_overlay : public overlay {
15private:
16 bool has_damage_ = true;
17 bool recreate_layout_requested_ = true;
18
19 cgv::g2d::shape2d_style blit_style_;
20
22
23protected:
24 cgv::g2d::canvas overlay_canvas, content_canvas;
25
26 bool ensure_layout(cgv::render::context& ctx);
27
28 void post_recreate_layout();
29
30 void clear_damage();
31
32 bool is_damaged() const;
33
34 void begin_content(cgv::render::context& ctx, bool clear_frame_buffer = true);
35
36 void end_content(cgv::render::context& ctx, bool keep_damage = false);
37
38 virtual void draw_impl(cgv::render::context& ctx);
39
40 virtual void init_styles() {}
41
42 void register_shader(const std::string& name, const std::string& filename);
43
44public:
47
48 bool init(cgv::render::context& ctx) override;
49
50 void clear(cgv::render::context& ctx) override;
51
53 virtual void on_set(void* member_ptr) override;
55 virtual void handle_member_change(const cgv::utils::pointer_test& m) override {}
57 void after_finish(cgv::render::context&) override;
58 virtual void draw_content(cgv::render::context& ctx) = 0;
59
60 void post_damage(bool redraw = true);
61
63 ivec2 get_local_mouse_pos(ivec2 mouse_pos) const override;
64
70 bool is_hit(const ivec2& mouse_pos) const override;
71};
72
73typedef cgv::data::ref_ptr<canvas_overlay> canvas_overlay_ptr;
74
75}
76}
77
78#include <cgv/config/lib_end.h>
virtual void handle_member_change(const cgv::utils::pointer_test &m) override
implement to handle member changes
reference counted pointer, which can work together with types that are derived from ref_counted,...
Definition ref_ptr.h:160
base class for all drawables, which is independent of the used rendering API.
Definition context.h:621
provides a class that manages a frame buffer along with its attachments
the cgv namespace
Definition print.h:11