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
52
53
|
// A collection of pixels used in software blitting.
//
// This structure should be treated as read-only, except for 'pixels', which, if
// not null, contains the raw pixel data for the surface.
export type SDL_Surface = struct {
flags: u32,
format: *SDL_PixelFormat,
w: int,
h: int,
pitch: int,
pixels: nullable *opaque,
userdata: *opaque,
locked: int,
lock_data: *opaque,
clip_rect: SDL_Rect,
map: *SDL_BlitMap,
refcount: int,
};
export type SDL_BlitMap = opaque;
@symbol("SDL_CreateRGBSurface") fn _SDL_CreateRGBSurface(flags: u32,
width: int, height: int, depth: int, Rmask: u32, Gmask: u32, Bmask: u32,
Amask: u32) *SDL_Surface;
// Allocate a new RGB surface.
export fn SDL_CreateRGBSurface(flags: u32,
width: int, height: int, depth: int, Rmask: u32, Gmask: u32, Bmask: u32,
Amask: u32) (*SDL_Surface | error) = {
return wrapptr(_SDL_CreateRGBSurface(flags, width, height, depth, Rmask,
Gmask, Bmask, Amask))?: *SDL_Surface;
};
@symbol("SDL_FreeSurface") fn _SDL_FreeSurface(surface: nullable *SDL_Surface) void;
// Free an RGB surface.
export fn SDL_FreeSurface(surface: nullable *SDL_Surface) void = {
_SDL_FreeSurface(surface);
};
// NB SDL_BlitSurface is aliased to SDL_UpperBlit via a macro in the SDL header
@symbol("SDL_UpperBlit") fn _SDL_BlitSurface(src: *SDL_Surface,
srcrect: nullable *SDL_Rect, dst: *SDL_Surface, dstrect: nullable *SDL_Rect) int;
// Perform a fast surface copy to a destination surface.
export fn SDL_BlitSurface(src: *SDL_Surface, srcrect: nullable *SDL_Rect, dst: *SDL_Surface, dstrect: nullable *SDL_Rect) (void | error) = {
return wrapvoid(_SDL_BlitSurface(src, srcrect, dst, dstrect));
};
|