|
@ -96,7 +96,7 @@ jpeg_closure_dest(j_compress_ptr cinfo, closure_t * closure, int bufsize){ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|
write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, closure_t *closure){ |
|
|
write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, bool progressive, closure_t *closure){ |
|
|
int w = cairo_image_surface_get_width(surface); |
|
|
int w = cairo_image_surface_get_width(surface); |
|
|
int h = cairo_image_surface_get_height(surface); |
|
|
int h = cairo_image_surface_get_height(surface); |
|
|
struct jpeg_compress_struct cinfo; |
|
|
struct jpeg_compress_struct cinfo; |
|
@ -110,6 +110,8 @@ write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, closure |
|
|
cinfo.image_width = w; |
|
|
cinfo.image_width = w; |
|
|
cinfo.image_height = h; |
|
|
cinfo.image_height = h; |
|
|
jpeg_set_defaults(&cinfo); |
|
|
jpeg_set_defaults(&cinfo); |
|
|
|
|
|
if (progressive) |
|
|
|
|
|
jpeg_simple_progression(&cinfo); |
|
|
jpeg_set_quality(&cinfo, quality, (quality<25)?0:1); |
|
|
jpeg_set_quality(&cinfo, quality, (quality<25)?0:1); |
|
|
jpeg_closure_dest(&cinfo, closure, bufsize); |
|
|
jpeg_closure_dest(&cinfo, closure, bufsize); |
|
|
|
|
|
|
|
|