41{
42
43 std::vector<ExPolygons> name_shapes(
m_input.styles.size());
44 std::vector<double> scales(
m_input.styles.size());
45 m_images = std::vector<StyleManager::StyleImage>(
m_input.styles.size());
46
48 for (
auto &item :
m_input.styles) {
49 size_t index = &item - &
m_input.styles.front();
52
53
54 StyleManager::StyleImage &image =
m_images[index];
56 for (const ExPolygon &shape : shapes)
59
61 continue;
62
63
64
65 constexpr float preview_padding_px = 2.f;
66
70
71
72 image.
tex_size.x = std::ceil(bb2.max.x() - bb2.min.x()) + 2 * preview_padding_px;
73 image.
tex_size.y = std::ceil(bb2.max.y() - bb2.min.y()) + 2 * preview_padding_px;
74
77
78 scales[index] =
scale;
79 }
80
81
82 int offset_y = 0;
84 for (StyleManager::StyleImage &image :
m_images) {
85 image.
offset.y() = offset_y;
89 }
91 for (StyleManager::StyleImage &image :
m_images) {
96 image.
uv1 = ImVec2((o.x() + s.x) / (
double)
m_width,
98 }
99
100
102
103
104 for (StyleManager::StyleImage &image :
m_images) {
106 size_t index = &image - &
m_images.front();
108 sla::PixelDim dim(pixel_dim, pixel_dim);
109 double gamma = 1.;
110 std::unique_ptr<sla::RasterBase> r =
112 for (const ExPolygon &shape : name_shapes[index]) r->draw(shape);
113
114
116 (
const void *ptr,
size_t width,
size_t height,
size_t num_components) {
117
118 unsigned char gray_level = 1;
119 size_t size {static_cast<size_t>(w*h)};
120 assert((
offset.x() + width) <= (
size_t)w);
121 assert((
offset.y() + height) <= (
size_t)h);
122 const unsigned char *ptr2 = (const unsigned char *) ptr;
123 for (
size_t x = 0; x <
width; ++x)
124 for (
size_t y = 0; y <
height; ++y) {
126 assert(index < size);
127 if (index >= size) continue;
128 pix[4*index+3] = ptr2[y *
width + x] / gray_level;
129 }
130 return sla::EncodedRaster();
131 };
132 r->encode(encoder);
133 }
134}
int scale(const int val)
Definition WipeTowerDialog.cpp:58
PointType size() const
Definition BoundingBox.cpp:187
void merge(const PointType &point)
Definition BoundingBox.cpp:139
PointType max
Definition BoundingBox.hpp:21
PointType min
Definition BoundingBox.hpp:20
ImVec2 tex_size
Definition EmbossStyleManager.hpp:186
ImVec2 uv0
Definition EmbossStyleManager.hpp:187
Point offset
Definition EmbossStyleManager.hpp:189
ImVec2 uv1
Definition EmbossStyleManager.hpp:188
BoundingBox bounding_box
Definition EmbossStyleManager.hpp:185
double SCALING_FACTOR
Definition libslic3r.cpp:3
HealedExPolygons text2shapes(FontFileWithCache &font, const char *text, const FontProp &font_prop, const std::function< bool()> &was_canceled=[]() {return false;})
Convert text into polygons.
Definition Emboss.cpp:1388
Kernel::Point_3 Point
Definition MeshRepair.cpp:81
coord_t width(const BoundingBox &box)
Definition Arrange.cpp:1184
coord_t height(const BoundingBox &box)
Definition Arrange.cpp:1185
std::function< EncodedRaster(const void *ptr, size_t w, size_t h, size_t num_components)> RasterEncoder
Definition RasterBase.hpp:59
std::unique_ptr< RasterBase > create_raster_grayscale_aa(const Resolution &res, const PixelDim &pxdim, double gamma, const RasterBase::Trafo &tr)
Definition RasterBase.cpp:77
std::vector< ExPolygon > ExPolygons
Definition ExPolygon.hpp:20
BoundingBoxf3 bounding_box(const TriangleMesh &m)
Definition TriangleMesh.hpp:391
zaa_minimize_perimeter_height resolution((ConfigOptionFloats, retraction_minimum_travel))((ConfigOptionBools
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582
auto was_canceled(const Job::Ctl &ctl, const DataBase &base)
Definition EmbossJob.cpp:292