20 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
*/ |
*/ |
22 |
|
|
23 |
|
#include "../../../config/config.h" |
24 |
|
|
25 |
#include <stdio.h> |
#include <stdio.h> |
26 |
#include <stdlib.h> |
#include <stdlib.h> |
27 |
|
|
141 |
} |
} |
142 |
|
|
143 |
value ml_image_open_png(value filename) { |
value ml_image_open_png(value filename) { |
144 |
|
#ifdef HAVE_GD_PNG |
145 |
CAMLparam1(filename); |
CAMLparam1(filename); |
146 |
CAMLlocal1(v); |
CAMLlocal1(v); |
147 |
FILE *in; |
FILE *in; |
163 |
IM_VAL(v) = im; |
IM_VAL(v) = im; |
164 |
|
|
165 |
CAMLreturn(v); |
CAMLreturn(v); |
166 |
|
#else |
167 |
|
raise_constant(*(value *)caml_named_value("gd type not supported")); |
168 |
|
return Val_unit; |
169 |
|
#endif |
170 |
} |
} |
171 |
|
|
172 |
value ml_image_open_jpeg(value filename) { |
value ml_image_open_jpeg(value filename) { |
173 |
#ifdef HAVE_JPEG |
#ifdef HAVE_GD_JPG |
174 |
FILE *in; |
FILE *in; |
175 |
gdImagePtr im; |
gdImagePtr im; |
176 |
CAMLparam1(filename); |
CAMLparam1(filename); |
342 |
} |
} |
343 |
|
|
344 |
value ml_save_png(value gdw, value filename) { |
value ml_save_png(value gdw, value filename) { |
345 |
|
#ifdef HAVE_GD_PNG |
346 |
FILE *out; |
FILE *out; |
347 |
|
|
348 |
out = fopen(String_val(filename), "wb"); |
out = fopen(String_val(filename), "wb"); |
349 |
gdImagePng(IM_VAL(gdw), out); |
gdImagePng(IM_VAL(gdw), out); |
350 |
fclose(out); |
fclose(out); |
351 |
|
#else |
352 |
|
raise_constant(*(value*)caml_named_value("gd type not supported")); |
353 |
|
#endif |
354 |
return Val_unit; |
return Val_unit; |
355 |
} |
} |
356 |
|
|
357 |
value ml_save_jpeg(value gdw, value filename, value quality) { |
value ml_save_jpeg(value gdw, value filename, value quality) { |
358 |
#ifdef HAVE_JPEG |
#ifdef HAVE_GD_JPG |
359 |
FILE *out; |
FILE *out; |
360 |
|
|
361 |
out = fopen(String_val(filename), "wb"); |
out = fopen(String_val(filename), "wb"); |
375 |
#define Channel(v) (*((struct channel **) (Data_custom_val(v)))) |
#define Channel(v) (*((struct channel **) (Data_custom_val(v)))) |
376 |
|
|
377 |
value ml_dump_png(value gdw, value chan) { |
value ml_dump_png(value gdw, value chan) { |
378 |
|
#ifdef HAVE_GD_PNG |
379 |
int size; |
int size; |
380 |
void* dat; |
void* dat; |
381 |
|
|
383 |
really_putblock(Channel(chan), dat, size); |
really_putblock(Channel(chan), dat, size); |
384 |
free(dat); |
free(dat); |
385 |
|
|
386 |
|
#else |
387 |
|
raise_constant(*(value*)caml_named_value("gd type not supported")); |
388 |
|
#endif |
389 |
return Val_unit; |
return Val_unit; |
390 |
} |
} |
391 |
|
|
392 |
value ml_dump_jpeg(value gdw, value chan, value quality) { |
value ml_dump_jpeg(value gdw, value chan, value quality) { |
393 |
#ifdef HAVE_JPEG |
#ifdef HAVE_GD_JPG |
394 |
int size; |
int size; |
395 |
void* dat; |
void* dat; |
396 |
|
|