swash/scale/
image.rs

1/*!
2Rendered glyph image.
3*/
4
5use super::Source;
6use alloc::vec::Vec;
7use zeno::Placement;
8
9/// Content of a scaled glyph image.
10#[derive(Copy, Clone, PartialEq, Eq, Debug)]
11pub enum Content {
12    /// 8-bit alpha mask.
13    Mask,
14    /// 32-bit RGBA subpixel mask.
15    SubpixelMask,
16    /// 32-bit RGBA bitmap.
17    Color,
18}
19
20impl Default for Content {
21    fn default() -> Self {
22        Self::Mask
23    }
24}
25
26/// Scaled glyph image.
27#[derive(Clone, Default)]
28pub struct Image {
29    /// Source of the image.
30    pub source: Source,
31    /// Content of the image.
32    pub content: Content,
33    /// Offset and size of the image.
34    pub placement: Placement,
35    /// Raw image data.
36    pub data: Vec<u8>,
37}
38
39impl Image {
40    /// Creates a new empty scaled image.
41    pub fn new() -> Self {
42        Self::default()
43    }
44
45    /// Resets the image to a default state.
46    pub fn clear(&mut self) {
47        self.source = Source::default();
48        self.content = Content::default();
49        self.placement = Placement::default();
50        self.data.clear();
51    }
52}