sdl_image.odin 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package sdl3_image
  2. import "core:c"
  3. import SDL "vendor:sdl3"
  4. when ODIN_OS == .Windows {
  5. foreign import lib "SDL3_image.lib"
  6. } else {
  7. foreign import lib "system:SDL3_image"
  8. }
  9. MAJOR_VERSION :: 3
  10. MINOR_VERSION :: 2
  11. PATCHLEVEL :: 4
  12. Animation :: struct {
  13. w, h: c.int,
  14. count: c.int,
  15. frames: [^]^SDL.Surface,
  16. delays: [^]c.int,
  17. }
  18. @(default_calling_convention="c", link_prefix="IMG_")
  19. foreign lib {
  20. Version :: proc() -> c.int ---
  21. /* Load an image from an SDL data source.
  22. The 'type' may be one of: "BMP", "GIF", "PNG", etc.
  23. If the image format supports a transparent pixel, SDL will set the
  24. colorkey for the surface. You can enable RLE acceleration on the
  25. surface afterwards by calling:
  26. SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);
  27. */
  28. LoadTyped_IO :: proc(src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^SDL.Surface ---
  29. /* Convenience functions */
  30. Load :: proc(file: cstring) -> ^SDL.Surface ---
  31. Load_IO :: proc(src: ^SDL.IOStream, closeio: bool) -> ^SDL.Surface ---
  32. /* Load an image directly into a render texture. */
  33. LoadTexture :: proc(renderer: ^SDL.Renderer, file: cstring) -> ^SDL.Texture ---
  34. LoadTexture_IO :: proc(renderer: ^SDL.Renderer, src: ^SDL.IOStream, closeio: bool) -> ^SDL.Texture ---
  35. LoadTextureTyped_IO :: proc(renderer: ^SDL.Renderer, src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^SDL.Texture ---
  36. /* Functions to detect a file type, given a seekable source */
  37. isAVIF :: proc(src: ^SDL.IOStream) -> bool ---
  38. isICO :: proc(src: ^SDL.IOStream) -> bool ---
  39. isCUR :: proc(src: ^SDL.IOStream) -> bool ---
  40. isBMP :: proc(src: ^SDL.IOStream) -> bool ---
  41. isGIF :: proc(src: ^SDL.IOStream) -> bool ---
  42. isJPG :: proc(src: ^SDL.IOStream) -> bool ---
  43. isJXL :: proc(src: ^SDL.IOStream) -> bool ---
  44. isLBM :: proc(src: ^SDL.IOStream) -> bool ---
  45. isPCX :: proc(src: ^SDL.IOStream) -> bool ---
  46. isPNG :: proc(src: ^SDL.IOStream) -> bool ---
  47. isPNM :: proc(src: ^SDL.IOStream) -> bool ---
  48. isSVG :: proc(src: ^SDL.IOStream) -> bool ---
  49. isQOI :: proc(src: ^SDL.IOStream) -> bool ---
  50. isTIF :: proc(src: ^SDL.IOStream) -> bool ---
  51. isXCF :: proc(src: ^SDL.IOStream) -> bool ---
  52. isXPM :: proc(src: ^SDL.IOStream) -> bool ---
  53. isXV :: proc(src: ^SDL.IOStream) -> bool ---
  54. isWEBP :: proc(src: ^SDL.IOStream) -> bool ---
  55. /* Individual loading functions */
  56. LoadAVIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  57. LoadICO_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  58. LoadCUR_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  59. LoadBMP_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  60. LoadGIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  61. LoadJPG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  62. LoadJXL_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  63. LoadLBM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  64. LoadPCX_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  65. LoadPNG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  66. LoadPNM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  67. LoadSVG_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  68. LoadQOI_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  69. LoadTGA_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  70. LoadTIF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  71. LoadXCF_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  72. LoadXPM_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  73. LoadXV_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  74. LoadWEBP_IO :: proc(src: ^SDL.IOStream) -> ^SDL.Surface ---
  75. LoadSizedSVG_IO :: proc(src: ^SDL.IOStream, width, height: c.int) -> ^SDL.Surface ---
  76. ReadXPMFromArray :: proc(xpm: [^]cstring) -> ^SDL.Surface ---
  77. ReadXPMFromArrayToRGB888 :: proc(xpm: [^]cstring) -> ^SDL.Surface ---
  78. /* Individual saving functions */
  79. SaveAVIF :: proc(surface: ^SDL.Surface, file: cstring, quality: c.int) -> c.bool ---
  80. SaveAVIF_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool, quality: c.int) -> c.bool ---
  81. SavePNG :: proc(surface: ^SDL.Surface, file: cstring) -> c.bool ---
  82. SavePNG_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool) -> c.bool ---
  83. SaveJPG :: proc(surface: ^SDL.Surface, file: cstring, quality: c.int) -> c.bool ---
  84. SaveJPG_IO :: proc(surface: ^SDL.Surface, dst: ^SDL.IOStream, closeio: bool, quality: c.int) -> c.bool ---
  85. LoadAnimation :: proc(file: cstring) -> ^Animation ---
  86. LoadAnimation_IO :: proc(src: ^SDL.IOStream, closeio: bool) -> ^Animation ---
  87. LoadAnimationTyped_IO :: proc(src: ^SDL.IOStream, closeio: bool, type: cstring) -> ^Animation ---
  88. FreeAnimation :: proc(anim: ^Animation) ---
  89. /* Individual loading functions */
  90. LoadGIFAnimation_IO :: proc(src: ^SDL.IOStream) -> ^Animation ---
  91. LoadWEBPAnimation_IO :: proc(src: ^SDL.IOStream) -> ^Animation ---
  92. }