2 #include "background.hpp" 3 #include "canvas/canvas_patch.hpp" 4 #include "clipper/clipper.hpp" 5 #include "common/common.hpp" 10 #include <glm/glm.hpp> 12 #include <unordered_map> 23 float cam_azimuth = 90;
24 float cam_elevation = 45;
25 float cam_distance = 20;
32 Color solder_mask_color;
33 bool show_solder_mask =
true;
34 bool show_silkscreen =
true;
35 bool show_substrate =
true;
36 bool show_models =
true;
38 Color background_top_color;
39 Color background_bottom_color;
42 void update2(
const class Board &brd);
45 void set_msaa(
unsigned int samples);
47 void load_models_async(
class Pool *pool);
49 void load_3d_model(
const std::string &filename,
const std::string &base_path);
50 void clear_3d_models();
52 typedef sigc::signal<void, bool> type_signal_models_loading;
53 type_signal_models_loading signal_models_loading()
55 return s_signal_models_loading;
62 Vertex(
float ix,
float iy) : x(ix), y(iy)
68 std::vector<Vertex> tris;
69 std::vector<Vertex> walls;
71 float thickness = 0.035;
73 float explode_mul = 0;
79 FaceVertex(
float ix,
float iy,
float iz, uint8_t ir, uint8_t ig, uint8_t ib)
80 : x(ix), y(iy), z(iz), r(ir), g(ig), b(ib), _pad(0)
91 } __attribute__((packed));
95 ModelTransform(
float ix,
float iy,
float a,
bool f) : x(ix), y(iy), angle(a), flip(f)
106 uint16_t model_roll = 0;
107 uint16_t model_pitch = 0;
108 uint16_t model_yaw = 0;
109 } __attribute__((packed));
115 bool needs_push =
false;
122 void on_size_allocate(Gtk::Allocation &alloc)
override;
123 void on_realize()
override;
124 bool on_render(
const Glib::RefPtr<Gdk::GLContext> &context)
override;
125 bool on_button_press_event(GdkEventButton *button_event)
override;
126 bool on_motion_notify_event(GdkEventMotion *motion_event)
override;
127 bool on_button_release_event(GdkEventButton *button_event)
override;
128 bool on_scroll_event(GdkEventScroll *scroll_event)
override;
130 glm::vec2 pointer_pos_orig;
131 float cam_azimuth_orig;
132 float cam_elevation_orig;
135 glm::vec2 center_orig;
136 glm::vec3 cam_normal;
138 std::pair<glm::vec3, glm::vec3> bbox;
139 float package_height_max = 0;
141 enum class PanMode { NONE, MOVE, ROTATE };
142 PanMode pan_mode = PanMode::NONE;
149 GLuint depthrenderbuffer;
150 unsigned int num_samples = 1;
151 bool needs_resize =
false;
153 void resize_buffers();
157 void prepare_layer(
int layer);
158 void prepare_soldermask(
int layer);
159 void prepare_packages();
160 float get_layer_offset(
int layer);
161 const class Board *brd =
nullptr;
162 void add_path(
int layer,
const ClipperLib::Path &path);
164 void load_models_thread(std::set<std::string> model_filenames, std::string base_path);
166 std::unordered_map<int, Layer3D> layers;
168 std::mutex models_loading_mutex;
169 std::vector<FaceVertex> face_vertex_buffer;
170 std::vector<unsigned int> face_index_buffer;
171 std::map<std::string, std::pair<size_t, size_t>> models;
173 Glib::Dispatcher models_loading_dispatcher;
175 std::vector<ModelTransform> package_transforms;
178 std::map<std::string, std::pair<size_t, size_t>>
179 package_transform_idxs;
182 type_signal_models_loading s_signal_models_loading;
Definition: canvas_patch.hpp:6
Definition: canvas3d.hpp:58
Definition: clipper.hpp:136
Definition: canvas3d.hpp:77
Definition: canvas3d.hpp:60
Stores objects (Unit, Entity, Symbol, Part, etc.) from the pool.
Definition: pool.hpp:18
Definition: canvas3d.hpp:15
Definition: common.hpp:205
Definition: background.hpp:5