cgv
Loading...
Searching...
No Matches
canvas_overlay.h
1
#pragma once
2
3
#include <cgv/gui/theme_info.h>
4
#include <cgv/render/managed_frame_buffer.h>
5
#include <cgv_g2d/canvas.h>
6
#include <cgv_g2d/shape2d_styles.h>
7
#include <cgv_overlay/overlay.h>
8
9
#include "lib_begin.h"
10
11
namespace
cgv
{
12
namespace
overlay {
13
14
class
CGV_API
canvas_overlay
:
public
overlay
{
15
private
:
16
bool
has_damage_ =
true
;
17
bool
recreate_layout_requested_ =
true
;
18
19
cgv::g2d::shape2d_style blit_style_;
20
21
cgv::render::managed_frame_buffer
frame_buffer_;
22
23
protected
:
24
cgv::g2d::canvas overlay_canvas, content_canvas;
25
bool
draw_in_finish_frame =
false
;
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
44
public
:
46
canvas_overlay
();
47
bool
init(
cgv::render::context
& ctx)
override
;
48
void
clear(
cgv::render::context
& ctx)
override
;
50
void
set_draw_in_finish_frame(
bool
enable =
true
);
52
virtual
void
on_set(
void
* member_ptr)
override
;
54
virtual
void
handle_member_change
(
cgv::data::informed_ptr
ptr)
override
{}
56
void
finish_frame(
cgv::render::context
&)
override
;
58
void
after_finish(
cgv::render::context
&)
override
;
60
virtual
void
draw_content
(
cgv::render::context
& ctx) = 0;
61
62
void
post_damage(
bool
redraw =
true
);
63
65
ivec2
get_local_mouse_pos(
ivec2
mouse_pos)
const override
;
66
72
bool
is_hit(
const
ivec2
& mouse_pos)
const override
;
73
78
bool
is_hit_local(
const
ivec2
& local_mouse_pos)
const
;
79
};
80
81
typedef
cgv::data::ref_ptr<canvas_overlay>
canvas_overlay_ptr
;
82
83
}
// namespace overlay
84
}
// namespace cgv
85
86
#include <cgv/config/lib_end.h>
cgv::data::informed_ptr
This class provides methods to test if a stored pointer points to addresses of given variables or ins...
Definition
informed_ptr.h:10
cgv::data::ref_ptr
reference counted pointer, which can work together with types that are derived from ref_counted,...
Definition
ref_ptr.h:160
cgv::math::fvec< int32_t, 2 >
cgv::overlay::canvas_overlay
Definition
canvas_overlay.h:14
cgv::overlay::canvas_overlay::handle_member_change
virtual void handle_member_change(cgv::data::informed_ptr ptr) override
implement to handle member changes
Definition
canvas_overlay.h:54
cgv::overlay::canvas_overlay::draw_content
virtual void draw_content(cgv::render::context &ctx)=0
draw_content is implemented by decendent classes
cgv::overlay::overlay
Definition
overlay.h:41
cgv::render::context
base class for all drawables, which is independent of the used rendering API.
Definition
context.h:668
cgv::render::managed_frame_buffer
provides a class that manages a frame buffer along with its attachments
Definition
managed_frame_buffer.h:14
cgv
this header is dependency free
Definition
print.h:11
libs
cgv_overlay
canvas_overlay.h
Generated by
1.9.8