citro3d/render/
transfer.rs1use citro3d_sys::{GX_TRANSFER_IN_FORMAT, GX_TRANSFER_OUT_FORMAT};
2use ctru_sys::GX_TRANSFER_FORMAT;
3
4use super::ColorFormat;
5
6#[derive(Default, Clone, Copy)]
8pub struct Flags(u32);
9
10impl Flags {
11 #[must_use]
13 pub fn in_format(self, fmt: Format) -> Self {
14 Self(self.0 | GX_TRANSFER_IN_FORMAT(fmt as GX_TRANSFER_FORMAT))
15 }
16
17 #[must_use]
19 pub fn out_format(self, fmt: Format) -> Self {
20 Self(self.0 | GX_TRANSFER_OUT_FORMAT(fmt as GX_TRANSFER_FORMAT))
21 }
22
23 #[must_use]
24 pub fn bits(self) -> u32 {
25 self.0
26 }
27}
28
29#[repr(u8)]
35#[doc(alias = "GX_TRANSFER_FORMAT")]
36pub enum Format {
37 RGBA8 = ctru_sys::GX_TRANSFER_FMT_RGBA8,
39 RGB8 = ctru_sys::GX_TRANSFER_FMT_RGB8,
41 RGB565 = ctru_sys::GX_TRANSFER_FMT_RGB565,
43 RGB5A1 = ctru_sys::GX_TRANSFER_FMT_RGB5A1,
45 RGBA4 = ctru_sys::GX_TRANSFER_FMT_RGBA4,
47}
48
49impl From<ColorFormat> for Format {
50 fn from(color_fmt: ColorFormat) -> Self {
51 match color_fmt {
52 ColorFormat::RGBA8 => Self::RGBA8,
53 ColorFormat::RGB8 => Self::RGB8,
54 ColorFormat::RGBA5551 => Self::RGB5A1,
55 ColorFormat::RGB565 => Self::RGB565,
56 ColorFormat::RGBA4 => Self::RGBA4,
57 }
58 }
59}