playdate_graphics/bitmap/
api.rs1use core::ffi::c_char;
2use core::ffi::c_float;
3use core::ffi::c_int;
4
5use sys::ffi::LCDColor;
6use sys::ffi::LCDBitmap;
7use sys::ffi::LCDBitmapFlip;
8use sys::ffi::LCDRect;
9use sys::ffi::LCDSolidColor;
10
11
12pub type Default = crate::api::Default;
16
17pub type Cache = crate::api::Cache;
23
24
25pub trait Api {
27 #[doc(alias = "sys::ffi::playdate_graphics::newBitmap")]
29 fn new_bitmap(&self)
30 -> unsafe extern "C" fn(width: c_int, height: c_int, bgcolor: LCDColor) -> *mut LCDBitmap {
31 *sys::api!(graphics.newBitmap)
32 }
33
34 #[doc(alias = "sys::ffi::playdate_graphics::freeBitmap")]
36 fn free_bitmap(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap) { *sys::api!(graphics.freeBitmap) }
37
38 #[doc(alias = "sys::ffi::playdate_graphics::loadBitmap")]
40 fn load_bitmap(&self)
41 -> unsafe extern "C" fn(path: *const c_char, outerr: *mut *const c_char) -> *mut LCDBitmap {
42 *sys::api!(graphics.loadBitmap)
43 }
44
45 #[doc(alias = "sys::ffi::playdate_graphics::copyBitmap")]
47 fn copy_bitmap(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap) -> *mut LCDBitmap {
48 *sys::api!(graphics.copyBitmap)
49 }
50
51 #[doc(alias = "sys::ffi::playdate_graphics::loadIntoBitmap")]
53 fn load_into_bitmap(
54 &self)
55 -> unsafe extern "C" fn(path: *const c_char, bitmap: *mut LCDBitmap, out_err: *mut *const c_char) {
56 *sys::api!(graphics.loadIntoBitmap)
57 }
58
59 #[doc(alias = "sys::ffi::playdate_graphics::getBitmapData")]
61 fn get_bitmap_data(
62 &self)
63 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap,
64 width: *mut c_int,
65 height: *mut c_int,
66 row_bytes: *mut c_int,
67 mask: *mut *mut u8,
68 data: *mut *mut u8) {
69 *sys::api!(graphics.getBitmapData)
70 }
71
72 #[doc(alias = "sys::ffi::playdate_graphics::clearBitmap")]
74 fn clear_bitmap(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap, bgcolor: LCDColor) {
75 *sys::api!(graphics.clearBitmap)
76 }
77
78 #[doc(alias = "sys::ffi::playdate_graphics::rotatedBitmap")]
80 fn rotated_bitmap(
81 &self)
82 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap,
83 rotation: c_float,
84 x_scale: c_float,
85 y_scale: c_float,
86 allocedSize: *mut c_int) -> *mut LCDBitmap {
87 *sys::api!(graphics.rotatedBitmap)
88 }
89
90 #[doc(alias = "sys::ffi::playdate_graphics::setBitmapMask")]
92 fn set_bitmap_mask(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap, mask: *mut LCDBitmap) -> c_int {
93 *sys::api!(graphics.setBitmapMask)
94 }
95
96 #[doc(alias = "sys::ffi::playdate_graphics::getBitmapMask")]
98 fn get_bitmap_mask(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap) -> *mut LCDBitmap {
99 *sys::api!(graphics.getBitmapMask)
100 }
101
102 #[doc(alias = "sys::ffi::playdate_graphics::drawBitmap")]
104 fn draw_bitmap(&self)
105 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap, x: c_int, y: c_int, flip: LCDBitmapFlip) {
106 *sys::api!(graphics.drawBitmap)
107 }
108
109 #[doc(alias = "sys::ffi::playdate_graphics::tileBitmap")]
111 fn tile_bitmap(
112 &self)
113 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap,
114 x: c_int,
115 y: c_int,
116 width: c_int,
117 height: c_int,
118 flip: LCDBitmapFlip) {
119 *sys::api!(graphics.tileBitmap)
120 }
121
122 #[doc(alias = "sys::ffi::playdate_graphics::drawRotatedBitmap")]
124 fn draw_rotated_bitmap(
125 &self)
126 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap,
127 x: c_int,
128 y: c_int,
129 rotation: c_float,
130 center_x: c_float,
131 center_y: c_float,
132 x_scale: c_float,
133 y_scale: c_float) {
134 *sys::api!(graphics.drawRotatedBitmap)
135 }
136
137 #[doc(alias = "sys::ffi::playdate_graphics::drawScaledBitmap")]
139 fn draw_scaled_bitmap(
140 &self)
141 -> unsafe extern "C" fn(bitmap: *mut LCDBitmap, x: c_int, y: c_int, x_scale: c_float, y_scale: c_float) {
142 *sys::api!(graphics.drawScaledBitmap)
143 }
144
145 #[doc(alias = "sys::ffi::playdate_graphics::checkMaskCollision")]
147 fn check_mask_collision(
148 &self)
149 -> unsafe extern "C" fn(bitmap1: *mut LCDBitmap,
150 x1: c_int,
151 y1: c_int,
152 flip1: LCDBitmapFlip,
153 bitmap2: *mut LCDBitmap,
154 x2: c_int,
155 y2: c_int,
156 flip2: LCDBitmapFlip,
157 rect: LCDRect) -> c_int {
158 *sys::api!(graphics.checkMaskCollision)
159 }
160
161 #[doc(alias = "sys::ffi::playdate_graphics::setColorToPattern")]
163 fn set_color_to_pattern(
164 &self)
165 -> unsafe extern "C" fn(color: *mut LCDColor,
166 bitmap: *mut LCDBitmap,
167 x: core::ffi::c_int,
168 y: core::ffi::c_int) {
169 *sys::api!(graphics.setColorToPattern)
170 }
171
172
173 #[doc(alias = "sys::ffi::playdate_graphics::getBitmapPixel")]
175 #[inline(always)]
176 fn get_pixel(&self) -> unsafe extern "C" fn(bitmap: *mut LCDBitmap, x: c_int, y: c_int) -> LCDSolidColor {
177 *sys::api!(graphics.getBitmapPixel)
178 }
179}