cgv
Loading...
Searching...
No Matches
navigator.h
1#pragma once
2
3#include <cgv/gui/event_handler.h>
4#include <cgv/gui/provider.h>
5#include <cgv/render/drawable.h>
6#include <cgv/render/managed_frame_buffer.h>
7#include <cgv_gl/rectangle_renderer.h>
8#include <cgv_gl/arrow_render_data.h>
9#include <cgv_gl/box_render_data.h>
10#include <cgv_gl/box_wire_render_data.h>
11#include <cgv_gl/rectangle_render_data.h>
12#include <cgv_gl/sphere_render_data.h>
13#include <cgv_app/overlay.h>
14#include <cgv_g2d/canvas.h>
15#include <cgv_g2d/shape2d_styles.h>
16
17#include "lib_begin.h"
18
19namespace cgv {
20namespace app {
21
22class CGV_API navigator : public overlay {
23protected:
24 cgv::render::view* view_ptr;
25 vec3 navigator_eye_pos;
26
27 double check_for_click;
28
30
31 cgv::g2d::canvas blit_canvas;
32 cgv::g2d::shape2d_style blit_style;
33
34 int layout_size;
35 bool show_box;
36 bool show_wireframe;
37 bool use_perspective;
38 int hit_axis;
39
41
42 cgv::render::box_renderer box_renderer;
44
48
49 mat4 get_model_matrix(cgv::render::context& ctx);
50 mat4 get_view_matrix(cgv::render::context& ctx);
51 mat4 get_projection_matrix();
52 bool intersect_box(const vec3 &origin, const vec3& direction, float& t) const;
53
54 virtual void create_gui_impl();
55
56public:
57 navigator();
58 std::string get_type_name() const { return "navigator"; }
59
60 void clear(cgv::render::context& ctx);
61
62 bool self_reflect(cgv::reflect::reflection_handler& _rh);
63 void stream_help(std::ostream& os) {}
64
65 bool handle_mouse_event(cgv::gui::mouse_event& e, cgv::ivec2 local_mouse_pos);
66 void on_set(void* member_ptr);
67
68 bool init(cgv::render::context& ctx);
69 void init_frame(cgv::render::context& ctx);
70 void finish_draw(cgv::render::context& ctx);
71
72 void set_size(int size);
73};
74
75typedef cgv::data::ref_ptr<navigator> navigator_ptr;
76
77}
78}
79
80#include <cgv/config/lib_end.h>
void stream_help(std::ostream &os)
overload to stream help information to the given output stream
Definition navigator.h:63
std::string get_type_name() const
overload to return the type name of this object. By default the type interface is queried over get_ty...
Definition navigator.h:58
reference counted pointer, which can work together with types that are derived from ref_counted,...
Definition ref_ptr.h:160
class to represent all possible mouse events with the EID_MOUSE
Definition mouse_event.h:33
the self reflection handler is passed to the virtual self_reflect() method of cgv::base::base.
Render data for box geometry with support for the box_renderer.
renderer that supports point splatting
Render data for box geometry with support for the box_wire_renderer.
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
Render data for rectangle geometry with support for the rectangle_renderer.
Render data for sphere geometry with support for the sphere_renderer.
defines a symmetric view with the following quantities:
Definition view.h:22
the cgv namespace
Definition print.h:11