3 #include "drag_selection.hpp" 6 #include "triangle.hpp" 21 enum class SelectionMode { HOVER, NORMAL };
22 SelectionMode selection_mode = SelectionMode::HOVER;
24 enum class SelectionTool { BOX, LASSO, PAINT };
25 SelectionTool selection_tool = SelectionTool::BOX;
27 enum class SelectionQualifier { INCLUDE_ORIGIN, INCLUDE_BOX, TOUCH_BOX, AUTO };
28 SelectionQualifier selection_qualifier = SelectionQualifier::INCLUDE_ORIGIN;
30 enum class HighlightMode { HIGHLIGHT, DIM, SHADOW };
31 void set_highlight_mode(HighlightMode mode);
32 HighlightMode get_highlight_mode()
const;
33 void set_highlight_enabled(
bool x);
35 std::set<SelectableRef> get_selection();
36 void set_selection(
const std::set<SelectableRef> &sel,
bool emit =
true);
37 void set_cursor_pos(
const Coordi &c);
38 void set_cursor_external(
bool v);
40 Coordf get_cursor_pos_win();
41 Target get_current_target();
42 void set_selection_allowed(
bool a);
43 std::pair<float, Coordf> get_scale_and_offset();
44 void set_scale_and_offset(
float sc,
Coordf ofs);
47 typedef sigc::signal<void> type_signal_selection_changed;
48 type_signal_selection_changed signal_selection_changed()
50 return s_signal_selection_changed;
53 typedef sigc::signal<void, const Coordi &> type_signal_cursor_moved;
54 type_signal_cursor_moved signal_cursor_moved()
56 return s_signal_cursor_moved;
59 typedef sigc::signal<void, unsigned int> type_signal_grid_mul_changed;
60 type_signal_grid_mul_changed signal_grid_mul_changed()
62 return s_signal_grid_mul_changed;
64 unsigned int get_grid_mul()
const 69 typedef sigc::signal<std::string, ObjectType, UUID> type_signal_request_display_name;
70 type_signal_request_display_name signal_request_display_name()
72 return s_signal_request_display_name;
75 void center_and_zoom(
const Coordi ¢er);
78 Glib::PropertyProxy<int> property_work_layer()
80 return p_property_work_layer.get_proxy();
82 Glib::PropertyProxy<uint64_t> property_grid_spacing()
84 return p_property_grid_spacing.get_proxy();
86 Glib::PropertyProxy<float> property_layer_opacity()
88 return p_property_layer_opacity.get_proxy();
91 void update_markers()
override;
93 std::set<SelectableRef> get_selection_at(
const Coordi &c);
95 void update_cursor_pos(
double x,
double y);
97 void set_background_color(
const Color &c);
98 void set_grid_color(
const Color &c);
99 void set_grid_style(Grid::Style st);
100 void set_grid_alpha(
float a);
102 void set_highlight_dim(
float a);
103 void set_highlight_shadow(
float a);
104 void set_highlight_lighten(
float a);
106 void set_msaa(
unsigned int samples);
108 void inhibit_drag_selection();
110 Gdk::ModifierType grid_fine_modifier = Gdk::MOD1_MASK;
113 void push()
override;
114 void request_push()
override;
117 static const int MAT3_XX = 0;
118 static const int MAT3_X0 = 2;
119 static const int MAT3_YY = 4;
120 static const int MAT3_Y0 = 5;
123 std::array<float, 9> screenmat;
128 bool cursor_external =
false;
132 GLuint stencilrenderbuffer;
134 unsigned int num_samples = 4;
135 bool needs_resize =
false;
138 PF_TRIANGLES = (1 << 0),
139 PF_CURSOR = (1 << 1),
140 PF_SELECTABLES = (1 << 2),
141 PF_MARKER = (1 << 3),
142 PF_DRAG_SELECTION = (1 << 4),
145 PushFilter push_filter = PF_ALL;
146 void request_push(PushFilter filter);
148 void resize_buffers();
150 Color background_color = Color::new_from_int(0, 24, 64);
158 void pan_drag_begin(GdkEventButton *button_event);
159 void pan_drag_end(GdkEventButton *button_event);
160 void pan_drag_move(GdkEventMotion *motion_event);
161 void pan_drag_move(GdkEventScroll *scroll_event);
162 void pan_zoom(GdkEventScroll *scroll_event,
bool to_cursor =
true);
163 void cursor_move(GdkEvent *motion_event);
164 void hover_prelight_update(GdkEvent *motion_event);
165 bool pan_dragging =
false;
169 bool selection_allowed =
true;
170 Glib::Property<int> p_property_work_layer;
171 Glib::Property<uint64_t> p_property_grid_spacing;
172 Glib::Property<float> p_property_layer_opacity;
174 Gtk::Menu *clarify_menu;
176 HighlightMode highlight_mode = HighlightMode::HIGHLIGHT;
177 bool highlight_enabled =
false;
178 float highlight_dim = .5;
179 float highlight_shadow = .3;
180 float highlight_lighten = .3;
182 bool drag_selection_inhibited =
false;
185 void on_size_allocate(Gtk::Allocation &alloc)
override;
186 void on_realize()
override;
187 bool on_render(
const Glib::RefPtr<Gdk::GLContext> &context)
override;
188 bool on_button_press_event(GdkEventButton *button_event)
override;
189 bool on_button_release_event(GdkEventButton *button_event)
override;
190 bool on_motion_notify_event(GdkEventMotion *motion_event)
override;
191 bool on_scroll_event(GdkEventScroll *scroll_event)
override;
192 Glib::RefPtr<Gdk::GLContext> on_create_context()
override;
194 type_signal_selection_changed s_signal_selection_changed;
195 type_signal_cursor_moved s_signal_cursor_moved;
196 type_signal_grid_mul_changed s_signal_grid_mul_changed;
197 type_signal_request_display_name s_signal_request_display_name;
Definition: selectables.hpp:85
Definition: canvas_gl.hpp:10
Definition: marker.hpp:35
Definition: canvas.hpp:17
Definition: drag_selection.hpp:8
Definition: marker.hpp:51
Definition: triangle.hpp:91
Definition: common.hpp:205