PageRenderTime 54ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Image.xs

http://github.com/PerlGameDev/SDL
Unknown | 397 lines | 329 code | 68 blank | 0 comment | 0 complexity | 3525171e24d2ee39512d2446be487176 MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0
  1. #include "EXTERN.h"
  2. #include "perl.h"
  3. #include "XSUB.h"
  4. #include "ppport.h"
  5. #ifndef aTHX_
  6. #define aTHX_
  7. #endif
  8. #include <SDL.h>
  9. #ifdef HAVE_SDL_IMAGE
  10. #include <SDL_image.h>
  11. #endif
  12. void test( char** xpm)
  13. {
  14. int x, y;
  15. int w, h, ncolors, cpp;
  16. char *line;
  17. char ***xpmlines = NULL;
  18. xpmlines = &xpm;
  19. line = *(*xpmlines)++;
  20. if(sscanf(line, "%d %d %d %d", &w, &h, &ncolors, &cpp) != 4
  21. || w <= 0 || h <= 0 || ncolors <= 0 || cpp <= 0) {
  22. warn( "Invalid format description %s \n %d %d %d %d", line, w, h, ncolors, cpp);
  23. }
  24. }
  25. MODULE = SDL::Image PACKAGE = SDL::Image PREFIX = image_
  26. #ifdef HAVE_SDL_IMAGE
  27. const SDL_version*
  28. image_linked_version()
  29. PREINIT:
  30. char* CLASS = "SDL::Version";
  31. SDL_version *version;
  32. CODE:
  33. version = (SDL_version *) safemalloc ( sizeof(SDL_version) );
  34. SDL_version* version_dont_free = (SDL_version *)IMG_Linked_Version();
  35. version->major = version_dont_free->major;
  36. version->minor = version_dont_free->minor;
  37. version->patch = version_dont_free->patch;
  38. RETVAL = version;
  39. OUTPUT:
  40. RETVAL
  41. #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10)
  42. int
  43. image_init(flags)
  44. int flags
  45. CODE:
  46. RETVAL = IMG_Init(flags);
  47. OUTPUT:
  48. RETVAL
  49. void
  50. image_quit()
  51. CODE:
  52. IMG_Quit();
  53. #endif
  54. SDL_Surface *
  55. image_load ( filename )
  56. char *filename
  57. CODE:
  58. char* CLASS = "SDL::Surface";
  59. RETVAL = IMG_Load(filename);
  60. OUTPUT:
  61. RETVAL
  62. SDL_Surface *
  63. image_load_rw ( rw_file, src )
  64. SDL_RWops *rw_file
  65. int src
  66. PREINIT:
  67. char* CLASS = "SDL::Surface";
  68. CODE:
  69. RETVAL = IMG_Load_RW(rw_file, src);
  70. OUTPUT:
  71. RETVAL
  72. SDL_Surface *
  73. image_load_typed_rw(src, freesrc, type)
  74. SDL_RWops* src
  75. int freesrc
  76. char* type
  77. PREINIT:
  78. char* CLASS = "SDL::Surface";
  79. CODE:
  80. RETVAL = IMG_LoadTyped_RW(src, freesrc, type);
  81. OUTPUT:
  82. RETVAL
  83. #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10)
  84. SDL_Surface *
  85. image_load_ICO_rw(src)
  86. SDL_RWops* src
  87. PREINIT:
  88. char *CLASS = "SDL::Surface";
  89. CODE:
  90. RETVAL = IMG_LoadICO_RW(src);
  91. OUTPUT:
  92. RETVAL
  93. SDL_Surface *
  94. image_load_CUR_rw(src)
  95. SDL_RWops* src
  96. PREINIT:
  97. char *CLASS = "SDL::Surface";
  98. CODE:
  99. RETVAL = IMG_LoadCUR_RW(src);
  100. OUTPUT:
  101. RETVAL
  102. #endif
  103. SDL_Surface *
  104. image_load_BMP_rw(src)
  105. SDL_RWops* src
  106. PREINIT:
  107. char *CLASS = "SDL::Surface";
  108. CODE:
  109. RETVAL = IMG_LoadBMP_RW(src);
  110. OUTPUT:
  111. RETVAL
  112. SDL_Surface *
  113. image_load_GIF_rw(src)
  114. SDL_RWops* src
  115. PREINIT:
  116. char *CLASS = "SDL::Surface";
  117. CODE:
  118. RETVAL = IMG_LoadGIF_RW(src);
  119. OUTPUT:
  120. RETVAL
  121. SDL_Surface *
  122. image_load_JPG_rw(src)
  123. SDL_RWops* src
  124. PREINIT:
  125. char *CLASS = "SDL::Surface";
  126. CODE:
  127. RETVAL = IMG_LoadJPG_RW(src);
  128. OUTPUT:
  129. RETVAL
  130. SDL_Surface *
  131. image_load_LBM_rw(src)
  132. SDL_RWops* src
  133. PREINIT:
  134. char *CLASS = "SDL::Surface";
  135. CODE:
  136. RETVAL = IMG_LoadLBM_RW(src);
  137. OUTPUT:
  138. RETVAL
  139. SDL_Surface *
  140. image_load_PCX_rw(src)
  141. SDL_RWops* src
  142. PREINIT:
  143. char *CLASS = "SDL::Surface";
  144. CODE:
  145. RETVAL = IMG_LoadPCX_RW(src);
  146. OUTPUT:
  147. RETVAL
  148. SDL_Surface *
  149. image_load_PNG_rw(src)
  150. SDL_RWops* src
  151. PREINIT:
  152. char *CLASS = "SDL::Surface";
  153. CODE:
  154. RETVAL = IMG_LoadPNG_RW(src);
  155. OUTPUT:
  156. RETVAL
  157. SDL_Surface *
  158. image_load_PNM_rw(src)
  159. SDL_RWops* src
  160. PREINIT:
  161. char *CLASS = "SDL::Surface";
  162. CODE:
  163. RETVAL = IMG_LoadPNM_RW(src);
  164. OUTPUT:
  165. RETVAL
  166. SDL_Surface *
  167. image_load_TGA_rw(src)
  168. SDL_RWops* src
  169. PREINIT:
  170. char *CLASS = "SDL::Surface";
  171. CODE:
  172. RETVAL = IMG_LoadTGA_RW(src);
  173. OUTPUT:
  174. RETVAL
  175. SDL_Surface *
  176. image_load_TIF_rw(src)
  177. SDL_RWops* src
  178. PREINIT:
  179. char *CLASS = "SDL::Surface";
  180. CODE:
  181. RETVAL = IMG_LoadTIF_RW(src);
  182. OUTPUT:
  183. RETVAL
  184. SDL_Surface *
  185. image_load_XCF_rw(src)
  186. SDL_RWops* src
  187. PREINIT:
  188. char *CLASS = "SDL::Surface";
  189. CODE:
  190. RETVAL = IMG_LoadXCF_RW(src);
  191. OUTPUT:
  192. RETVAL
  193. SDL_Surface *
  194. image_load_XPM_rw(src)
  195. SDL_RWops* src
  196. PREINIT:
  197. char *CLASS = "SDL::Surface";
  198. CODE:
  199. RETVAL = IMG_LoadXPM_RW(src);
  200. OUTPUT:
  201. RETVAL
  202. SDL_Surface *
  203. image_load_XV_rw(src)
  204. SDL_RWops* src
  205. PREINIT:
  206. char *CLASS = "SDL::Surface";
  207. CODE:
  208. RETVAL = IMG_LoadXV_RW(src);
  209. OUTPUT:
  210. RETVAL
  211. int image_is_BMP(src)
  212. SDL_RWops* src;
  213. CODE:
  214. RETVAL=IMG_isBMP(src);
  215. OUTPUT:
  216. RETVAL
  217. #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10)
  218. int image_is_CUR(src)
  219. SDL_RWops* src;
  220. CODE:
  221. RETVAL=IMG_isCUR(src);
  222. OUTPUT:
  223. RETVAL
  224. int image_is_ICO(src)
  225. SDL_RWops* src;
  226. CODE:
  227. RETVAL=IMG_isICO(src);
  228. OUTPUT:
  229. RETVAL
  230. #endif
  231. int
  232. image_is_GIF(src)
  233. SDL_RWops * src;
  234. CODE:
  235. RETVAL=IMG_isGIF(src);
  236. OUTPUT:
  237. RETVAL
  238. int
  239. image_is_JPG(src)
  240. SDL_RWops * src;
  241. CODE:
  242. RETVAL=IMG_isJPG(src);
  243. OUTPUT:
  244. RETVAL
  245. int
  246. image_is_LBM(src)
  247. SDL_RWops * src;
  248. CODE:
  249. RETVAL=IMG_isLBM(src);
  250. OUTPUT:
  251. RETVAL
  252. int
  253. image_is_PCX(src)
  254. SDL_RWops * src;
  255. CODE:
  256. RETVAL=IMG_isPCX(src);
  257. OUTPUT:
  258. RETVAL
  259. int
  260. image_is_PNG(src)
  261. SDL_RWops * src;
  262. CODE:
  263. RETVAL=IMG_isPNG(src);
  264. OUTPUT:
  265. RETVAL
  266. int
  267. image_is_PNM(src)
  268. SDL_RWops * src;
  269. CODE:
  270. RETVAL=IMG_isPNM(src);
  271. OUTPUT:
  272. RETVAL
  273. int
  274. image_is_TIF(src)
  275. SDL_RWops * src;
  276. CODE:
  277. RETVAL=IMG_isTIF(src);
  278. OUTPUT:
  279. RETVAL
  280. int
  281. image_is_XCF(src)
  282. SDL_RWops * src;
  283. CODE:
  284. RETVAL=IMG_isXCF(src);
  285. OUTPUT:
  286. RETVAL
  287. int
  288. image_is_XPM(src)
  289. SDL_RWops * src;
  290. CODE:
  291. RETVAL=IMG_isXPM(src);
  292. OUTPUT:
  293. RETVAL
  294. int
  295. image_is_XV(src)
  296. SDL_RWops * src;
  297. CODE:
  298. RETVAL=IMG_isXV(src);
  299. OUTPUT:
  300. RETVAL
  301. SDL_Surface *
  302. image_read_XPM_from_array(array, w)
  303. int w
  304. AV* array
  305. PREINIT:
  306. char* CLASS = "SDL::Surface";
  307. CODE:
  308. /*make columns first */
  309. int x, len;
  310. SV ** elem;
  311. len = av_len(array) + 1;
  312. char** src_x = safemalloc( len * sizeof(char*));
  313. char* temp;
  314. for(x=0; x < len ; x++)
  315. {
  316. elem = av_fetch(array, x, 0) ;
  317. temp = SvPV_nolen(*elem);
  318. src_x[x] = safemalloc(w * sizeof(char) );
  319. memcpy( src_x[x], temp, w * sizeof(char) );
  320. /*warn("put in %s", src_x[x]); */
  321. }
  322. /*test(src_x); */
  323. RETVAL = IMG_ReadXPMFromArray( src_x) ;
  324. for(x=0; x < len; x++)
  325. safefree(src_x[x]);
  326. safefree(src_x);
  327. OUTPUT:
  328. RETVAL
  329. #endif