2 #include "canvas_mesh.hpp"
3 #include "canvas/appearance.hpp"
4 #include "clipper/clipper.hpp"
5 #include "common/common.hpp"
6 #include "util/msd_animator.hpp"
10 #include <unordered_map>
11 #include "canvas3d_base.hpp"
27 bool smooth_zoom =
false;
30 void update(
const class Board &brd);
31 void update_packages();
32 void set_highlights(
const std::set<UUID> &pkgs);
34 void inc_cam_azimuth(
float v);
37 void set_msaa(
unsigned int samples);
39 void load_models_async(
class IPool &pool);
43 typedef sigc::signal<void, unsigned int, unsigned int> type_signal_models_loading;
44 type_signal_models_loading signal_models_loading()
46 return s_signal_models_loading;
49 typedef sigc::signal<void, UUID> type_signal_package_select;
50 type_signal_package_select signal_package_select()
52 return s_signal_package_select;
55 typedef sigc::signal<void, glm::dvec3> type_signal_point_select;
56 type_signal_point_select signal_point_select()
58 return s_signal_point_select;
64 bool needs_push =
false;
65 bool needs_view_all =
false;
66 int a_get_scale_factor()
const override;
67 void redraw()
override;
69 void on_size_allocate(Gtk::Allocation &alloc)
override;
70 void on_realize()
override;
71 bool on_render(
const Glib::RefPtr<Gdk::GLContext> &context)
override;
72 bool on_button_press_event(GdkEventButton *button_event)
override;
73 bool on_motion_notify_event(GdkEventMotion *motion_event)
override;
74 bool on_button_release_event(GdkEventButton *button_event)
override;
75 bool on_scroll_event(GdkEventScroll *scroll_event)
override;
77 Glib::RefPtr<Gtk::GestureDrag> gesture_drag;
78 glm::vec2 gesture_drag_center_orig;
79 glm::vec2 get_center_shift(
const glm::vec2 &shift)
const;
80 void drag_gesture_begin_cb(GdkEventSequence *seq);
81 void drag_gesture_update_cb(GdkEventSequence *seq);
83 Glib::RefPtr<Gtk::GestureZoom> gesture_zoom;
84 float gesture_zoom_cam_dist_orig = 1;
85 void zoom_gesture_begin_cb(GdkEventSequence *seq);
86 void zoom_gesture_update_cb(GdkEventSequence *seq);
88 Glib::RefPtr<Gtk::GestureRotate> gesture_rotate;
89 float gesture_rotate_cam_azimuth_orig = 0;
90 float gesture_rotate_cam_elevation_orig = 0;
91 glm::vec2 gesture_rotate_pos_orig;
92 void rotate_gesture_begin_cb(GdkEventSequence *seq);
93 void rotate_gesture_update_cb(GdkEventSequence *seq);
95 glm::vec2 pointer_pos_orig;
96 float cam_azimuth_orig;
97 float cam_elevation_orig;
99 glm::vec2 center_orig;
101 enum class PanMode { NONE, MOVE, ROTATE };
102 PanMode pan_mode = PanMode::NONE;
105 float zoom_animation_cam_dist_orig = 1;
107 static int zoom_tick_cb(GtkWidget *cwidget, GdkFrameClock *frame_clock, gpointer user_data);
108 int zoom_animate_step(GdkFrameClock *frame_clock);
110 bool needs_resize =
false;
115 void load_models_thread(std::map<std::string, std::string> model_filenames);
118 Glib::Dispatcher models_loading_dispatcher;
120 type_signal_models_loading s_signal_models_loading;
121 unsigned int n_models_loading = 0;
122 std::atomic<unsigned int> i_model_loading;
124 std::thread model_load_thread;
125 std::atomic<bool> stop_model_load_thread;
127 type_signal_package_select s_signal_package_select;
128 type_signal_point_select s_signal_point_select;
Definition: appearance.hpp:7
Definition: background_renderer.hpp:5
Definition: canvas3d_base.hpp:20
Definition: canvas3d.hpp:16
Definition: cover_renderer.hpp:6
Definition: face_renderer.hpp:6
Definition: msd_animator.hpp:5
Definition: wall_renderer.hpp:6