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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
// Bindings for [[ SDL2 Image; https://wiki.libsdl.org/SDL2_image/FrontPage ]].
package sdl2_image
import "core:c"
import SDL ".."
when ODIN_OS == .Windows {
foreign import lib "SDL2_image.lib"
} else {
foreign import lib "system:SDL2_image"
}
bool :: SDL.bool
MAJOR_VERSION :: 2
MINOR_VERSION :: 0
PATCHLEVEL :: 5
@(default_calling_convention="c", link_prefix="IMG_")
foreign lib {
Linked_Version :: proc() -> ^SDL.version ---
}
InitFlag :: enum c.int {
JPG = 0,
PNG = 1,
TIF = 2,
WEBP = 3,
}
InitFlags :: distinct bit_set[InitFlag; c.int]
INIT_JPG :: InitFlags{.JPG}
INIT_PNG :: InitFlags{.PNG}
INIT_TIF :: InitFlags{.TIF}
INIT_WEBP :: InitFlags{.WEBP}
/* Animated image support
Currently only animated GIFs are supported.
*/
Animation :: struct {
w, h: c.int,
count: c.int,
frames: [^]^SDL.Surface,
delays: [^]c.int,
}
/* We'll use SDL for reporting errors */
SetError :: SDL.SetError
GetError :: SDL.GetError
@(default_calling_convention="c", link_prefix="IMG_")
foreign lib {
Init :: proc(flags: InitFlags) -> InitFlags ---
Quit :: proc() ---
/* Load an image from an SDL data source.
The 'type' may be one of: "BMP", "GIF", "PNG", etc.
If the image format supports a transparent pixel, SDL will set the
colorkey for the surface. You can enable RLE acceleration on the
surface afterwards by calling:
SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);
*/
LoadTyped_RW :: proc(src: ^SDL.RWops, freesrc: bool, type: cstring) -> ^SDL.Surface ---
/* Convenience functions */
Load :: proc(file: cstring) -> ^SDL.Surface ---
Load_RW :: proc(src: ^SDL.RWops, freesrc: bool) -> ^SDL.Surface ---
/* Load an image directly into a render texture. */
LoadTexture :: proc(renderer: ^SDL.Renderer, file: cstring) -> ^SDL.Texture ---
LoadTexture_RW :: proc(renderer: ^SDL.Renderer, src: ^SDL.RWops, freesrc: bool) -> ^SDL.Texture ---
LoadTextureTyped_RW :: proc(renderer: ^SDL.Renderer, src: ^SDL.RWops, freesrc: bool, type: cstring) -> ^SDL.Texture ---
/* Functions to detect a file type, given a seekable source */
isICO :: proc(src: ^SDL.RWops) -> bool ---
isCUR :: proc(src: ^SDL.RWops) -> bool ---
isBMP :: proc(src: ^SDL.RWops) -> bool ---
isGIF :: proc(src: ^SDL.RWops) -> bool ---
isJPG :: proc(src: ^SDL.RWops) -> bool ---
isLBM :: proc(src: ^SDL.RWops) -> bool ---
isPCX :: proc(src: ^SDL.RWops) -> bool ---
isPNG :: proc(src: ^SDL.RWops) -> bool ---
isPNM :: proc(src: ^SDL.RWops) -> bool ---
isSVG :: proc(src: ^SDL.RWops) -> bool ---
isTIF :: proc(src: ^SDL.RWops) -> bool ---
isXCF :: proc(src: ^SDL.RWops) -> bool ---
isXPM :: proc(src: ^SDL.RWops) -> bool ---
isXV :: proc(src: ^SDL.RWops) -> bool ---
isWEBP :: proc(src: ^SDL.RWops) -> bool ---
/* Individual loading functions */
LoadICO_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadCUR_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadBMP_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadGIF_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadJPG_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadLBM_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadPCX_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadPNG_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadPNM_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadSVG_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadTGA_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadTIF_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadXCF_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadXPM_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadXV_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
LoadWEBP_RW :: proc(src: ^SDL.RWops) -> ^SDL.Surface ---
ReadXPMFromArray :: proc(xpm: [^]cstring) -> ^SDL.Surface ---
/* Individual saving functions */
SavePNG :: proc(surface: ^SDL.Surface, file: cstring) -> c.int ---
SavePNG_RW :: proc(surface: ^SDL.Surface, dst: ^SDL.RWops, freedst: bool) -> c.int ---
SaveJPG :: proc(surface: ^SDL.Surface, file: cstring, quality: c.int) -> c.int ---
SaveJPG_RW :: proc(surface: ^SDL.Surface, dst: ^SDL.RWops, freedst: bool, quality: c.int) -> c.int ---
LoadAnimation :: proc(file: cstring) -> ^Animation ---
LoadAnimation_RW :: proc(src: ^SDL.RWops, freesrc: bool) -> ^Animation ---
LoadAnimationTyped_RW :: proc(src: ^SDL.RWops, freesrc: bool, type: cstring) -> ^Animation ---
FreeAnimation :: proc(anim: ^Animation) ---
/* Individual loading functions */
LoadGIFAnimation_RW :: proc(src: ^SDL.RWops) -> ^Animation ---
}
|