maplibre/legacy/
image.rs

1//! Translated from https://github.com/maplibre/maplibre-native/blob/4add9ea/src/mbgl/style/image.cpp
2
3use std::{cmp::Ordering, collections::HashMap};
4
5// TODO
6/// maplibre/maplibre-native#4add9ea original name: ImageManager
7pub struct ImageManager;
8/// maplibre/maplibre-native#4add9ea original name: PremultipliedImage
9pub struct PremultipliedImage;
10
11/// maplibre/maplibre-native#4add9ea original name: ImageStretch
12pub type ImageStretch = (f64, f64);
13/// maplibre/maplibre-native#4add9ea original name: ImageStretches
14pub type ImageStretches = Vec<ImageStretch>;
15
16/// maplibre/maplibre-native#4add9ea original name: ImageContent
17#[derive(Clone)]
18pub struct ImageContent {
19    pub left: f64,
20    pub top: f64,
21    pub right: f64,
22    pub bottom: f64,
23}
24
25/// maplibre/maplibre-native#4add9ea original name: Image
26pub struct Image {
27    pub id: String,
28
29    image: PremultipliedImage,
30
31    // Pixel ratio of the sprite image.
32    pub pixel_ratio: f64,
33
34    // Whether this image should be interpreted as a signed distance field icon.
35    pub sdf: bool,
36
37    // Stretch areas of this image.
38    pub stretch_x: Option<ImageStretches>,
39    pub stretch_y: Option<ImageStretches>,
40
41    // The space where text can be fit into this image.
42    pub content: Option<ImageContent>,
43}
44
45impl PartialEq<Self> for Image {
46    /// maplibre/maplibre-native#4add9ea original name: eq
47    fn eq(&self, other: &Self) -> bool {
48        self.id.eq(&other.id)
49    }
50}
51
52impl PartialOrd<Self> for Image {
53    /// maplibre/maplibre-native#4add9ea original name: partial_cmp
54    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
55        self.id.partial_cmp(&other.id)
56    }
57}
58
59/// maplibre/maplibre-native#4add9ea original name: ImageType
60pub enum ImageType {
61    Icon,
62    Pattern,
63}
64
65/// maplibre/maplibre-native#4add9ea original name: ImageMap
66pub type ImageMap = HashMap<String, Image>;
67/// maplibre/maplibre-native#4add9ea original name: ImageDependencies
68pub type ImageDependencies = HashMap<String, ImageType>;
69/// maplibre/maplibre-native#4add9ea original name: ImageRequestPair
70pub type ImageRequestPair = (ImageDependencies, u64);
71/// maplibre/maplibre-native#4add9ea original name: ImageVersionMap
72pub type ImageVersionMap = HashMap<String, u32>;