Working example
This commit is contained in:
108
sdl3/image/sdl_image.odin
Normal file
108
sdl3/image/sdl_image.odin
Normal file
@@ -0,0 +1,108 @@
|
||||
// Bindings for [[ SDL3 Image ; https://wiki.libsdl.org/SDL3_image/FrontPage ]].
|
||||
package sdl3_image
|
||||
|
||||
import "core:c"
|
||||
import SDL "vendor:sdl3"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
foreign import lib "SDL3_image.lib"
|
||||
} else {
|
||||
foreign import lib "system:SDL3_image"
|
||||
}
|
||||
|
||||
MAJOR_VERSION :: 3
|
||||
MINOR_VERSION :: 2
|
||||
PATCHLEVEL :: 4
|
||||
|
||||
Animation :: struct {
|
||||
w, h: c.int,
|
||||
count: c.int,
|
||||
frames: [^]^SDL.Surface,
|
||||
delays: [^]c.int,
|
||||
}
|
||||
|
||||
@(default_calling_convention="c", link_prefix="IMG_")
|
||||
foreign lib {
|
||||
Version :: proc() -> c.int ---
|
||||
|
||||
/* 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_IO :: proc(src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^SDL.Surface ---
|
||||
|
||||
/* Convenience functions */
|
||||
Load :: proc(file: cstring) -> ^SDL.Surface ---
|
||||
Load_IO :: proc(src: ^SDL.IOStream, closeio: bool) -> ^SDL.Surface ---
|
||||
|
||||
/* Load an image directly into a render texture. */
|
||||
LoadTexture :: proc(renderer: ^SDL.Renderer, file: cstring) -> ^SDL.Texture ---
|
||||
LoadTexture_IO :: proc(renderer: ^SDL.Renderer, src: ^SDL.IOStream, closeio: bool) -> ^SDL.Texture ---
|
||||
LoadTextureTyped_IO :: proc(renderer: ^SDL.Renderer, src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^SDL.Texture ---
|
||||
|
||||
/* Functions to detect a file type, given a seekable source */
|
||||
isAVIF :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isICO :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isCUR :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isBMP :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isGIF :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isJPG :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isJXL :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isLBM :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isPCX :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isPNG :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isPNM :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isSVG :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isQOI :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isTIF :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isXCF :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isXPM :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isXV :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
isWEBP :: proc(src: ^SDL.IOStream) -> bool ---
|
||||
|
||||
/* Individual loading functions */
|
||||
LoadAVIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadICO_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadCUR_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadBMP_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadGIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadJPG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadJXL_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadLBM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadPCX_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadPNG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadPNM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadSVG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadQOI_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadTGA_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadTIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadXCF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadXPM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadXV_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
LoadWEBP_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
|
||||
|
||||
LoadSizedSVG_IO :: proc(src: ^SDL.IOStream, width, height: c.int) -> ^SDL.Surface ---
|
||||
|
||||
ReadXPMFromArray :: proc(xpm: [^]cstring) -> ^SDL.Surface ---
|
||||
ReadXPMFromArrayToRGB888 :: proc(xpm: [^]cstring) -> ^SDL.Surface ---
|
||||
|
||||
/* Individual saving functions */
|
||||
SaveAVIF :: proc(surface: ^SDL.Surface, file: cstring, quality: c.int) -> c.bool ---
|
||||
SaveAVIF_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool, quality: c.int) -> c.bool ---
|
||||
SavePNG :: proc(surface: ^SDL.Surface, file: cstring) -> c.bool ---
|
||||
SavePNG_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool) -> c.bool ---
|
||||
SaveJPG :: proc(surface: ^SDL.Surface, file: cstring, quality: c.int) -> c.bool ---
|
||||
SaveJPG_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool, quality: c.int) -> c.bool ---
|
||||
|
||||
LoadAnimation :: proc(file: cstring) -> ^Animation ---
|
||||
LoadAnimation_IO :: proc(src: ^SDL.IOStream, closeio: bool) -> ^Animation ---
|
||||
LoadAnimationTyped_IO :: proc(src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^Animation ---
|
||||
FreeAnimation :: proc(anim: ^Animation) ---
|
||||
|
||||
/* Individual loading functions */
|
||||
LoadGIFAnimation_IO :: proc(src: ^SDL.IOStream) -> ^Animation ---
|
||||
LoadWEBPAnimation_IO :: proc(src: ^SDL.IOStream) -> ^Animation ---
|
||||
}
|
||||
Reference in New Issue
Block a user