Initialize model and lines.
244{
247 return;
249 assert(ffc.has_value());
250 if (!ffc.has_value())
251 return;
252 const auto &ff_ptr = ffc.font_file;
253 assert(ff_ptr != nullptr);
254 if (ff_ptr == nullptr)
255 return;
256 const FontFile &ff = *ff_ptr;
258
260
262 assert(line_height_mm > 0);
263 if (line_height_mm <= 0)
264 return;
265
268
269
272 std::vector<float> line_centers(count_lines);
273 for (size_t i = 0; i < count_lines; ++i)
274 line_centers[i] = static_cast<float>(first_line_center - i * line_height_mm);
275
276
279
280 std::vector<Polygons> line_contours(count_lines);
281 for (const ModelVolume *volume : volumes_to_slice) {
282 MeshSlicingParams slicing_params;
283 slicing_params.
trafo = c_trafo_inv * volume->get_matrix();
284 for (size_t i = 0; i < count_lines; ++i) {
286 if (polys.empty())
287 continue;
288 Polygons &contours = line_contours[i];
289 contours.insert(contours.end(), polys.begin(), polys.end());
290 }
291 }
292
293
294
295 for (
Polygons &contours: line_contours) {
296 if (!contours.empty())
297 continue;
298
299
300 float line_center = 0.f;
301 for (const ModelVolume *volume : volumes_to_slice) {
302 MeshSlicingParams slicing_params;
303 slicing_params.
trafo = c_trafo_inv * volume->get_matrix();
305 if (polys.empty())
306 continue;
307 contours.insert(contours.end(), polys.begin(), polys.end());
308 }
309 }
310
312 assert(
m_lines.size() == count_lines);
313 assert(line_centers.size() == count_lines);
314 for (size_t i = 0; i < count_lines; ++i)
315 m_lines[i].y = line_centers[i];
316
318 float radius = static_cast<float>(line_height_mm / 20.);
319
322 return;
323 m_model.init_from(std::move(geometry));
324
325
326
327
328
329
330}
const FontProp & get_font_prop() const
Definition EmbossStyleManager.hpp:123
Slic3r::Emboss::FontFileWithCache & get_font_file_with_cache()
Definition EmbossStyleManager.hpp:127
bool is_active_font()
Definition EmbossStyleManager.cpp:320
static double calc_line_height_in_mm(const Slic3r::Emboss::FontFile &ff, const FontProp &fp)
Definition TextLines.cpp:367
GLModel m_model
Definition TextLines.hpp:41
const double ascent_ratio_offset
Definition TextLines.hpp:46
double get_align_y_offset_in_mm(FontProp::VerticalAlign align, unsigned count_lines, const FontFile &ff, const FontProp &fp)
Calculate Vertical align.
Definition Emboss.cpp:2115
Eigen::Transform< double, 3, Eigen::Affine, Eigen::DontAlign > Transform3d
Definition Point.hpp:96
std::vector< Polygon, PointsAllocator< Polygon > > Polygons
Definition Polygon.hpp:22
bool has_reflection(const Transform3d &transform)
Check whether transformation matrix contains odd number of mirroring. NOTE: In code is sometime funct...
Definition Point.hpp:179
std::vector< Polygons > slice_mesh(const indexed_triangle_set &mesh, const std::vector< float > &zs, const MeshSlicingParams ¶ms, std::function< void()> throw_on_cancel)
Definition TriangleMeshSlicer.cpp:1997
Eigen::AngleAxis< double > get_rotation()
Definition TextLines.cpp:195
GLModel::Geometry create_geometry(const TextLines &lines, float radius, bool is_mirrored)
Definition TextLines.cpp:213
TextLines select_closest_contour(const std::vector< Polygons > &line_contours)
Definition TextLines.cpp:154
VerticalAlign
Definition TextConfiguration.hpp:50
Align align
Definition TextConfiguration.hpp:54
float size_in_mm
Definition TextConfiguration.hpp:63
size_t indices_count() const
Definition GLModel.hpp:101
size_t vertices_count() const
Definition GLModel.hpp:100
Transform3d trafo
Definition TriangleMeshSlicer.hpp:41