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