image.nim 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import ../sdl2
  2. when not defined(SDL_Static):
  3. when defined(windows):
  4. const LibName = "SDL2_image.dll"
  5. elif defined(macosx):
  6. const LibName = "libSDL2_image.dylib"
  7. else:
  8. const LibName = "libSDL2_image(|-2.0).so(|.0)"
  9. else:
  10. static: echo "SDL_Static option is deprecated and will soon be removed. Instead please use --dynlibOverride:SDL2."
  11. const
  12. IMG_INIT_JPG* = 0x00000001
  13. IMG_INIT_PNG* = 0x00000002
  14. IMG_INIT_TIF* = 0x00000004
  15. IMG_INIT_WEBP* = 0x00000008
  16. when not defined(SDL_Static):
  17. {.push callConv:cdecl, dynlib: LibName.}
  18. proc linkedVersion*(): ptr SDL_version {.importc: "IMG_Linked_Version".}
  19. proc init*(flags: cint = IMG_INIT_JPG or IMG_INIT_PNG): cint {.importc: "IMG_Init".}
  20. ## It returns the flags successfully initialized, or 0 on failure.
  21. ## This is completely different than SDL_Init() -_-
  22. proc quit*() {.importc: "IMG_Quit".}
  23. # Load an image from an SDL data source.
  24. # The 'type' may be one of: "BMP", "GIF", "PNG", etc.
  25. #
  26. # If the image format supports a transparent pixel, SDL will set the
  27. # colorkey for the surface. You can enable RLE acceleration on the
  28. # surface afterwards by calling:
  29. # SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);
  30. #
  31. proc loadTyped_RW*(src: RWopsPtr; freesrc: cint; `type`: cstring): SurfacePtr {.importc: "IMG_LoadTyped_RW".}
  32. # Convenience functions
  33. proc load*(file: cstring): SurfacePtr {.importc: "IMG_Load".}
  34. proc load_RW*(src: RWopsPtr; freesrc: cint): SurfacePtr {.importc: "IMG_Load_RW".}
  35. ##Load an image directly into a render texture.
  36. #
  37. proc loadTexture*(renderer: RendererPtr; file: cstring): TexturePtr {.importc: "IMG_LoadTexture".}
  38. proc loadTexture_RW*(renderer: RendererPtr; src: RWopsPtr;
  39. freesrc: cint): TexturePtr {.importc: "IMG_LoadTexture_RW".}
  40. proc loadTextureTyped_RW*(renderer: RendererPtr; src: RWopsPtr;
  41. freesrc: cint; `type`: cstring): TexturePtr {.importc: "IMG_LoadTextureTyped_RW".}
  42. #discard """
  43. # Functions to detect a file type, given a seekable source
  44. proc isICO*(src: RWopsPtr): cint {.importc: "IMG_isICO".}
  45. proc isCUR*(src: RWopsPtr): cint {.importc: "IMG_isCUR".}
  46. proc isBMP*(src: RWopsPtr): cint {.importc: "IMG_isBMP".}
  47. proc isGIF*(src: RWopsPtr): cint {.importc: "IMG_isGIF".}
  48. proc isJPG*(src: RWopsPtr): cint {.importc: "IMG_isJPG".}
  49. proc isLBM*(src: RWopsPtr): cint {.importc: "IMG_isLBM".}
  50. proc isPCX*(src: RWopsPtr): cint {.importc: "IMG_isPCX".}
  51. proc isPNG*(src: RWopsPtr): cint {.importc: "IMG_isPNG".}
  52. proc isPNM*(src: RWopsPtr): cint {.importc: "IMG_isPNM".}
  53. proc isTIF*(src: RWopsPtr): cint {.importc: "IMG_isTIF".}
  54. proc isXCF*(src: RWopsPtr): cint {.importc: "IMG_isXCF".}
  55. proc isXPM*(src: RWopsPtr): cint {.importc: "IMG_isXPM".}
  56. proc isXV*(src: RWopsPtr): cint {.importc: "IMG_isXV".}
  57. proc isWEBP*(src: RWopsPtr): cint {.importc: "IMG_isWEBP".}
  58. # Individual loading functions
  59. proc loadICO_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadICO_RW".}
  60. proc loadCUR_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadCUR_RW".}
  61. proc loadBMP_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadBMP_RW".}
  62. proc loadGIF_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadGIF_RW".}
  63. proc loadJPG_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadJPG_RW".}
  64. proc loadLBM_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadLBM_RW".}
  65. proc loadPCX_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadPCX_RW".}
  66. proc loadPNG_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadPNG_RW".}
  67. proc loadPNM_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadPNM_RW".}
  68. proc loadTGA_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadTGA_RW".}
  69. proc loadTIF_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadTIF_RW".}
  70. proc loadXCF_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadXCF_RW".}
  71. proc loadXPM_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadXPM_RW".}
  72. proc loadXV_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadXV_RW".}
  73. proc loadWEBP_RW*(src: RWopsPtr): SurfacePtr {.importc: "IMG_LoadWEBP_RW".}
  74. proc readXPMFromArray*(xpm: cstringArray): SurfacePtr {.importc: "IMG_ReadXPMFromArray".}
  75. # Saving functions
  76. proc savePNG*(surface: SurfacePtr, file: cstring): cint {.importc: "IMG_SavePNG".}
  77. #"""
  78. when not defined(SDL_Static):
  79. {.pop.}