1 #pragma once
2 #include "imp.hpp"
3 
4 namespace horizon {
5 class ImpLayer : public ImpBase {
6     friend class ImpInterface;
7 
8 public:
9     using ImpBase::ImpBase;
10 
is_layered() const11     bool is_layered() const override
12     {
13         return true;
14     };
15 
16 protected:
17     void construct_layer_box(bool pack = true);
18     class LayerBox *layer_box;
19     Glib::RefPtr<Glib::Binding> work_layer_binding;
20     Glib::RefPtr<Glib::Binding> layer_opacity_binding;
21     void apply_preferences() override;
22     void get_save_meta(json &j) override;
23     virtual void load_default_layers();
24     void add_view_angle_actions();
25 
get_canvas_preferences()26     const CanvasPreferences &get_canvas_preferences() override
27     {
28         return preferences.canvas_layer;
29     }
30 
31     void handle_extra_button(const GdkEventButton *button_event) override;
32 
~ImpLayer()33     ~ImpLayer()
34     {
35     }
36 
37     std::vector<std::string> get_view_hints() override;
38 
39     int view_angle = 1;
40     void set_view_angle(int angle);
41     Gtk::Label *view_angle_label = nullptr;
42     Gtk::Button *view_angle_button = nullptr;
43 
44     class ViewAngleWindow *view_angle_window = nullptr;
45     sigc::connection view_angle_window_conn;
46 };
47 } // namespace horizon
48