Rasterize text into image (result).
46{
47 if (!wxFontEnumerator::IsValidFacename(
m_input.font_name))
return;
48
49 wxFont wx_font(
50 wxFontInfo().FaceName(
m_input.font_name).Encoding(
m_input.encoding));
51 if (!wx_font.IsOk()) return;
52
53 std::unique_ptr<Emboss::FontFile> font_file =
55 if (font_file == nullptr) return;
56
57 Emboss::FontFileWithCache font_file_with_cache(std::move(font_file));
58
59 std::string& text =
m_input.text;
60 if (text.empty())
62
63 size_t enter_pos = text.find('\n');
64 if (enter_pos < text.size()) {
65
66 if (enter_pos == 0) return;
67
68 text = text.substr(0, enter_pos);
69 }
70
72 if (ctl.was_canceled()) return true;
73 if (cancel->load()) return true;
74 return false;
75 };
76
77 FontProp fp;
79
80
81 if (shapes.empty())
83 if (shapes.empty()) {
85 return;
86 }
87
88
90 for (const ExPolygon &shape : shapes)
94 return;
95 }
100 Vec2d size_f = bb2.size();
102
105
106
107 unsigned bit_count = 4;
109
112 sla::PixelDim dim(pixel_dim, pixel_dim);
113 double gamma = 1.;
114 std::unique_ptr<sla::RasterBase> r =
117 for (const ExPolygon &shape : shapes) r->draw(shape);
118
119
122 gray_level =
m_input.gray_level]
123 (
const void *ptr,
size_t width,
size_t height,
size_t num_components) {
124 size_t size {static_cast<size_t>(w*h)};
125 const unsigned char *ptr2 = (const unsigned char *) ptr;
126 for (
size_t x = 0; x <
width; ++x)
127 for (
size_t y = 0; y <
height; ++y) {
128 size_t index = y*w + x;
129 assert(index < size);
130 if (index >= size) continue;
131 pix[3+4*index] = ptr2[y *
width + x] / gray_level;
132 }
133 return sla::EncodedRaster();
134 };
135 r->encode(encoder);
136}
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
static const std::string default_text
Text used for generate preview for empty text and when no glyph for given m_input....
Definition CreateFontNameImageJob.hpp:80
static std::unique_ptr< Slic3r::Emboss::FontFile > create_font_file(const wxFont &font)
Definition WxFontUtils.cpp:93
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
Eigen::Matrix< double, 2, 1, Eigen::DontAlign > Vec2d
Definition Point.hpp:67
auto was_canceled(const Job::Ctl &ctl, const DataBase &base)
Definition EmbossJob.cpp:292