Skip to content

Commit a8bd410

Browse files
Stéphane Cyrtbonfort
authored andcommitted
add PNG "none" compression mode for disabling png zlib compression
1 parent 12a279e commit a8bd410

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

include/mapcache.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,6 +1484,7 @@ char* mapcache_util_get_tile_key(mapcache_context *ctx, mapcache_tile *tile, cha
14841484
typedef enum {
14851485
MAPCACHE_COMPRESSION_BEST, /**< best but slowest compression*/
14861486
MAPCACHE_COMPRESSION_FAST, /**< fast compression*/
1487+
MAPCACHE_COMPRESSION_DISABLE, /**< no compression*/
14871488
MAPCACHE_COMPRESSION_DEFAULT /**< default compression*/
14881489
} mapcache_compression_type;
14891490

lib/configuration_xml.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,8 @@ void parseFormat(mapcache_context *ctx, ezxml_t node, mapcache_cfg *config)
387387
compression = MAPCACHE_COMPRESSION_FAST;
388388
} else if(!strcmp(cur_node->txt, "best")) {
389389
compression = MAPCACHE_COMPRESSION_BEST;
390+
} else if(!strcmp(cur_node->txt, "none")) {
391+
compression = MAPCACHE_COMPRESSION_DISABLE;
390392
} else {
391393
ctx->set_error(ctx, 400, "unknown compression type %s for format \"%s\"", cur_node->txt, name);
392394
return;

lib/imageio_png.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ typedef unsigned long int uint64_t;
4545
#ifndef Z_BEST_COMPRESSION
4646
#define Z_BEST_COMPRESSION 9
4747
#endif
48+
#ifndef Z_NO_COMPRESSION
49+
#define Z_NO_COMPRESSION 0
50+
#endif
4851

4952
/* Table of CRCs of all 8-bit messages. */
5053
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
@@ -410,6 +413,9 @@ mapcache_buffer* _mapcache_imageio_png_encode(mapcache_context *ctx, mapcache_im
410413
png_set_compression_level (png_ptr, Z_BEST_COMPRESSION);
411414
else if(compression == MAPCACHE_COMPRESSION_FAST)
412415
png_set_compression_level (png_ptr, Z_BEST_SPEED);
416+
else if(compression == MAPCACHE_COMPRESSION_DISABLE)
417+
png_set_compression_level (png_ptr, Z_NO_COMPRESSION);
418+
413419
png_set_filter(png_ptr,0,PNG_FILTER_NONE);
414420

415421
info_ptr = png_create_info_struct(png_ptr);
@@ -1314,6 +1320,8 @@ mapcache_buffer* _mapcache_imageio_png_q_encode( mapcache_context *ctx, mapcache
13141320
png_set_compression_level (png_ptr, Z_BEST_COMPRESSION);
13151321
else if(compression == MAPCACHE_COMPRESSION_FAST)
13161322
png_set_compression_level (png_ptr, Z_BEST_SPEED);
1323+
else if(compression == MAPCACHE_COMPRESSION_DISABLE)
1324+
png_set_compression_level (png_ptr, Z_NO_COMPRESSION);
13171325
png_set_filter(png_ptr,0,PNG_FILTER_NONE);
13181326
info_ptr = png_create_info_struct(png_ptr);
13191327
if (!info_ptr) {

0 commit comments

Comments
 (0)