Skip to content

Commit f0d286d

Browse files
committed
Type closure_t/png_closure_t
Can't tell if there was a reason this wasn't done previously, so putting it in a separate commit.
1 parent da3160b commit f0d286d

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

src/PNG.h

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ static void canvas_convert_565_to_888(png_structp png, png_row_infop row_info, p
8787

8888
struct canvas_png_write_closure_t {
8989
cairo_write_func_t write_func;
90-
void *closure;
90+
closure_t *closure;
9191
};
9292

93-
static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr write_func, void *closure) {
93+
static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr write_func, canvas_png_write_closure_t *closure) {
9494
unsigned int i;
9595
cairo_status_t status = CAIRO_STATUS_SUCCESS;
9696
uint8_t *data;
@@ -156,9 +156,8 @@ static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr writ
156156
#endif
157157

158158
png_set_write_fn(png, closure, write_func, canvas_png_flush);
159-
// FIXME why is this not typed properly?
160-
png_set_compression_level(png, ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->compression_level);
161-
png_set_filter(png, 0, ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->filter);
159+
png_set_compression_level(png, closure->closure->compression_level);
160+
png_set_filter(png, 0, closure->closure->filter);
162161

163162
cairo_format_t format = cairo_image_surface_get_format(surface);
164163

@@ -201,16 +200,16 @@ static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr writ
201200
}
202201

203202
if ((format == CAIRO_FORMAT_A8 || format == CAIRO_FORMAT_A1) &&
204-
((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->palette != NULL) {
203+
closure->closure->palette != NULL) {
205204
png_color_type = PNG_COLOR_TYPE_PALETTE;
206205
}
207206

208207
png_set_IHDR(png, info, width, height, bpc, png_color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
209208

210209
if (png_color_type == PNG_COLOR_TYPE_PALETTE) {
211-
size_t nColors = ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->nPaletteColors;
212-
uint8_t* colors = ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->palette;
213-
uint8_t backgroundIndex = ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->backgroundIndex;
210+
size_t nColors = closure->closure->nPaletteColors;
211+
uint8_t* colors = closure->closure->palette;
212+
uint8_t backgroundIndex = closure->closure->backgroundIndex;
214213
png_colorp pngPalette = (png_colorp)png_malloc(png, nColors * sizeof(png_colorp));
215214
png_bytep transparency = (png_bytep)png_malloc(png, nColors * sizeof(png_bytep));
216215
for (i = 0; i < nColors; i++) {
@@ -272,7 +271,7 @@ static void canvas_stream_write_func(png_structp png, png_bytep data, png_size_t
272271
}
273272
}
274273

275-
static cairo_status_t canvas_write_to_png_stream(cairo_surface_t *surface, cairo_write_func_t write_func, void *closure) {
274+
static cairo_status_t canvas_write_to_png_stream(cairo_surface_t *surface, cairo_write_func_t write_func, closure_t *closure) {
276275
struct canvas_png_write_closure_t png_closure;
277276

278277
if (cairo_surface_status(surface)) {

0 commit comments

Comments
 (0)