kos_sys/addons/
img.rs

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Rust for KallistiOS/Dreamcast
// Copyright (C) 2024 Eric Fradella
// https://dreamcast.rs/

use crate::prelude::*;

#[repr(C)]
pub struct kos_img_t {
    pub data:       *mut c_void,
    pub w:          u32,
    pub h:          u32,
    pub fmt:        u32,
    pub byte_count: u32,
}

#[inline]
pub const fn KOS_IMG_FMT_I(x: u32) -> u32 {
    x & 0xFFFF
}

#[inline]
pub const fn KOS_IMG_FMT_D(x: u32) -> u32 {
    (x >> 16) & 0xFFFF
}

#[inline]
pub const fn KOS_IMG_FMT(i: u32, d: u32) -> u32 {
    (i & 0xFFFF) | ((d & 0xFFFF) << 16)
}

pub const KOS_IMG_FMT_NONE: u32     = 0x00;
pub const KOS_IMG_FMT_RGB888: u32   = 0x01;
pub const KOS_IMG_FMT_ARGB8888: u32 = 0x02;
pub const KOS_IMG_FMT_RGB565: u32   = 0x03;
pub const KOS_IMG_FMT_ARGB4444: u32 = 0x04;
pub const KOS_IMG_FMT_ARGB1555: u32 = 0x05;
pub const KOS_IMG_FMT_PAL4BPP: u32  = 0x06;
pub const KOS_IMG_FMT_PAL8BPP: u32  = 0x07;
pub const KOS_IMG_FMT_YUV422: u32   = 0x08;
pub const KOS_IMG_FMT_BGR565: u32   = 0x09;
pub const KOS_IMG_FMT_RGBA8888: u32 = 0x10;
pub const KOS_IMG_FMT_MASK: u32     = 0xFF;
pub const KOS_IMG_INVERTED_X: u32   = 0x0100;
pub const KOS_IMG_INVERTED_Y: u32   = 0x0200;

pub const KOS_IMG_NOT_OWNER: u32    = 0x0400;

#[link(name = "kallisti")]
extern "C" {
    pub fn kos_img_free(img: *mut kos_img_t, struct_also: c_int);
}