summaryrefslogtreecommitdiffstats
path: root/wgpu/src/image/atlas/entry.rs
blob: 0c2f67fc8088ff32a1e72dac88a8d0f882925377 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::image::atlas;
use iced_graphics::image::TextureStoreEntry;

#[derive(Debug)]
pub enum Entry {
    Contiguous(atlas::Allocation),
    Fragmented {
        size: (u32, u32),
        fragments: Vec<Fragment>,
    },
}

impl TextureStoreEntry for Entry {
    fn size(&self) -> (u32, u32) {
        match self {
            Entry::Contiguous(allocation) => allocation.size(),
            Entry::Fragmented { size, .. } => *size,
        }
    }
}

#[derive(Debug)]
pub struct Fragment {
    pub position: (u32, u32),
    pub allocation: atlas::Allocation,
}