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"
25 bool smooth_zoom =
false;
28 void update(
const class Board &brd);
29 void update_packages();
30 void set_highlights(
const std::set<UUID> &pkgs);
32 void inc_cam_azimuth(
float v);
35 void set_msaa(
unsigned int samples);
37 void load_models_async(
class Pool *pool);
41 typedef sigc::signal<void, bool> type_signal_models_loading;
42 type_signal_models_loading signal_models_loading()
44 return s_signal_models_loading;
47 int _animate_step(GdkFrameClock *frame_clock);
50 bool needs_push =
false;
51 bool needs_view_all =
false;
52 int a_get_scale_factor()
const override;
54 void on_size_allocate(Gtk::Allocation &alloc)
override;
55 void on_realize()
override;
56 bool on_render(
const Glib::RefPtr<Gdk::GLContext> &context)
override;
57 bool on_button_press_event(GdkEventButton *button_event)
override;
58 bool on_motion_notify_event(GdkEventMotion *motion_event)
override;
59 bool on_button_release_event(GdkEventButton *button_event)
override;
60 bool on_scroll_event(GdkEventScroll *scroll_event)
override;
62 Glib::RefPtr<Gtk::GestureDrag> gesture_drag;
63 glm::vec2 gesture_drag_center_orig;
64 glm::vec2 get_center_shift(
const glm::vec2 &shift)
const;
65 void drag_gesture_begin_cb(GdkEventSequence *seq);
66 void drag_gesture_update_cb(GdkEventSequence *seq);
68 Glib::RefPtr<Gtk::GestureZoom> gesture_zoom;
69 float gesture_zoom_cam_dist_orig = 1;
70 void zoom_gesture_begin_cb(GdkEventSequence *seq);
71 void zoom_gesture_update_cb(GdkEventSequence *seq);
73 Glib::RefPtr<Gtk::GestureRotate> gesture_rotate;
74 float gesture_rotate_cam_azimuth_orig = 0;
75 float gesture_rotate_cam_elevation_orig = 0;
76 glm::vec2 gesture_rotate_pos_orig;
77 void rotate_gesture_begin_cb(GdkEventSequence *seq);
78 void rotate_gesture_update_cb(GdkEventSequence *seq);
79 void fix_cam_elevation();
81 glm::vec2 pointer_pos_orig;
82 float cam_azimuth_orig;
83 float cam_elevation_orig;
85 glm::vec2 center_orig;
87 enum class PanMode { NONE, MOVE, ROTATE };
88 PanMode pan_mode = PanMode::NONE;
91 float zoom_animation_cam_dist_orig = 1;
93 bool needs_resize =
false;
98 void load_models_thread(std::map<std::string, std::string> model_filenames);
101 Glib::Dispatcher models_loading_dispatcher;
103 type_signal_models_loading s_signal_models_loading;