001-disable-png.patch (9738B)
1 --- a/qrenc.c 2 +++ b/qrenc.c 3 @@ -25,7 +25,6 @@ 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 -#include <png.h> 8 #include <getopt.h> 9 10 #include "qrencode.h" 11 @@ -49,7 +48,6 @@ 12 static int verbose = 0; 13 14 enum imageType { 15 - PNG_TYPE, 16 EPS_TYPE, 17 SVG_TYPE, 18 ANSI_TYPE, 19 @@ -60,7 +58,7 @@ 20 ANSIUTF8_TYPE 21 }; 22 23 -static enum imageType image_type = PNG_TYPE; 24 +static enum imageType image_type = SVG_TYPE; 25 26 static const struct option options[] = { 27 {"help" , no_argument , NULL, 'h'}, 28 @@ -96,13 +94,13 @@ 29 if(longopt) { 30 fprintf(stderr, 31 "Usage: qrencode [OPTION]... [STRING]\n" 32 -"Encode input data in a QR Code and save as a PNG or EPS image.\n\n" 33 +"Encode input data in a QR Code and save as a SVG or EPS image.\n\n" 34 " -h, --help display the help message. -h displays only the help of short\n" 35 " options.\n\n" 36 " -o FILENAME, --output=FILENAME\n" 37 " write image to FILENAME. If '-' is specified, the result\n" 38 " will be output to standard output. If -S is given, structured\n" 39 -" symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n" 40 +" symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n" 41 " (suffix is removed from FILENAME, if specified)\n" 42 " -s NUMBER, --size=NUMBER\n" 43 " specify module size in dots (pixels). (default=3)\n\n" 44 @@ -116,9 +114,9 @@ 45 " specify the width of the margins. (default=4 (2 for Micro QR)))\n\n" 46 " -d NUMBER, --dpi=NUMBER\n" 47 " specify the DPI of the generated PNG. (default=72)\n\n" 48 -" -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={PNG,EPS,\n" 49 +" -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={EPS,\n" 50 " SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n" 51 -" specify the type of the generated image. (default=PNG)\n\n" 52 +" specify the type of the generated image. (default=SVG)\n\n" 53 " -S, --structured\n" 54 " make structured symbols. Version must be specified.\n\n" 55 " -k, --kanji assume that the input text contains kanji (shift-jis).\n\n" 56 @@ -133,7 +131,7 @@ 57 " --background=RRGGBB[AA]\n" 58 " specify foreground/background color in hexadecimal notation.\n" 59 " 6-digit (RGB) or 8-digit (RGBA) form are supported.\n" 60 -" Color output support available only in PNG and SVG.\n" 61 +" Color output support available only in SVG.\n" 62 " -V, --version\n" 63 " display the version number and copyrights of the qrencode.\n\n" 64 " --verbose\n" 65 @@ -153,12 +151,12 @@ 66 } else { 67 fprintf(stderr, 68 "Usage: qrencode [OPTION]... [STRING]\n" 69 -"Encode input data in a QR Code and save as a PNG or EPS image.\n\n" 70 +"Encode input data in a QR Code and save as a SVG or EPS image.\n\n" 71 " -h display this message.\n" 72 " --help display the usage of long options.\n" 73 " -o FILENAME write image to FILENAME. If '-' is specified, the result\n" 74 " will be output to standard output. If -S is given, structured\n" 75 -" symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n" 76 +" symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n" 77 " (suffix is removed from FILENAME, if specified)\n" 78 " -s NUMBER specify module size in dots (pixels). (default=3)\n" 79 " -l {LMQH} specify error correction level from L (lowest) to H (highest).\n" 80 @@ -166,8 +164,8 @@ 81 " -v NUMBER specify the version of the symbol. (default=auto)\n" 82 " -m NUMBER specify the width of the margins. (default=4 (2 for Micro))\n" 83 " -d NUMBER specify the DPI of the generated PNG. (default=72)\n" 84 -" -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n" 85 -" specify the type of the generated image. (default=PNG)\n" 86 +" -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n" 87 +" specify the type of the generated image. (default=SVG)\n" 88 " -S make structured symbols. Version must be specified.\n" 89 " -k assume that the input text contains kanji (shift-jis).\n" 90 " -c encode lower-case alphabet characters in 8-bit mode. (default)\n" 91 @@ -178,7 +176,7 @@ 92 " --background=RRGGBB[AA]\n" 93 " specify foreground/background color in hexadecimal notation.\n" 94 " 6-digit (RGB) or 8-digit (RGBA) form are supported.\n" 95 -" Color output support available only in PNG and SVG.\n" 96 +" Color output support available only in SVG.\n" 97 " -V display the version number and copyrights of the qrencode.\n" 98 " [STRING] input data. If it is not specified, data will be taken from\n" 99 " standard input.\n" 100 @@ -253,128 +251,6 @@ 101 return fp; 102 } 103 104 -static int writePNG(QRcode *qrcode, const char *outfile) 105 -{ 106 - static FILE *fp; // avoid clobbering by setjmp. 107 - png_structp png_ptr; 108 - png_infop info_ptr; 109 - png_colorp palette; 110 - png_byte alpha_values[2]; 111 - unsigned char *row, *p, *q; 112 - int x, y, xx, yy, bit; 113 - int realwidth; 114 - 115 - realwidth = (qrcode->width + margin * 2) * size; 116 - row = (unsigned char *)malloc((realwidth + 7) / 8); 117 - if(row == NULL) { 118 - fprintf(stderr, "Failed to allocate memory.\n"); 119 - exit(EXIT_FAILURE); 120 - } 121 - 122 - if(outfile[0] == '-' && outfile[1] == '\0') { 123 - fp = stdout; 124 - } else { 125 - fp = fopen(outfile, "wb"); 126 - if(fp == NULL) { 127 - fprintf(stderr, "Failed to create file: %s\n", outfile); 128 - perror(NULL); 129 - exit(EXIT_FAILURE); 130 - } 131 - } 132 - 133 - png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 134 - if(png_ptr == NULL) { 135 - fprintf(stderr, "Failed to initialize PNG writer.\n"); 136 - exit(EXIT_FAILURE); 137 - } 138 - 139 - info_ptr = png_create_info_struct(png_ptr); 140 - if(info_ptr == NULL) { 141 - fprintf(stderr, "Failed to initialize PNG write.\n"); 142 - exit(EXIT_FAILURE); 143 - } 144 - 145 - if(setjmp(png_jmpbuf(png_ptr))) { 146 - png_destroy_write_struct(&png_ptr, &info_ptr); 147 - fprintf(stderr, "Failed to write PNG image.\n"); 148 - exit(EXIT_FAILURE); 149 - } 150 - 151 - palette = (png_colorp) malloc(sizeof(png_color) * 2); 152 - if(palette == NULL) { 153 - fprintf(stderr, "Failed to allocate memory.\n"); 154 - exit(EXIT_FAILURE); 155 - } 156 - palette[0].red = fg_color[0]; 157 - palette[0].green = fg_color[1]; 158 - palette[0].blue = fg_color[2]; 159 - palette[1].red = bg_color[0]; 160 - palette[1].green = bg_color[1]; 161 - palette[1].blue = bg_color[2]; 162 - alpha_values[0] = fg_color[3]; 163 - alpha_values[1] = bg_color[3]; 164 - png_set_PLTE(png_ptr, info_ptr, palette, 2); 165 - png_set_tRNS(png_ptr, info_ptr, alpha_values, 2, NULL); 166 - 167 - png_init_io(png_ptr, fp); 168 - png_set_IHDR(png_ptr, info_ptr, 169 - realwidth, realwidth, 170 - 1, 171 - PNG_COLOR_TYPE_PALETTE, 172 - PNG_INTERLACE_NONE, 173 - PNG_COMPRESSION_TYPE_DEFAULT, 174 - PNG_FILTER_TYPE_DEFAULT); 175 - png_set_pHYs(png_ptr, info_ptr, 176 - dpi * INCHES_PER_METER, 177 - dpi * INCHES_PER_METER, 178 - PNG_RESOLUTION_METER); 179 - png_write_info(png_ptr, info_ptr); 180 - 181 - /* top margin */ 182 - memset(row, 0xff, (realwidth + 7) / 8); 183 - for(y=0; y<margin * size; y++) { 184 - png_write_row(png_ptr, row); 185 - } 186 - 187 - /* data */ 188 - p = qrcode->data; 189 - for(y=0; y<qrcode->width; y++) { 190 - bit = 7; 191 - memset(row, 0xff, (realwidth + 7) / 8); 192 - q = row; 193 - q += margin * size / 8; 194 - bit = 7 - (margin * size % 8); 195 - for(x=0; x<qrcode->width; x++) { 196 - for(xx=0; xx<size; xx++) { 197 - *q ^= (*p & 1) << bit; 198 - bit--; 199 - if(bit < 0) { 200 - q++; 201 - bit = 7; 202 - } 203 - } 204 - p++; 205 - } 206 - for(yy=0; yy<size; yy++) { 207 - png_write_row(png_ptr, row); 208 - } 209 - } 210 - /* bottom margin */ 211 - memset(row, 0xff, (realwidth + 7) / 8); 212 - for(y=0; y<margin * size; y++) { 213 - png_write_row(png_ptr, row); 214 - } 215 - 216 - png_write_end(png_ptr, info_ptr); 217 - png_destroy_write_struct(&png_ptr, &info_ptr); 218 - 219 - fclose(fp); 220 - free(row); 221 - free(palette); 222 - 223 - return 0; 224 -} 225 - 226 static int writeEPS(QRcode *qrcode, const char *outfile) 227 { 228 FILE *fp; 229 @@ -831,9 +707,6 @@ 230 } 231 232 switch(image_type) { 233 - case PNG_TYPE: 234 - writePNG(qrcode, outfile); 235 - break; 236 case EPS_TYPE: 237 writeEPS(qrcode, outfile); 238 break; 239 @@ -887,9 +760,6 @@ 240 size_t suffix_size; 241 242 switch(image_type) { 243 - case PNG_TYPE: 244 - type_suffix = ".png"; 245 - break; 246 case EPS_TYPE: 247 type_suffix = ".eps"; 248 break; 249 @@ -948,9 +818,6 @@ 250 } 251 252 switch(image_type) { 253 - case PNG_TYPE: 254 - writePNG(p->code, filename); 255 - break; 256 case EPS_TYPE: 257 writeEPS(p->code, filename); 258 break; 259 @@ -1062,9 +929,7 @@ 260 } 261 break; 262 case 't': 263 - if(strcasecmp(optarg, "png") == 0) { 264 - image_type = PNG_TYPE; 265 - } else if(strcasecmp(optarg, "eps") == 0) { 266 + if(strcasecmp(optarg, "eps") == 0) { 267 image_type = EPS_TYPE; 268 } else if(strcasecmp(optarg, "svg") == 0) { 269 image_type = SVG_TYPE; 270 @@ -1133,11 +998,6 @@ 271 exit(EXIT_SUCCESS); 272 } 273 274 - if(outfile == NULL && image_type == PNG_TYPE) { 275 - fprintf(stderr, "No output filename is given.\n"); 276 - exit(EXIT_FAILURE); 277 - } 278 - 279 if(optind < argc) { 280 intext = (unsigned char *)argv[optind]; 281 length = strlen((char *)intext); 282 --- a/configure.ac 283 +++ b/configure.ac 284 @@ -58,9 +58,6 @@ 285 [build_tools=$withval], [build_tools=yes]) 286 287 AM_CONDITIONAL(BUILD_TOOLS, [test "x$build_tools" = "xyes" ]) 288 -if test x$build_tools = xyes ; then 289 - PKG_CHECK_MODULES(png, "libpng") 290 -fi 291 292 dnl --with-tests 293 AC_ARG_WITH([tests], [AS_HELP_STRING([--with-tests], [build tests [default=no]])], 294 @@ -80,12 +77,6 @@ 295 echo "/* #undef WITH_TESTS */" >>confdefs.h 296 fi 297 298 -if test x$build_tests = xyes ; then 299 - SDL_REQUIRED_VERSION=1.2.0 300 - AM_PATH_SDL($SDL_REQUIRED_VERSION,,AC_MSG_WARN([*** SDL $SDL_REQUIRED_VERSION or better is required.])) 301 - AC_MSG_NOTICE([SDL check done.]) 302 - AM_ICONV_LINK 303 -fi 304 AM_CONDITIONAL(HAVE_SDL, [test "x$SDL_CFLAGS" != "x" ]) 305 306