maplibre/legacy/
glyph_atlas.rs

1//! Translated from https://github.com/maplibre/maplibre-native/blob/4add9ea/src/mbgl/text/glyph_atlas.cpp
2
3use std::collections::BTreeMap;
4
5use crate::{
6    euclid::Rect,
7    legacy::{
8        font_stack::FontStackHash,
9        glyph::{GlyphID, GlyphMap, GlyphMetrics},
10        TileSpace,
11    },
12};
13
14// TODO structs
15/// maplibre/maplibre-native#4add9ea original name: AlphaImage
16pub struct AlphaImage;
17
18/// maplibre/maplibre-native#4add9ea original name: GlyphPosition
19#[derive(Clone, Copy, Default)]
20pub struct GlyphPosition {
21    pub rect: Rect<u16, TileSpace>,
22    pub metrics: GlyphMetrics,
23}
24
25/// maplibre/maplibre-native#4add9ea original name: GlyphPositionMap
26pub type GlyphPositionMap = BTreeMap<GlyphID, GlyphPosition>;
27/// maplibre/maplibre-native#4add9ea original name: GlyphPositions
28pub type GlyphPositions = BTreeMap<FontStackHash, GlyphPositionMap>;
29
30/// maplibre/maplibre-native#4add9ea original name: GlyphAtlas
31pub struct GlyphAtlas {
32    pub image: AlphaImage,
33    pub positions: GlyphPositions,
34}
35
36/// maplibre/maplibre-native#4add9ea original name: makeGlyphAtlas
37pub fn make_glyph_atlas(glyphs: &GlyphMap) -> GlyphAtlas {
38    todo!() // Shelfpack library!
39}