Horizon
3d_view.hpp
1 #pragma once
2 #include "util/window_state_store.hpp"
3 #include "common/common.hpp"
4 #include "util/changeable.hpp"
5 #include "util/uuid.hpp"
6 #include <gtkmm.h>
7 #include <set>
8 
9 namespace horizon {
10 class View3DWindow : public Gtk::Window, public Changeable {
11 public:
12  enum class Mode { BOARD, PACKAGE };
13  View3DWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, const class Board &b, class IPool &p,
14  Mode mode, class Canvas3D *ca_custom);
15  static View3DWindow *create(const class Board &b, class IPool &p, Mode mode, class Canvas3D *ca_custom = nullptr);
16  void update(bool clear = false);
17  void set_highlights(const std::set<UUID> &pkgs);
18  void add_widget(Gtk::Widget *w);
19  void set_smooth_zoom(bool smooth);
20 
21  void set_solder_mask_color(const Gdk::RGBA &c);
22  Gdk::RGBA get_solder_mask_color();
23 
24  void set_silkscreen_color(const Gdk::RGBA &c);
25  Gdk::RGBA get_silkscreen_color();
26 
27  void set_substrate_color(const Gdk::RGBA &c);
28  Gdk::RGBA get_substrate_color();
29 
30  void set_appearance(const class Appearance &a);
31  class Canvas3D &get_canvas()
32  {
33  return *canvas;
34  }
35 
36  typedef sigc::signal<void> type_signal_request_update;
37  type_signal_request_update signal_request_update()
38  {
39  return s_signal_request_update;
40  }
41 
42  typedef sigc::signal<void, UUID> type_signal_package_select;
43  type_signal_package_select signal_package_select();
44 
45 private:
46  class Canvas3D *canvas = nullptr;
47  const class Board &board;
48  class IPool &pool;
49  const Mode mode;
50  Gtk::Box *main_box = nullptr;
51  Gtk::Revealer *model_loading_revealer = nullptr;
52  Gtk::Spinner *model_loading_spinner = nullptr;
53  Gtk::ProgressBar *model_loading_progress = nullptr;
54 
55  Gtk::ColorButton *background_top_color_button = nullptr;
56  Gtk::ColorButton *background_bottom_color_button = nullptr;
57  Gtk::ColorButton *solder_mask_color_button = nullptr;
58  Gtk::ColorButton *silkscreen_color_button = nullptr;
59  Gtk::ColorButton *substrate_color_button = nullptr;
60  Gtk::ComboBoxText *background_color_preset_combo = nullptr;
61  bool setting_background_color_from_preset = false;
62 
63  Gtk::Revealer *hud_revealer = nullptr;
64  Gtk::Label *hud_label = nullptr;
65  void hud_set_package(const UUID &uu);
66 
67  using FnSetColor = void (Canvas3D::*)(const Color &color);
68  void bind_color_button(Gtk::ColorButton *color_button, FnSetColor fn_set, std::function<void(void)> extra_fn);
69 
70  WindowStateStore state_store;
71 
72  type_signal_request_update s_signal_request_update;
73 };
74 } // namespace horizon
Definition: appearance.hpp:7
Definition: board.hpp:42
Definition: canvas3d.hpp:16
Definition: changeable.hpp:5
Definition: common.hpp:234
Definition: ipool.hpp:14
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
Definition: 3d_view.hpp:10
Definition: window_state_store.hpp:25