@@ -87,10 +87,10 @@ static void canvas_convert_565_to_888(png_structp png, png_row_infop row_info, p
8787
8888struct 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