69 return std::round(x * 3.0f) / 3.0f;
109template <
typename AtlasT>
111 const std::u32string&
text,
115 std::vector<SdfTextQuad> quads;
116 quads.reserve(
text.size());
117 const float base =
static_cast<float>(atlas.base_size());
118 if (base <= 0.0f)
return quads;
119 const float scale = render_size / base;
124 for (
char32_t c :
text) {
125 const auto* g = atlas.glyph(c);
129 q.dst_x =
snap_pen_x(pen_x + g->bearing_x * scale, opts.snap);
130 q.dst_y = pen_y - g->bearing_y * scale;
131 q.dst_w = g->width * scale;
132 q.dst_h = g->height * scale;
133 q.src_x =
static_cast<float>(g->atlas_x);
134 q.src_y =
static_cast<float>(g->atlas_y);
135 q.src_w =
static_cast<float>(g->width);
136 q.src_h =
static_cast<float>(g->height);
138 pen_x += g->advance * scale;
158template <
typename AtlasT>
159inline std::vector<SdfTextQuad>
161 float x,
float y,
float render_size,
166template <
typename AtlasT>
167inline std::vector<SdfTextQuad>
169 float x,
float y,
float render_size,
174template <
typename AtlasT>
175inline std::vector<SdfTextQuad>
177 float x,
float y,
float render_size,
Definition affine_transform.hpp:24
SdfPenSnap
Definition sdf_text.hpp:26
@ Nearest
Definition sdf_text.hpp:28
@ Free
Definition sdf_text.hpp:27
@ SubpixelThird
Definition sdf_text.hpp:29
std::vector< SdfTextQuad > fill_text_msdf(const AtlasT &atlas, const std::u32string &text, float x, float y, float render_size, const SdfTextOptions &opts={})
Definition sdf_text.hpp:168
std::vector< SdfTextQuad > fill_text_sdf(const AtlasT &atlas, const std::u32string &text, float x, float y, float render_size, const SdfTextOptions &opts={})
Definition sdf_text.hpp:160
float snap_pen_y(float y, SdfPenSnap policy)
Definition sdf_text.hpp:74
std::vector< SdfTextQuad > build_text_quads(const AtlasT &atlas, const std::u32string &text, float x, float y, float render_size, const SdfTextOptions &opts={})
Definition sdf_text.hpp:110
@ text
Definition scene_node.hpp:96
std::vector< SdfTextQuad > fill_text_psdf(const AtlasT &atlas, const std::u32string &text, float x, float y, float render_size, const SdfTextOptions &opts={})
Definition sdf_text.hpp:176
float snap_pen_x(float x, SdfPenSnap policy)
Definition sdf_text.hpp:62
Definition sdf_text.hpp:35
float mip_bias
Definition sdf_text.hpp:48
SdfPenSnap snap
Definition sdf_text.hpp:55
float edge
Definition sdf_text.hpp:39
float softness
Definition sdf_text.hpp:43
float gamma
Definition sdf_text.hpp:52
Definition sdf_text.hpp:92
float src_w
Definition sdf_text.hpp:96
char32_t codepoint
Definition sdf_text.hpp:97
float dst_y
Definition sdf_text.hpp:94
float src_y
Definition sdf_text.hpp:96
float dst_w
Definition sdf_text.hpp:94
float dst_x
Definition sdf_text.hpp:94
float src_x
Definition sdf_text.hpp:96
float dst_h
Definition sdf_text.hpp:94
float src_h
Definition sdf_text.hpp:96