3 #include "drag_selection.hpp" 6 #include "triangle.hpp" 7 #include "util/msd_animator.hpp" 10 #include "appearance.hpp" 24 enum class SelectionMode { HOVER, NORMAL };
25 SelectionMode selection_mode = SelectionMode::HOVER;
27 enum class SelectionTool { BOX, LASSO, PAINT };
28 SelectionTool selection_tool = SelectionTool::BOX;
30 enum class SelectionQualifier { INCLUDE_ORIGIN, INCLUDE_BOX, TOUCH_BOX, AUTO };
31 SelectionQualifier selection_qualifier = SelectionQualifier::INCLUDE_ORIGIN;
33 enum class HighlightMode { HIGHLIGHT, DIM, SHADOW };
34 void set_highlight_mode(HighlightMode mode);
35 HighlightMode get_highlight_mode()
const;
36 void set_highlight_enabled(
bool x);
38 std::set<SelectableRef> get_selection();
39 void set_selection(
const std::set<SelectableRef> &sel,
bool emit =
true);
40 void set_cursor_pos(
const Coordi &c);
41 void set_cursor_external(
bool v);
43 Coordf get_cursor_pos_win();
44 Target get_current_target();
45 void set_selection_allowed(
bool a);
46 std::pair<float, Coordf> get_scale_and_offset();
47 void set_scale_and_offset(
float sc,
Coordf ofs);
50 void set_flip_view(
bool fl);
51 bool get_flip_view()
const override;
53 typedef sigc::signal<void> type_signal_selection_changed;
54 type_signal_selection_changed signal_selection_changed()
56 return s_signal_selection_changed;
59 type_signal_selection_changed signal_hover_selection_changed()
61 return s_signal_hover_selection_changed;
64 typedef sigc::signal<void, const Coordi &> type_signal_cursor_moved;
65 type_signal_cursor_moved signal_cursor_moved()
67 return s_signal_cursor_moved;
70 typedef sigc::signal<void, unsigned int> type_signal_grid_mul_changed;
71 type_signal_grid_mul_changed signal_grid_mul_changed()
73 return s_signal_grid_mul_changed;
75 unsigned int get_grid_mul()
const 80 typedef sigc::signal<std::string, ObjectType, UUID> type_signal_request_display_name;
81 type_signal_request_display_name signal_request_display_name()
83 return s_signal_request_display_name;
86 void center_and_zoom(
const Coordi ¢er);
89 Glib::PropertyProxy<int> property_work_layer()
91 return p_property_work_layer.get_proxy();
93 Glib::PropertyProxy<uint64_t> property_grid_spacing()
95 return p_property_grid_spacing.get_proxy();
97 Glib::PropertyProxy<float> property_layer_opacity()
99 return p_property_layer_opacity.get_proxy();
102 void update_markers()
override;
104 std::set<SelectableRef> get_selection_at(
const Coordi &c);
106 void update_cursor_pos(
double x,
double y);
110 const Color &get_color(ColorP colorp)
const;
112 bool smooth_zoom =
true;
114 void inhibit_drag_selection();
116 int _animate_step(GdkFrameClock *frame_clock);
119 void push()
override;
120 void request_push()
override;
123 static const int MAT3_XX = 0;
124 static const int MAT3_X0 = 2;
125 static const int MAT3_YY = 4;
126 static const int MAT3_Y0 = 5;
133 bool flip_view =
false;
134 void update_viewmat();
138 bool cursor_external =
false;
142 GLuint stencilrenderbuffer;
144 bool needs_resize =
false;
147 PF_TRIANGLES = (1 << 0),
148 PF_CURSOR = (1 << 1),
149 PF_SELECTABLES = (1 << 2),
150 PF_MARKER = (1 << 3),
151 PF_DRAG_SELECTION = (1 << 4),
154 PushFilter push_filter = PF_ALL;
155 void request_push(PushFilter filter);
157 void resize_buffers();
166 void pan_drag_begin(GdkEventButton *button_event);
167 void pan_drag_end(GdkEventButton *button_event);
168 void pan_drag_move(GdkEventMotion *motion_event);
169 void pan_drag_move(GdkEventScroll *scroll_event);
170 void pan_zoom(GdkEventScroll *scroll_event,
bool to_cursor =
true);
171 void cursor_move(GdkEvent *motion_event);
172 void hover_prelight_update(GdkEvent *motion_event);
173 bool pan_dragging =
false;
177 void set_scale(
float x,
float y,
float new_scale);
179 bool selection_allowed =
true;
180 Glib::Property<int> p_property_work_layer;
181 Glib::Property<uint64_t> p_property_grid_spacing;
182 Glib::Property<float> p_property_layer_opacity;
184 Gtk::Menu *clarify_menu;
186 HighlightMode highlight_mode = HighlightMode::HIGHLIGHT;
187 bool highlight_enabled =
false;
190 void update_palette_colors();
191 std::array<std::array<float, 4>,
static_cast<size_t>(ColorP::N_COLORS)> palette_colors;
193 bool drag_selection_inhibited =
false;
196 float zoom_animation_scale_orig = 1;
197 Coordf zoom_animation_pos;
199 Gdk::ModifierType grid_fine_modifier = Gdk::MOD1_MASK;
202 void on_size_allocate(Gtk::Allocation &alloc)
override;
203 void on_realize()
override;
204 bool on_render(
const Glib::RefPtr<Gdk::GLContext> &context)
override;
205 bool on_button_press_event(GdkEventButton *button_event)
override;
206 bool on_button_release_event(GdkEventButton *button_event)
override;
207 bool on_motion_notify_event(GdkEventMotion *motion_event)
override;
208 bool on_scroll_event(GdkEventScroll *scroll_event)
override;
209 Glib::RefPtr<Gdk::GLContext> on_create_context()
override;
211 type_signal_selection_changed s_signal_selection_changed;
212 type_signal_selection_changed s_signal_hover_selection_changed;
213 type_signal_cursor_moved s_signal_cursor_moved;
214 type_signal_grid_mul_changed s_signal_grid_mul_changed;
215 type_signal_request_display_name s_signal_request_display_name;
Definition: appearance.hpp:7
Definition: selectables.hpp:87
Definition: msd_animator.hpp:5
Definition: canvas_gl.hpp:13
Definition: marker.hpp:35
Definition: canvas.hpp:20
Definition: drag_selection.hpp:8
Definition: marker.hpp:51
Definition: triangle.hpp:73
Definition: common.hpp:207