3 #include "common/common.hpp"
4 #include "canvas_mesh.hpp"
5 #include "canvas/appearance.hpp"
6 #include "util/uuid.hpp"
11 #include "background.hpp"
23 Color background_top_color;
24 Color background_bottom_color;
25 Color get_layer_color(
int layer)
const;
27 bool show_solder_mask =
true;
28 bool show_silkscreen =
true;
29 bool show_substrate =
true;
30 bool show_models =
true;
31 bool show_dnp_models =
false;
32 bool show_solder_paste =
true;
33 bool use_layer_colors =
false;
34 Color solder_mask_color = {0, .5, 0};
35 Color substrate_color = {.2, .15, 0};
37 float highlight_intensity = .5;
39 float cam_azimuth = 90;
40 float cam_elevation = 45;
41 float cam_distance = 20;
46 enum class Projection { PERSP, ORTHO };
47 Projection projection = Projection::PERSP;
52 : x(ix), y(iy), z(iz), r(ir), g(ig), b(ib), _pad(0)
63 } __attribute__((packed));
67 ModelTransform(
float ix,
float iy,
float a,
bool flip,
bool highlight)
68 : x(ix), y(iy), angle(a), flags(flip | (highlight << 1))
82 } __attribute__((packed));
84 void clear_3d_models();
98 void resize_buffers();
100 enum class RenderBackground { YES, NO };
101 void render(RenderBackground mode = RenderBackground::YES);
102 virtual int a_get_scale_factor()
const;
104 void prepare_packages();
106 unsigned int num_samples = 1;
108 const class Board *brd =
nullptr;
110 std::set<UUID> packages_highlight;
112 void load_3d_model(
const std::string &filename,
const std::string &filename_abs);
114 std::map<std::string, std::string> get_model_filenames(
class IPool &pool);
116 std::mutex models_loading_mutex;
118 void update_max_package_height();
121 float get_layer_offset(
int layer)
const;
122 float get_layer_thickness(
int layer)
const;
123 bool layer_is_visible(
int layer)
const;
125 std::pair<glm::vec3, glm::vec3> bbox;
129 GLuint depthrenderbuffer;
133 glm::vec3 cam_normal;
135 float package_height_max = 0;
136 std::vector<FaceVertex> face_vertex_buffer;
137 std::vector<unsigned int> face_index_buffer;
138 std::map<std::string, std::pair<size_t, size_t>> models;
141 std::vector<ModelTransform> package_transforms;
144 std::map<std::pair<std::string, bool>, std::pair<size_t, size_t>>
145 package_transform_idxs;
148 float get_magic_number()
const;