Newer
Older
render::unified::pipeline::{ExtractQuadBundle, ExtractedQuad, UIQuadType},
render_primitive::RenderPrimitive,
styles::Corner,
use super::font_mapping::FontMapping;
render_primitive: &RenderPrimitive,
fonts: &Res<Assets<KayakFont>>,
font_mapping: &Res<FontMapping>,
) -> Vec<ExtractQuadBundle> {
let (background_color, text_layout, layout, font, properties, subpixel) = match render_primitive
{
RenderPrimitive::Text {
color,
text_layout,
layout,
font,
properties,
} => (color, text_layout, layout, font, *properties, subpixel),
let font_handle = font_mapping.get_handle(font.clone()).unwrap();
let forced = font_mapping.get_subpixel_forced(&font_handle);
let base_position = Vec2::new(layout.posx, layout.posy + properties.font_size);
for glyph_rect in text_layout.glyphs() {
let mut position = Vec2::from(glyph_rect.position);
position += base_position;
let size = Vec2::from(glyph_rect.size);
extracted_texts.push(ExtractQuadBundle {
extracted_quad: ExtractedQuad {
font_handle: Some(font_handle.clone()),
rect: Rect {
min: position,
max: position + size,
char_id: font.get_char_id(glyph_rect.content).unwrap(),
z_index: layout.z_index,
quad_type: if *subpixel || forced {
UIQuadType::TextSubpixel
} else {
UIQuadType::Text
},
image: None,
uv_max: None,
uv_min: None,
},
});