• Home
  • History
  • Annotate
  • Raw
  • Download

Lines Matching +full:- +full:- +full:with +full:- +full:quantum +full:- +full:depth

17 %                           Glenn Randers-Pehrson                             %
21 % Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization %
24 % You may not use this file except in compliance with the License. You may %
50 #include "MagickCore/blob-private.h"
54 #include "MagickCore/color-private.h"
56 #include "MagickCore/colormap-private.h"
58 #include "MagickCore/colorspace-private.h"
62 #include "MagickCore/exception-private.h"
66 #include "MagickCore/image-private.h"
71 #include "MagickCore/magick-private.h"
73 #include "MagickCore/memory-private.h"
76 #include "MagickCore/monitor-private.h"
79 #include "MagickCore/pixel-accessor.h"
82 #include "MagickCore/quantum-private.h"
85 #include "MagickCore/quantum-private.h"
89 #include "MagickCore/string-private.h"
95 * libpng-1.2.41 and libpng-1.4.0. If you are working on
96 * migration to libpng-1.5, remove these defines and then
105 /* PNG_PTR_NORETURN does not work on some platforms, in libpng-1.5.x */
118 /* #define PNG_DEBUG -- turning this on breaks VisualC compiling */
125 #define MNG_COALESCE_LAYERS /* In 5.4.4, this interfered with MMAP'ed files. */
147 /* ICC v2 perceptual sRGB_IEC61966-2-1_black_scaled.icc */
150 /* ICC v2 relative sRGB_IEC61966-2-1_no_black_scaling.icc */
159 /* HP? sRGB v2 media-relative sRGB_IEC61966-2-1_noBPC.icc */
162 /* HP-Microsoft sRGB v2 perceptual */
165 /* HP-Microsoft sRGB v2 media-relative */
178 /* Macros for left-bit-replication to ensure that pixels
179 * and PixelInfos all have the same image->depth, and for use
333 /* LBR03: Replicate top 3 bits (only used with opaque pixels during
487 Recompile with MNG_MAX_OBJECTS=65536L to avoid this limit but
503 with earlier versions of libpng. From libpng-1.0.3a to libpng-1.0.8,
506 PNG_MNG_FEATURES_SUPPORTED is disabled by default in libpng-1.0.9 and
507 will be enabled by default in libpng-1.2.0.
519 Maximum valid size_t in PNG/MNG chunks is (2^31)-1
520 This macro is only defined in libpng-1.0.3 and later.
521 Previously it was PNG_MAX_UINT but that was deprecated in libpng-1.2.6
807 /* Added at version 6.6.6-7 */
823 ping_exclude_zCCP, /* hex-encoded iCCP */
826 /* Added at version 6.8.5-7 */
828 /* Added at version 6.8.9-9 */
855 /* Reduce bit depth if it can be reduced losslessly from 16+ to 8. in LosslessReduceDepthOK()
860 * are unchanged when we scale them down to 8 and back up to Quantum. in LosslessReduceDepthOK()
866 #define QuantumToCharToQuantumEqQuantum(quantum) \ in LosslessReduceDepthOK() argument
867 ((ScaleCharToQuantum((unsigned char) ScaleQuantumToChar(quantum))) == quantum) in LosslessReduceDepthOK()
872 if (image->depth >= 16) in LosslessReduceDepthOK()
875 const Quantum in LosslessReduceDepthOK()
879 QuantumToCharToQuantumEqQuantum(image->background_color.red) && in LosslessReduceDepthOK()
880 QuantumToCharToQuantumEqQuantum(image->background_color.green) && in LosslessReduceDepthOK()
881 QuantumToCharToQuantumEqQuantum(image->background_color.blue) ? in LosslessReduceDepthOK()
884 if (ok_to_reduce != MagickFalse && image->storage_class == PseudoClass) in LosslessReduceDepthOK()
888 for (indx=0; indx < (ssize_t) image->colors; indx++) in LosslessReduceDepthOK()
892 image->colormap[indx].red) && in LosslessReduceDepthOK()
894 image->colormap[indx].green) && in LosslessReduceDepthOK()
896 image->colormap[indx].blue)) ? in LosslessReduceDepthOK()
905 (image->storage_class != PseudoClass)) in LosslessReduceDepthOK()
913 for (y=0; y < (ssize_t) image->rows; y++) in LosslessReduceDepthOK()
915 p=GetVirtualPixels(image,0,y,image->columns,1,exception); in LosslessReduceDepthOK()
917 if (p == (const Quantum *) NULL) in LosslessReduceDepthOK()
923 for (x=(ssize_t) image->columns-1; x >= 0; x--) in LosslessReduceDepthOK()
944 " OK to reduce PNG bit depth to 8 without loss of info"); in LosslessReduceDepthOK()
949 " Not OK to reduce PNG bit depth to 8 without losing info"); in LosslessReduceDepthOK()
991 * http://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf in Magick_Orientation_to_Exif_Orientation()
1060 return -1; in Magick_RenderingIntent_to_PNG_RenderingIntent()
1258 assert(image->signature == MagickCoreSignature); in WriteBlobMSBULong()
1320 % Multiple-image Network Graphics (MNG) image file and returns it. It
1324 % MNG support written by Glenn Randers-Pehrson, glennrp@image...
1337 % November 26, 2002 -- glennrp -- see also "To do" under WriteMNGImage):
1339 % Get 16-bit cheap transparency working.
1341 % (At this point, PNG decoding is supposed to be in full MNG-LC compliance)
1343 % Preserve all unknown and not-yet-handled known chunks found in input
1359 % Upgrade to full MNG without Delta-PNG.
1370 % o MNG-level tEXt/iTXt/zTXt
1378 % being reused, and just point to the original image->exception instead
1382 % Upgrade to full MNG with Delta-PNG.
1389 % the original PNG from files that have been converted to Xcode-PNG,
1432 * older than libpng-1.0.3a, which was the first to allow the empty
1455 image=(Image *) mng_info->image; in mng_get_data()
1456 while (mng_info->bytes_in_read_buffer && length) in mng_get_data()
1458 data[i]=mng_info->read_buffer[i]; in mng_get_data()
1459 mng_info->bytes_in_read_buffer--; in mng_get_data()
1460 length--; in mng_get_data()
1476 (char *) mng_info->read_buffer); in mng_get_data()
1477 mng_info->read_buffer[4]=0; in mng_get_data()
1478 mng_info->bytes_in_read_buffer=4; in mng_get_data()
1479 if (memcmp(mng_info->read_buffer,mng_PLTE,4) == 0) in mng_get_data()
1480 mng_info->found_empty_plte=MagickTrue; in mng_get_data()
1481 if (memcmp(mng_info->read_buffer,mng_IEND,4) == 0) in mng_get_data()
1483 mng_info->found_empty_plte=MagickFalse; in mng_get_data()
1484 mng_info->have_saved_bkgd_index=MagickFalse; in mng_get_data()
1492 (char *) mng_info->read_buffer); in mng_get_data()
1493 mng_info->read_buffer[4]=0; in mng_get_data()
1494 mng_info->bytes_in_read_buffer=4; in mng_get_data()
1495 if (memcmp(mng_info->read_buffer,mng_bKGD,4) == 0) in mng_get_data()
1496 if (mng_info->found_empty_plte) in mng_get_data()
1502 ReadBlob(image,5,(char *) mng_info->read_buffer); in mng_get_data()
1504 (char *) mng_info->read_buffer); in mng_get_data()
1505 mng_info->saved_bkgd_index=mng_info->read_buffer[0]; in mng_get_data()
1506 mng_info->have_saved_bkgd_index=MagickTrue; in mng_get_data()
1507 mng_info->bytes_in_read_buffer=0; in mng_get_data()
1547 if (a->storage_class != PseudoClass || b->storage_class != PseudoClass) in PalettesAreEqual()
1550 if (a->colors != b->colors) in PalettesAreEqual()
1553 for (i=0; i < (ssize_t) a->colors; i++) in PalettesAreEqual()
1555 if ((a->colormap[i].red != b->colormap[i].red) || in PalettesAreEqual()
1556 (a->colormap[i].green != b->colormap[i].green) || in PalettesAreEqual()
1557 (a->colormap[i].blue != b->colormap[i].blue)) in PalettesAreEqual()
1568 mng_info->exists[i] && !mng_info->frozen[i]) in MngInfoDiscardObject()
1571 if (mng_info->ob[i] != (MngBuffer *) NULL) in MngInfoDiscardObject()
1573 if (mng_info->ob[i]->reference_count > 0) in MngInfoDiscardObject()
1574 mng_info->ob[i]->reference_count--; in MngInfoDiscardObject()
1576 if (mng_info->ob[i]->reference_count == 0) in MngInfoDiscardObject()
1578 if (mng_info->ob[i]->image != (Image *) NULL) in MngInfoDiscardObject()
1579 mng_info->ob[i]->image=DestroyImage(mng_info->ob[i]->image); in MngInfoDiscardObject()
1581 mng_info->ob[i]=DestroyString(mng_info->ob[i]); in MngInfoDiscardObject()
1584 mng_info->ob[i]=(MngBuffer *) NULL; in MngInfoDiscardObject()
1586 mng_info->exists[i]=MagickFalse; in MngInfoDiscardObject()
1587 mng_info->invisible[i]=MagickFalse; in MngInfoDiscardObject()
1588 mng_info->viewable[i]=MagickFalse; in MngInfoDiscardObject()
1589 mng_info->frozen[i]=MagickFalse; in MngInfoDiscardObject()
1590 mng_info->x_off[i]=0; in MngInfoDiscardObject()
1591 mng_info->y_off[i]=0; in MngInfoDiscardObject()
1592 mng_info->object_clip[i].left=0; in MngInfoDiscardObject()
1593 mng_info->object_clip[i].right=(ssize_t) PNG_UINT_31_MAX; in MngInfoDiscardObject()
1594 mng_info->object_clip[i].top=0; in MngInfoDiscardObject()
1595 mng_info->object_clip[i].bottom=(ssize_t) PNG_UINT_31_MAX; in MngInfoDiscardObject()
1610 mng_info->global_plte=(png_colorp) in MngInfoFreeStruct()
1611 RelinquishMagickMemory(mng_info->global_plte); in MngInfoFreeStruct()
1708 image=error_info->image; in MagickPNGErrorHandler()
1709 exception=error_info->exception; in MagickPNGErrorHandler()
1712 " libpng-%s error: %s", png_get_libpng_ver(NULL),message); in MagickPNGErrorHandler()
1715 "`%s'",image->filename); in MagickPNGErrorHandler()
1719 * are building with libpng-1.4.x and can be ignored. in MagickPNGErrorHandler()
1721 longjmp(ping->jmpbuf,1); in MagickPNGErrorHandler()
1742 image=error_info->image; in MagickPNGWarningHandler()
1743 exception=error_info->exception; in MagickPNGWarningHandler()
1745 " libpng-%s warning: %s", png_get_libpng_ver(NULL),message); in MagickPNGWarningHandler()
1748 message,"`%s'",image->filename); in MagickPNGWarningHandler()
1809 while ((*sp != '\n') && extent--) in Magick_png_read_raw_profile()
1813 while (((*sp == '\0' || *sp == ' ' || *sp == '\n')) && extent--) in Magick_png_read_raw_profile()
1827 while ((*sp != ' ' && *sp != '\n') && extent--) in Magick_png_read_raw_profile()
1880 if (image_info->verbose) in Magick_png_read_raw_profile()
1907 image->filename); in PNGSetExifProfile()
1908 return(-1); in PNGSetExifProfile()
1912 /* Initialize profile with "Exif\0\0" */ in PNGSetExifProfile()
1937 /* copy chunk->data to profile */ in PNGSetExifProfile()
1983 return(-n); chunk had an error in read_user_chunk_callback()
1990 chunk->name[0],chunk->name[1],chunk->name[2],chunk->name[3]); in read_user_chunk_callback()
1992 if (chunk->name[0] == 101 && in read_user_chunk_callback()
1993 (chunk->name[1] == 88 || chunk->name[1] == 120 ) && in read_user_chunk_callback()
1994 chunk->name[2] == 73 && in read_user_chunk_callback()
1995 chunk-> name[3] == 102) in read_user_chunk_callback()
2006 return(PNGSetExifProfile(image,chunk->size,chunk->data, in read_user_chunk_callback()
2007 error_info->exception)); in read_user_chunk_callback()
2011 if (chunk->name[0] == 111 && in read_user_chunk_callback()
2012 chunk->name[1] == 114 && in read_user_chunk_callback()
2013 chunk->name[2] == 78 && in read_user_chunk_callback()
2014 chunk->name[3] == 84) in read_user_chunk_callback()
2017 if (chunk->size != 1) in read_user_chunk_callback()
2018 return(-1); /* Error return */ in read_user_chunk_callback()
2022 image->orientation= in read_user_chunk_callback()
2023 Magick_Orientation_from_Exif_Orientation((int) chunk->data[0]); in read_user_chunk_callback()
2029 if (chunk->name[0] == 118 && in read_user_chunk_callback()
2030 chunk->name[1] == 112 && in read_user_chunk_callback()
2031 chunk->name[2] == 65 && in read_user_chunk_callback()
2032 chunk->name[3] == 103) in read_user_chunk_callback()
2036 if (chunk->size != 9) in read_user_chunk_callback()
2037 return(-1); /* Error return */ in read_user_chunk_callback()
2039 if (chunk->data[8] != 0) in read_user_chunk_callback()
2044 image->page.width=(size_t)mng_get_long(chunk->data); in read_user_chunk_callback()
2045 image->page.height=(size_t)mng_get_long(&chunk->data[4]); in read_user_chunk_callback()
2051 if (chunk->name[0] == 99 && in read_user_chunk_callback()
2052 chunk->name[1] == 97 && in read_user_chunk_callback()
2053 chunk->name[2] == 78 && in read_user_chunk_callback()
2054 chunk->name[3] == 118) in read_user_chunk_callback()
2058 if (chunk->size != 16) in read_user_chunk_callback()
2059 return(-1); /* Error return */ in read_user_chunk_callback()
2063 image->page.width=(size_t) mng_get_long(chunk->data); in read_user_chunk_callback()
2064 image->page.height=(size_t) mng_get_long(&chunk->data[4]); in read_user_chunk_callback()
2065 image->page.x=(ssize_t) ((int) mng_get_long(&chunk->data[8])); in read_user_chunk_callback()
2066 image->page.y=(ssize_t) ((int) mng_get_long(&chunk->data[12])); in read_user_chunk_callback()
2072 if ((chunk->name[0] == 97) && (chunk->name[1] == 99) && in read_user_chunk_callback()
2073 (chunk->name[2] == 84) && (chunk->name[3] == 76)) in read_user_chunk_callback()
2079 error_info->exception); in read_user_chunk_callback()
2100 FormatLocaleString(timestamp,21,"%04d-%02d-%02dT%02d:%02d:%02dZ", in read_tIME_chunk()
2101 time->year,time->month,time->day,time->hour,time->minute,time->second); in read_tIME_chunk()
2119 % (minus the 8-byte signature) and returns it. It allocates the memory
2219 Quantum in ReadOnePNGImage()
2233 register Quantum in ReadOnePNGImage()
2257 #ifdef PNG_APNG_SUPPORTED /* libpng was built with APNG patch; */ in ReadOnePNGImage()
2300 " running with %s", libpng_runv); in ReadOnePNGImage()
2307 " running with %s", zlib_runv); in ReadOnePNGImage()
2312 if (image_info->verbose) in ReadOnePNGImage()
2313 printf("Your PNG library (libpng-%s) is rather old.\n", in ReadOnePNGImage()
2318 # ifndef PNG_TRANSFORM_GRAY_TO_RGB /* Added at libpng-1.4.0beta67 */ in ReadOnePNGImage()
2319 if (image_info->verbose) in ReadOnePNGImage()
2321 printf("Your PNG library (libpng-%s) is an old beta version.\n", in ReadOnePNGImage()
2330 image=mng_info->image; in ReadOnePNGImage()
2336 " image->alpha_trait=%d\n" in ReadOnePNGImage()
2337 " image->rendering_intent=%d\n" in ReadOnePNGImage()
2338 " image->colorspace=%d\n" in ReadOnePNGImage()
2339 " image->gamma=%f", in ReadOnePNGImage()
2340 (int) image->alpha_trait, (int) image->rendering_intent, in ReadOnePNGImage()
2341 (int) image->colorspace, image->gamma); in ReadOnePNGImage()
2344 Magick_RenderingIntent_to_PNG_RenderingIntent(image->rendering_intent); in ReadOnePNGImage()
2346 /* Set to an out-of-range color unless tRNS chunk is present */ in ReadOnePNGImage()
2398 quantum_scanline = (Quantum *) NULL; in ReadOnePNGImage()
2414 quantum_scanline=(Quantum *) RelinquishMagickMemory(quantum_scanline); in ReadOnePNGImage()
2422 " exit ReadOnePNGImage() with error."); in ReadOnePNGImage()
2429 /* { For navigation to end of SETJMP-protected block. Within this in ReadOnePNGImage()
2448 /* Reject images with too many rows or columns */ in ReadOnePNGImage()
2454 option=GetImageOption(image_info,"png:chunk-cache-max"); in ReadOnePNGImage()
2463 option=GetImageOption(image_info,"png:chunk-malloc-max"); in ReadOnePNGImage()
2477 mng_info->image_found++; in ReadOnePNGImage()
2480 if (LocaleCompare(image_info->magick,"MNG") == 0) in ReadOnePNGImage()
2490 mng_info->image=image; in ReadOnePNGImage()
2491 mng_info->bytes_in_read_buffer=0; in ReadOnePNGImage()
2492 mng_info->found_empty_plte=MagickFalse; in ReadOnePNGImage()
2493 mng_info->have_saved_bkgd_index=MagickFalse; in ReadOnePNGImage()
2506 value=GetImageOption(image_info,"png:ignore-crc"); in ReadOnePNGImage()
2522 value=GetImageOption(image_info,"png:preserve-iCCP"); in ReadOnePNGImage()
2525 value=GetImageArtifact(image,"png:preserve-iCCP"); in ReadOnePNGImage()
2532 * to do that anyway. This feature was added at libpng-1.6.12. in ReadOnePNGImage()
2562 /* Disable new libpng-1.5.10 feature */ in ReadOnePNGImage()
2569 /* Disable thread-unsafe features of pnggccrd */ in ReadOnePNGImage()
2600 value=GetImageOption(image_info,"png:swap-bytes"); in ReadOnePNGImage()
2603 value=GetImageArtifact(image,"png:swap-bytes"); in ReadOnePNGImage()
2609 /* Save bit-depth and color-type in case we later want to write a PNG00 */ in ReadOnePNGImage()
2616 (void) SetImageProperty(image,"png:IHDR.color-type-orig",msg,exception); in ReadOnePNGImage()
2620 (void) SetImageProperty(image,"png:IHDR.bit-depth-orig",msg,exception); in ReadOnePNGImage()
2634 image->depth=ping_bit_depth; in ReadOnePNGImage()
2635 image->depth=GetImageQuantumDepth(image,MagickFalse); in ReadOnePNGImage()
2636 image->interlace=ping_interlace_method != 0 ? PNGInterlace : NoInterlace; in ReadOnePNGImage()
2641 image->rendering_intent=UndefinedIntent; in ReadOnePNGImage()
2643 (void) memset(&image->chromaticity,0, in ReadOnePNGImage()
2644 sizeof(image->chromaticity)); in ReadOnePNGImage()
2767 " Got a %lu-byte ICC profile (potentially sRGB)", in ReadOnePNGImage()
2774 " with crc=%8x",(unsigned int) profile_crc); in ReadOnePNGImage()
2781 " It is sRGB with rendering intent = %s", in ReadOnePNGImage()
2784 if (image->rendering_intent==UndefinedIntent) in ReadOnePNGImage()
2786 image->rendering_intent= in ReadOnePNGImage()
2797 " Got %lu-byte ICC profile not recognized as sRGB", in ReadOnePNGImage()
2802 else /* Preserve-iCCP */ in ReadOnePNGImage()
2820 if (image->rendering_intent == UndefinedIntent) in ReadOnePNGImage()
2821 image->rendering_intent= in ReadOnePNGImage()
2830 else if (mng_info->have_global_srgb) in ReadOnePNGImage()
2832 if (image->rendering_intent == UndefinedIntent) in ReadOnePNGImage()
2833 image->rendering_intent= in ReadOnePNGImage()
2835 (mng_info->global_srgb_intent); in ReadOnePNGImage()
2843 if (mng_info->have_global_gama) in ReadOnePNGImage()
2844 png_set_gAMA(ping,ping_info,mng_info->global_gamma); in ReadOnePNGImage()
2848 image->gamma=(float) file_gamma; in ReadOnePNGImage()
2857 if (mng_info->have_global_chrm != MagickFalse) in ReadOnePNGImage()
2860 mng_info->global_chrm.white_point.x, in ReadOnePNGImage()
2861 mng_info->global_chrm.white_point.y, in ReadOnePNGImage()
2862 mng_info->global_chrm.red_primary.x, in ReadOnePNGImage()
2863 mng_info->global_chrm.red_primary.y, in ReadOnePNGImage()
2864 mng_info->global_chrm.green_primary.x, in ReadOnePNGImage()
2865 mng_info->global_chrm.green_primary.y, in ReadOnePNGImage()
2866 mng_info->global_chrm.blue_primary.x, in ReadOnePNGImage()
2867 mng_info->global_chrm.blue_primary.y); in ReadOnePNGImage()
2874 &image->chromaticity.white_point.x, in ReadOnePNGImage()
2875 &image->chromaticity.white_point.y, in ReadOnePNGImage()
2876 &image->chromaticity.red_primary.x, in ReadOnePNGImage()
2877 &image->chromaticity.red_primary.y, in ReadOnePNGImage()
2878 &image->chromaticity.green_primary.x, in ReadOnePNGImage()
2879 &image->chromaticity.green_primary.y, in ReadOnePNGImage()
2880 &image->chromaticity.blue_primary.x, in ReadOnePNGImage()
2881 &image->chromaticity.blue_primary.y); in ReadOnePNGImage()
2885 if (image->chromaticity.red_primary.x>0.6399f && in ReadOnePNGImage()
2886 image->chromaticity.red_primary.x<0.6401f && in ReadOnePNGImage()
2887 image->chromaticity.red_primary.y>0.3299f && in ReadOnePNGImage()
2888 image->chromaticity.red_primary.y<0.3301f && in ReadOnePNGImage()
2889 image->chromaticity.green_primary.x>0.2999f && in ReadOnePNGImage()
2890 image->chromaticity.green_primary.x<0.3001f && in ReadOnePNGImage()
2891 image->chromaticity.green_primary.y>0.5999f && in ReadOnePNGImage()
2892 image->chromaticity.green_primary.y<0.6001f && in ReadOnePNGImage()
2893 image->chromaticity.blue_primary.x>0.1499f && in ReadOnePNGImage()
2894 image->chromaticity.blue_primary.x<0.1501f && in ReadOnePNGImage()
2895 image->chromaticity.blue_primary.y>0.0599f && in ReadOnePNGImage()
2896 image->chromaticity.blue_primary.y<0.0601f && in ReadOnePNGImage()
2897 image->chromaticity.white_point.x>0.3126f && in ReadOnePNGImage()
2898 image->chromaticity.white_point.x<0.3128f && in ReadOnePNGImage()
2899 image->chromaticity.white_point.y>0.3289f && in ReadOnePNGImage()
2900 image->chromaticity.white_point.y<0.3291f) in ReadOnePNGImage()
2904 if (image->rendering_intent != UndefinedIntent) in ReadOnePNGImage()
2908 (image->gamma > .45 && image->gamma < .46)) && in ReadOnePNGImage()
2915 (image->rendering_intent)); in ReadOnePNGImage()
2926 image->page.x=(ssize_t) png_get_x_offset_pixels(ping, ping_info); in ReadOnePNGImage()
2927 image->page.y=(ssize_t) png_get_y_offset_pixels(ping, ping_info); in ReadOnePNGImage()
2930 if (image->page.x || image->page.y) in ReadOnePNGImage()
2933 image->page.x,(double) image->page.y); in ReadOnePNGImage()
2939 if (mng_info->have_global_phys) in ReadOnePNGImage()
2942 mng_info->global_x_pixels_per_unit, in ReadOnePNGImage()
2943 mng_info->global_y_pixels_per_unit, in ReadOnePNGImage()
2944 mng_info->global_phys_unit_type); in ReadOnePNGImage()
2958 image->resolution.x=(double) x_resolution; in ReadOnePNGImage()
2959 image->resolution.y=(double) y_resolution; in ReadOnePNGImage()
2963 image->units=PixelsPerCentimeterResolution; in ReadOnePNGImage()
2964 image->resolution.x=(double) x_resolution/100.0; in ReadOnePNGImage()
2965 image->resolution.y=(double) y_resolution/100.0; in ReadOnePNGImage()
2985 if (mng_info->global_plte_length) in ReadOnePNGImage()
2987 png_set_PLTE(ping,ping_info,mng_info->global_plte, in ReadOnePNGImage()
2988 (int) mng_info->global_plte_length); in ReadOnePNGImage()
2992 if (mng_info->global_trns_length) in ReadOnePNGImage()
2999 png_set_tRNS(ping,ping_info,mng_info->global_trns, in ReadOnePNGImage()
3000 (int) mng_info->global_trns_length,NULL); in ReadOnePNGImage()
3006 mng_info->have_saved_bkgd_index || in ReadOnePNGImage()
3014 if (mng_info->have_saved_bkgd_index) in ReadOnePNGImage()
3015 background.index=mng_info->saved_bkgd_index; in ReadOnePNGImage()
3018 background.index=ping_background->index; in ReadOnePNGImage()
3021 mng_info->global_plte[background.index].red; in ReadOnePNGImage()
3024 mng_info->global_plte[background.index].green; in ReadOnePNGImage()
3027 mng_info->global_plte[background.index].blue; in ReadOnePNGImage()
3030 mng_info->global_plte[background.index].green; in ReadOnePNGImage()
3042 if (mng_info->have_global_bkgd && in ReadOnePNGImage()
3044 image->background_color=mng_info->mng_global_bkgd; in ReadOnePNGImage()
3052 * Scale background components to 16-bit, then scale in ReadOnePNGImage()
3053 * to quantum depth in ReadOnePNGImage()
3070 ping_background->red *= bkgd_scale; in ReadOnePNGImage()
3071 ping_background->green *= bkgd_scale; in ReadOnePNGImage()
3072 ping_background->blue *= bkgd_scale; in ReadOnePNGImage()
3080 ping_background->red,ping_background->green, in ReadOnePNGImage()
3081 ping_background->blue, in ReadOnePNGImage()
3082 bkgd_scale,ping_background->red, in ReadOnePNGImage()
3083 ping_background->green,ping_background->blue); in ReadOnePNGImage()
3086 image->background_color.red= in ReadOnePNGImage()
3087 ScaleShortToQuantum(ping_background->red); in ReadOnePNGImage()
3089 image->background_color.green= in ReadOnePNGImage()
3090 ScaleShortToQuantum(ping_background->green); in ReadOnePNGImage()
3092 image->background_color.blue= in ReadOnePNGImage()
3093 ScaleShortToQuantum(ping_background->blue); in ReadOnePNGImage()
3095 image->background_color.alpha=OpaqueAlpha; in ReadOnePNGImage()
3099 " image->background_color=(%.20g,%.20g,%.20g).", in ReadOnePNGImage()
3100 (double) image->background_color.red, in ReadOnePNGImage()
3101 (double) image->background_color.green, in ReadOnePNGImage()
3102 (double) image->background_color.blue); in ReadOnePNGImage()
3121 max_sample = (int) ((one << ping_file_depth) - 1); in ReadOnePNGImage()
3124 (int)ping_trans_color->gray > max_sample) || in ReadOnePNGImage()
3126 ((int)ping_trans_color->red > max_sample || in ReadOnePNGImage()
3127 (int)ping_trans_color->green > max_sample || in ReadOnePNGImage()
3128 (int)ping_trans_color->blue > max_sample))) in ReadOnePNGImage()
3132 " Ignoring PNG tRNS chunk with out-of-range sample."); in ReadOnePNGImage()
3135 image->alpha_trait=UndefinedPixelTrait; in ReadOnePNGImage()
3142 scale_to_short = 65535L/((1UL << ping_file_depth)-1); in ReadOnePNGImage()
3145 transparent_color.red= scale_to_short*ping_trans_color->red; in ReadOnePNGImage()
3146 transparent_color.green= scale_to_short*ping_trans_color->green; in ReadOnePNGImage()
3147 transparent_color.blue= scale_to_short*ping_trans_color->blue; in ReadOnePNGImage()
3148 transparent_color.alpha= scale_to_short*ping_trans_color->gray; in ReadOnePNGImage()
3156 (int) ping_trans_color->gray,(int) transparent_color.alpha); in ReadOnePNGImage()
3166 if (mng_info->have_global_sbit) in ReadOnePNGImage()
3169 png_set_sBIT(ping,ping_info,&mng_info->global_sbit); in ReadOnePNGImage()
3181 mng_info->image_box.left=0; in ReadOnePNGImage()
3182 mng_info->image_box.right=(ssize_t) ping_width; in ReadOnePNGImage()
3183 mng_info->image_box.top=0; in ReadOnePNGImage()
3184 mng_info->image_box.bottom=(ssize_t) ping_height; in ReadOnePNGImage()
3185 if (mng_info->mng_type == 0) in ReadOnePNGImage()
3187 mng_info->mng_width=ping_width; in ReadOnePNGImage()
3188 mng_info->mng_height=ping_height; in ReadOnePNGImage()
3189 mng_info->frame=mng_info->image_box; in ReadOnePNGImage()
3190 mng_info->clip=mng_info->image_box; in ReadOnePNGImage()
3195 image->page.y=mng_info->y_off[mng_info->object_id]; in ReadOnePNGImage()
3198 image->compression=ZipCompression; in ReadOnePNGImage()
3199 image->columns=ping_width; in ReadOnePNGImage()
3200 image->rows=ping_height; in ReadOnePNGImage()
3206 image_gamma = image->gamma; in ReadOnePNGImage()
3209 " image->gamma=%f",(float) image_gamma); in ReadOnePNGImage()
3213 /* Set image->rendering_intent to Undefined, in ReadOnePNGImage()
3214 * image->colorspace to GRAY, and reset image->chromaticity. in ReadOnePNGImage()
3216 image->intensity = Rec709LuminancePixelIntensityMethod; in ReadOnePNGImage()
3222 save_rendering_intent = image->rendering_intent; in ReadOnePNGImage()
3224 save_chromaticity = image->chromaticity; in ReadOnePNGImage()
3227 image->rendering_intent = save_rendering_intent; in ReadOnePNGImage()
3228 image->chromaticity = save_chromaticity; in ReadOnePNGImage()
3231 image->gamma = image_gamma; in ReadOnePNGImage()
3236 image_gamma = image->gamma; in ReadOnePNGImage()
3239 " image->gamma=%f",(float) image_gamma); in ReadOnePNGImage()
3243 /* Set image->rendering_intent to Undefined, in ReadOnePNGImage()
3244 * image->colorspace to GRAY, and reset image->chromaticity. in ReadOnePNGImage()
3246 image->intensity = Rec709LuminancePixelIntensityMethod; in ReadOnePNGImage()
3252 save_rendering_intent = image->rendering_intent; in ReadOnePNGImage()
3254 save_chromaticity = image->chromaticity; in ReadOnePNGImage()
3257 image->rendering_intent = save_rendering_intent; in ReadOnePNGImage()
3258 image->chromaticity = save_chromaticity; in ReadOnePNGImage()
3261 image->gamma = image_gamma; in ReadOnePNGImage()
3265 " image->colorspace=%d",(int) image->colorspace); in ReadOnePNGImage()
3274 image->storage_class=PseudoClass; in ReadOnePNGImage()
3276 image->colors=one << ping_file_depth; in ReadOnePNGImage()
3278 if (image->colors > 256) in ReadOnePNGImage()
3279 image->colors=256; in ReadOnePNGImage()
3281 if (image->colors > 65536L) in ReadOnePNGImage()
3282 image->colors=65536L; in ReadOnePNGImage()
3290 image->colors=(size_t) number_colors; in ReadOnePNGImage()
3298 if (image->storage_class == PseudoClass) in ReadOnePNGImage()
3303 if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) in ReadOnePNGImage()
3315 image->colormap[i].red=ScaleCharToQuantum(palette[i].red); in ReadOnePNGImage()
3316 image->colormap[i].green=ScaleCharToQuantum(palette[i].green); in ReadOnePNGImage()
3317 image->colormap[i].blue=ScaleCharToQuantum(palette[i].blue); in ReadOnePNGImage()
3320 for ( ; i < (ssize_t) image->colors; i++) in ReadOnePNGImage()
3322 image->colormap[i].red=0; in ReadOnePNGImage()
3323 image->colormap[i].green=0; in ReadOnePNGImage()
3324 image->colormap[i].blue=0; in ReadOnePNGImage()
3387 if (image->delay != 0) in ReadOnePNGImage()
3388 mng_info->scenes_found++; in ReadOnePNGImage()
3390 if ((mng_info->mng_type == 0 && (image->ping != MagickFalse)) || ( in ReadOnePNGImage()
3391 (image_info->number_scenes != 0) && (mng_info->scenes_found > (ssize_t) in ReadOnePNGImage()
3392 (image_info->first_scene+image_info->number_scenes)))) in ReadOnePNGImage()
3394 /* This happens later in non-ping decodes */ in ReadOnePNGImage()
3396 image->storage_class=DirectClass; in ReadOnePNGImage()
3397 image->alpha_trait= in ReadOnePNGImage()
3406 mng_info->scenes_found-1); in ReadOnePNGImage()
3424 status=SetImageExtent(image,image->columns,image->rows,exception); in ReadOnePNGImage()
3437 pixel_info=AcquireVirtualMemory(image->rows,ping_rowbytes* in ReadOnePNGImage()
3466 if (image->storage_class == DirectClass) in ReadOnePNGImage()
3473 image->alpha_trait= in ReadOnePNGImage()
3479 for (y=0; y < (ssize_t) image->rows; y++) in ReadOnePNGImage()
3489 if (pass < num_passes-1) in ReadOnePNGImage()
3492 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOnePNGImage()
3494 if (q == (Quantum *) NULL) in ReadOnePNGImage()
3524 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOnePNGImage()
3559 (MagickOffsetType) y, image->rows); in ReadOnePNGImage()
3567 if (y < (long) image->rows) in ReadOnePNGImage()
3579 else /* image->storage_class != DirectClass */ in ReadOnePNGImage()
3583 register Quantum in ReadOnePNGImage()
3593 image->alpha_trait=ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ? in ReadOnePNGImage()
3596 quantum_scanline=(Quantum *) AcquireQuantumMemory(image->columns, in ReadOnePNGImage()
3597 (image->alpha_trait == BlendPixelTrait? 2 : 1)* in ReadOnePNGImage()
3600 if (quantum_scanline == (Quantum *) NULL) in ReadOnePNGImage()
3603 for (y=0; y < (ssize_t) image->rows; y++) in ReadOnePNGImage()
3605 Quantum in ReadOnePNGImage()
3616 if (pass < num_passes-1) in ReadOnePNGImage()
3619 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOnePNGImage()
3621 if (q == (Quantum *) NULL) in ReadOnePNGImage()
3633 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOnePNGImage()
3648 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOnePNGImage()
3656 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOnePNGImage()
3660 quantum; in ReadOnePNGImage() local
3662 if (image->colors > 256) in ReadOnePNGImage()
3663 quantum=(((unsigned int) *p++) << 8); in ReadOnePNGImage()
3666 quantum=0; in ReadOnePNGImage()
3668 quantum|=(*p++); in ReadOnePNGImage()
3669 *r=ScaleShortToQuantum(quantum); in ReadOnePNGImage()
3674 if (image->colors > 256) in ReadOnePNGImage()
3675 quantum=(((unsigned int) *p++) << 8); in ReadOnePNGImage()
3677 quantum=0; in ReadOnePNGImage()
3679 quantum|=(*p++); in ReadOnePNGImage()
3681 alpha=ScaleShortToQuantum(quantum); in ReadOnePNGImage()
3722 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOnePNGImage()
3724 if (q == (Quantum *) NULL) in ReadOnePNGImage()
3726 for (x=0; x < (ssize_t) image->columns; x++) in ReadOnePNGImage()
3729 SetPixelRed(image,ClampToQuantum(image->colormap[index].red),q); in ReadOnePNGImage()
3730 SetPixelGreen(image,ClampToQuantum(image->colormap[index].green),q); in ReadOnePNGImage()
3731 SetPixelBlue(image,ClampToQuantum(image->colormap[index].blue),q); in ReadOnePNGImage()
3743 image->rows); in ReadOnePNGImage()
3749 quantum_scanline=(Quantum *) RelinquishMagickMemory(quantum_scanline); in ReadOnePNGImage()
3750 if (y < (long) image->rows) in ReadOnePNGImage()
3761 image->alpha_trait=found_transparent_pixel ? BlendPixelTrait : in ReadOnePNGImage()
3785 " image->storage_class=%d\n",(int) image->storage_class); in ReadOnePNGImage()
3788 if (image_info->number_scenes != 0 && mng_info->scenes_found-1 < in ReadOnePNGImage()
3789 (ssize_t) image_info->first_scene && image->delay != 0) in ReadOnePNGImage()
3793 image->colors=2; in ReadOnePNGImage()
3812 storage_class=image->storage_class; in ReadOnePNGImage()
3813 image->alpha_trait=BlendPixelTrait; in ReadOnePNGImage()
3823 image->colormap[x].alpha_trait=BlendPixelTrait; in ReadOnePNGImage()
3824 image->colormap[x].alpha = in ReadOnePNGImage()
3831 for (x=0; x < (int) image->colors; x++) in ReadOnePNGImage()
3833 if (ScaleQuantumToShort(image->colormap[x].red) == in ReadOnePNGImage()
3836 image->colormap[x].alpha_trait=BlendPixelTrait; in ReadOnePNGImage()
3837 image->colormap[x].alpha = (Quantum) TransparentAlpha; in ReadOnePNGImage()
3849 for (y=0; y < (ssize_t) image->rows; y++) in ReadOnePNGImage()
3851 image->storage_class=storage_class; in ReadOnePNGImage()
3852 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOnePNGImage()
3854 if (q == (Quantum *) NULL) in ReadOnePNGImage()
3859 * 16-bit colors that differ only in the low byte in ReadOnePNGImage()
3861 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOnePNGImage()
3886 image->storage_class=DirectClass; in ReadOnePNGImage()
3985 if (object_id && !mng_info->frozen[object_id]) in ReadOnePNGImage()
3987 if (mng_info->ob[object_id] == (MngBuffer *) NULL) in ReadOnePNGImage()
3992 mng_info->ob[object_id]=(MngBuffer *) in ReadOnePNGImage()
3995 if (mng_info->ob[object_id] != (MngBuffer *) NULL) in ReadOnePNGImage()
3997 mng_info->ob[object_id]->image=(Image *) NULL; in ReadOnePNGImage()
3998 mng_info->ob[object_id]->reference_count=1; in ReadOnePNGImage()
4002 if ((mng_info->ob[object_id] == (MngBuffer *) NULL) || in ReadOnePNGImage()
4003 mng_info->ob[object_id]->frozen) in ReadOnePNGImage()
4005 if (mng_info->ob[object_id] == (MngBuffer *) NULL) in ReadOnePNGImage()
4008 if (mng_info->ob[object_id]->frozen) in ReadOnePNGImage()
4015 if (mng_info->ob[object_id]->image != (Image *) NULL) in ReadOnePNGImage()
4016 mng_info->ob[object_id]->image=DestroyImage in ReadOnePNGImage()
4017 (mng_info->ob[object_id]->image); in ReadOnePNGImage()
4019 mng_info->ob[object_id]->image=CloneImage(image,0,0,MagickTrue, in ReadOnePNGImage()
4022 if (mng_info->ob[object_id]->image != (Image *) NULL) in ReadOnePNGImage()
4023 mng_info->ob[object_id]->image->file=(FILE *) NULL; in ReadOnePNGImage()
4031 mng_info->ob[object_id]->width=ping_width; in ReadOnePNGImage()
4032 mng_info->ob[object_id]->height=ping_height; in ReadOnePNGImage()
4033 mng_info->ob[object_id]->color_type=ping_color_type; in ReadOnePNGImage()
4034 mng_info->ob[object_id]->sample_depth=ping_bit_depth; in ReadOnePNGImage()
4035 mng_info->ob[object_id]->interlace_method=ping_interlace_method; in ReadOnePNGImage()
4036 mng_info->ob[object_id]->compression_method= in ReadOnePNGImage()
4038 mng_info->ob[object_id]->filter_method=ping_filter_method; in ReadOnePNGImage()
4049 mng_info->ob[object_id]->plte_length=number_colors; in ReadOnePNGImage()
4053 mng_info->ob[object_id]->plte[i]=plte[i]; in ReadOnePNGImage()
4058 mng_info->ob[object_id]->plte_length=0; in ReadOnePNGImage()
4063 /* Set image->alpha_trait to MagickTrue if the input colortype supports in ReadOnePNGImage()
4067 image->alpha_trait=(((int) ping_color_type == PNG_COLOR_TYPE_RGB_ALPHA) || in ReadOnePNGImage()
4071 if (image->alpha_trait == BlendPixelTrait) in ReadOnePNGImage()
4075 if (image->alpha_trait != UndefinedPixelTrait) in ReadOnePNGImage()
4118 (void) SetImageProperty(image,"png:text-encoded profiles",msg, in ReadOnePNGImage()
4195 (double) image->page.x,(double) image->page.y); in ReadOnePNGImage()
4209 if ((image->page.width != 0 && image->page.width != image->columns) || in ReadOnePNGImage()
4210 (image->page.height != 0 && image->page.height != image->rows) || in ReadOnePNGImage()
4211 (image->page.x != 0 || image->page.y != 0)) in ReadOnePNGImage()
4215 (double) image->page.width,(double) image->page.height, in ReadOnePNGImage()
4216 (double) image->page.x,(double) image->page.y); in ReadOnePNGImage()
4237 /* } for navigation to beginning of SETJMP-protected block, revert to in ReadOnePNGImage()
4269 assert(image_info->signature == MagickCoreSignature); in ReadPNGImage()
4271 if (image_info->debug != MagickFalse) in ReadPNGImage()
4273 image_info->filename); in ReadPNGImage()
4276 assert(exception->signature == MagickCoreSignature); in ReadPNGImage()
4311 mng_info->image=image; in ReadPNGImage()
4320 "exit ReadPNGImage() with error"); in ReadPNGImage()
4327 if ((image->columns == 0) || (image->rows == 0)) in ReadPNGImage()
4331 "exit ReadPNGImage() with error."); in ReadPNGImage()
4336 if ((IssRGBColorspace(image->colorspace) != MagickFalse) && in ReadPNGImage()
4337 ((image->gamma < .45) || (image->gamma > .46)) && in ReadPNGImage()
4338 !(image->chromaticity.red_primary.x>0.6399f && in ReadPNGImage()
4339 image->chromaticity.red_primary.x<0.6401f && in ReadPNGImage()
4340 image->chromaticity.red_primary.y>0.3299f && in ReadPNGImage()
4341 image->chromaticity.red_primary.y<0.3301f && in ReadPNGImage()
4342 image->chromaticity.green_primary.x>0.2999f && in ReadPNGImage()
4343 image->chromaticity.green_primary.x<0.3001f && in ReadPNGImage()
4344 image->chromaticity.green_primary.y>0.5999f && in ReadPNGImage()
4345 image->chromaticity.green_primary.y<0.6001f && in ReadPNGImage()
4346 image->chromaticity.blue_primary.x>0.1499f && in ReadPNGImage()
4347 image->chromaticity.blue_primary.x<0.1501f && in ReadPNGImage()
4348 image->chromaticity.blue_primary.y>0.0599f && in ReadPNGImage()
4349 image->chromaticity.blue_primary.y<0.0601f && in ReadPNGImage()
4350 image->chromaticity.white_point.x>0.3126f && in ReadPNGImage()
4351 image->chromaticity.white_point.x<0.3128f && in ReadPNGImage()
4352 image->chromaticity.white_point.y>0.3289f && in ReadPNGImage()
4353 image->chromaticity.white_point.y<0.3291f)) in ReadPNGImage()
4364 (double) image->page.width,(double) image->page.height, in ReadPNGImage()
4365 (double) image->page.x,(double) image->page.y); in ReadPNGImage()
4367 " image->colorspace: %d", (int) image->colorspace); in ReadPNGImage()
4391 % (minus the 8-byte signature) and returns it. It allocates the memory
4395 % JNG support written by Glenn Randers-Pehrson, glennrp@image...
4474 register const Quantum in ReadOneJNGImage()
4481 register Quantum in ReadOneJNGImage()
4507 image=mng_info->image; in ReadOneJNGImage()
4509 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneJNGImage()
4525 mng_info->image=image; in ReadOneJNGImage()
4627 image->interlace=jng_image_interlace_method != 0 ? PNGInterlace : in ReadOneJNGImage()
4713 (void) AcquireUniqueFilename(color_image->filename); in ReadOneJNGImage()
4724 if ((image_info->ping == MagickFalse) && (jng_color_type >= 12)) in ReadOneJNGImage()
4752 (void) AcquireUniqueFilename(alpha_image->filename); in ReadOneJNGImage()
4794 /* Copy chunk to color_image->blob */ in ReadOneJNGImage()
4811 /* Copy IDAT header and chunk data to alpha_image->blob */ in ReadOneJNGImage()
4813 if (alpha_image != NULL && image_info->ping == MagickFalse) in ReadOneJNGImage()
4835 /* Copy chunk data to alpha_image->blob */ in ReadOneJNGImage()
4837 if ((alpha_image != NULL) && (image_info->ping == MagickFalse) && in ReadOneJNGImage()
4865 image->background_color.red=ScaleCharToQuantum(p[1]); in ReadOneJNGImage()
4866 image->background_color.green=image->background_color.red; in ReadOneJNGImage()
4867 image->background_color.blue=image->background_color.red; in ReadOneJNGImage()
4872 image->background_color.red=ScaleCharToQuantum(p[1]); in ReadOneJNGImage()
4873 image->background_color.green=ScaleCharToQuantum(p[3]); in ReadOneJNGImage()
4874 image->background_color.blue=ScaleCharToQuantum(p[5]); in ReadOneJNGImage()
4884 image->gamma=((float) mng_get_long(p))*0.00001; in ReadOneJNGImage()
4894 image->chromaticity.white_point.x=0.00001*mng_get_long(p); in ReadOneJNGImage()
4895 image->chromaticity.white_point.y=0.00001*mng_get_long(&p[4]); in ReadOneJNGImage()
4896 image->chromaticity.red_primary.x=0.00001*mng_get_long(&p[8]); in ReadOneJNGImage()
4897 image->chromaticity.red_primary.y=0.00001*mng_get_long(&p[12]); in ReadOneJNGImage()
4898 image->chromaticity.green_primary.x=0.00001*mng_get_long(&p[16]); in ReadOneJNGImage()
4899 image->chromaticity.green_primary.y=0.00001*mng_get_long(&p[20]); in ReadOneJNGImage()
4900 image->chromaticity.blue_primary.x=0.00001*mng_get_long(&p[24]); in ReadOneJNGImage()
4901 image->chromaticity.blue_primary.y=0.00001*mng_get_long(&p[28]); in ReadOneJNGImage()
4912 image->rendering_intent= in ReadOneJNGImage()
4914 image->gamma=0.45455f; in ReadOneJNGImage()
4915 image->chromaticity.red_primary.x=0.6400f; in ReadOneJNGImage()
4916 image->chromaticity.red_primary.y=0.3300f; in ReadOneJNGImage()
4917 image->chromaticity.green_primary.x=0.3000f; in ReadOneJNGImage()
4918 image->chromaticity.green_primary.y=0.6000f; in ReadOneJNGImage()
4919 image->chromaticity.blue_primary.x=0.1500f; in ReadOneJNGImage()
4920 image->chromaticity.blue_primary.y=0.0600f; in ReadOneJNGImage()
4921 image->chromaticity.white_point.x=0.3127f; in ReadOneJNGImage()
4922 image->chromaticity.white_point.y=0.3290f; in ReadOneJNGImage()
4933 image->page.x=(ssize_t) mng_get_long(p); in ReadOneJNGImage()
4934 image->page.y=(ssize_t) mng_get_long(&p[4]); in ReadOneJNGImage()
4938 image->page.x/=10000; in ReadOneJNGImage()
4939 image->page.y/=10000; in ReadOneJNGImage()
4952 image->resolution.x=(double) mng_get_long(p); in ReadOneJNGImage()
4953 image->resolution.y=(double) mng_get_long(&p[4]); in ReadOneJNGImage()
4956 image->units=PixelsPerCentimeterResolution; in ReadOneJNGImage()
4957 image->resolution.x=image->resolution.x/100.0f; in ReadOneJNGImage()
4958 image->resolution.y=image->resolution.y/100.0f; in ReadOneJNGImage()
5030 (void) FormatLocaleString(color_image_info->filename,MagickPathExtent, in ReadOneJNGImage()
5031 "jpeg:%s",color_image->filename); in ReadOneJNGImage()
5033 color_image_info->ping=MagickFalse; /* To do: avoid this */ in ReadOneJNGImage()
5036 (void) RelinquishUniqueFileResource(color_image->filename); in ReadOneJNGImage()
5051 image->rows=jng_height; in ReadOneJNGImage()
5052 image->columns=jng_width; in ReadOneJNGImage()
5054 status=SetImageExtent(image,image->columns,image->rows,exception); in ReadOneJNGImage()
5062 if ((image->columns != jng_image->columns) || in ReadOneJNGImage()
5063 (image->rows != jng_image->rows)) in ReadOneJNGImage()
5070 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneJNGImage()
5072 s=GetVirtualPixels(jng_image,0,y,image->columns,1,exception); in ReadOneJNGImage()
5073 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOneJNGImage()
5074 if ((s == (const Quantum *) NULL) || (q == (Quantum *) NULL)) in ReadOneJNGImage()
5076 for (x=(ssize_t) image->columns; x != 0; x--) in ReadOneJNGImage()
5091 if ((image_info->ping == MagickFalse) && (jng_color_type >= 12)) in ReadOneJNGImage()
5110 (void) FormatLocaleString(alpha_image_info->filename,MagickPathExtent, in ReadOneJNGImage()
5111 "%s",alpha_image->filename); in ReadOneJNGImage()
5116 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneJNGImage()
5118 s=GetVirtualPixels(jng_image,0,y,image->columns,1,exception); in ReadOneJNGImage()
5119 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOneJNGImage()
5120 if ((s == (const Quantum *) NULL) || (q == (Quantum *) NULL)) in ReadOneJNGImage()
5123 if (image->alpha_trait != UndefinedPixelTrait) in ReadOneJNGImage()
5124 for (x=(ssize_t) image->columns; x != 0; x--) in ReadOneJNGImage()
5132 for (x=(ssize_t) image->columns; x != 0; x--) in ReadOneJNGImage()
5136 image->alpha_trait=BlendPixelTrait; in ReadOneJNGImage()
5144 (void) RelinquishUniqueFileResource(alpha_image->filename); in ReadOneJNGImage()
5153 if (mng_info->mng_type == 0) in ReadOneJNGImage()
5155 mng_info->mng_width=jng_width; in ReadOneJNGImage()
5156 mng_info->mng_height=jng_height; in ReadOneJNGImage()
5159 if (image->page.width == 0 && image->page.height == 0) in ReadOneJNGImage()
5161 image->page.width=jng_width; in ReadOneJNGImage()
5162 image->page.height=jng_height; in ReadOneJNGImage()
5165 if (image->page.x == 0 && image->page.y == 0) in ReadOneJNGImage()
5167 image->page.x=mng_info->x_off[mng_info->object_id]; in ReadOneJNGImage()
5168 image->page.y=mng_info->y_off[mng_info->object_id]; in ReadOneJNGImage()
5173 image->page.y=mng_info->y_off[mng_info->object_id]; in ReadOneJNGImage()
5176 mng_info->image_found++; in ReadOneJNGImage()
5202 % (including the 8-byte signature) and returns it. It allocates the memory
5206 % JNG support written by Glenn Randers-Pehrson, glennrp@image...
5244 assert(image_info->signature == MagickCoreSignature); in ReadJNGImage()
5246 image_info->filename); in ReadJNGImage()
5248 assert(exception->signature == MagickCoreSignature); in ReadJNGImage()
5257 if (LocaleCompare(image_info->magick,"JNG") != 0) in ReadJNGImage()
5284 mng_info->image=image; in ReadJNGImage()
5292 "exit ReadJNGImage() with error"); in ReadJNGImage()
5298 if (image->columns == 0 || image->rows == 0) in ReadJNGImage()
5302 "exit ReadJNGImage() with error"); in ReadJNGImage()
5375 mng_type=0; /* 0: PNG or JNG; 1: MNG; 2: MNG-LC; 3: MNG-VLC */ in ReadOneMNGImage()
5414 image=mng_info->image; in ReadOneMNGImage()
5416 if (LocaleCompare(image_info->magick,"MNG") == 0) in ReadOneMNGImage()
5429 mng_info->object_clip[i].right=(ssize_t) PNG_UINT_31_MAX; in ReadOneMNGImage()
5430 mng_info->object_clip[i].bottom=(ssize_t) PNG_UINT_31_MAX; in ReadOneMNGImage()
5432 mng_info->exists[0]=MagickTrue; in ReadOneMNGImage()
5435 skipping_loop=(-1); in ReadOneMNGImage()
5445 mng_info->ticks_per_second=1UL*image->ticks_per_second; in ReadOneMNGImage()
5449 mng_info->framing_mode=1; in ReadOneMNGImage()
5454 mng_background_color=image->background_color; in ReadOneMNGImage()
5456 default_fb=mng_info->frame; in ReadOneMNGImage()
5457 previous_fb=mng_info->frame; in ReadOneMNGImage()
5463 if (LocaleCompare(image_info->magick,"MNG") == 0) in ReadOneMNGImage()
5520 if (mng_info->jhdr_warning == 0) in ReadOneMNGImage()
5522 CoderError,"JNGCompressNotSupported","`%s'",image->filename); in ReadOneMNGImage()
5524 mng_info->jhdr_warning++; in ReadOneMNGImage()
5531 if (mng_info->dhdr_warning == 0) in ReadOneMNGImage()
5533 CoderError,"DeltaPNGNotSupported","`%s'",image->filename); in ReadOneMNGImage()
5535 mng_info->dhdr_warning++; in ReadOneMNGImage()
5565 mng_info->mng_width=(unsigned long)mng_get_long(p); in ReadOneMNGImage()
5566 mng_info->mng_height=(unsigned long)mng_get_long(&p[4]); in ReadOneMNGImage()
5571 " MNG width: %.20g",(double) mng_info->mng_width); in ReadOneMNGImage()
5573 " MNG height: %.20g",(double) mng_info->mng_height); in ReadOneMNGImage()
5577 mng_info->ticks_per_second=(size_t) mng_get_long(p); in ReadOneMNGImage()
5579 if (mng_info->ticks_per_second == 0) in ReadOneMNGImage()
5583 default_frame_delay=1UL*image->ticks_per_second/ in ReadOneMNGImage()
5584 mng_info->ticks_per_second; in ReadOneMNGImage()
5604 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
5613 mng_info->image=image; in ReadOneMNGImage()
5616 if ((mng_info->mng_width > 65535L) || in ReadOneMNGImage()
5617 (mng_info->mng_height > 65535L)) in ReadOneMNGImage()
5624 "%.20gx%.20g+0+0",(double) mng_info->mng_width,(double) in ReadOneMNGImage()
5625 mng_info->mng_height); in ReadOneMNGImage()
5627 mng_info->frame.left=0; in ReadOneMNGImage()
5628 mng_info->frame.right=(ssize_t) mng_info->mng_width; in ReadOneMNGImage()
5629 mng_info->frame.top=0; in ReadOneMNGImage()
5630 mng_info->frame.bottom=(ssize_t) mng_info->mng_height; in ReadOneMNGImage()
5631 mng_info->clip=default_fb=previous_fb=mng_info->frame; in ReadOneMNGImage()
5634 mng_info->object_clip[i]=mng_info->frame; in ReadOneMNGImage()
5656 image->iterations=mng_iterations; in ReadOneMNGImage()
5664 repeat,(double) final_delay, (double) image->iterations); in ReadOneMNGImage()
5675 CoderError,"DEFI chunk found in MNG-VLC datastream","`%s'", in ReadOneMNGImage()
5676 image->filename); in ReadOneMNGImage()
5691 CoderError,"Nonzero object_id in MNG-LC datastream","`%s'", in ReadOneMNGImage()
5692 image->filename); in ReadOneMNGImage()
5701 CoderError,"object id too large","`%s'",image->filename); in ReadOneMNGImage()
5702 object_id=MNG_MAX_OBJECTS-1; in ReadOneMNGImage()
5705 if (mng_info->exists[object_id]) in ReadOneMNGImage()
5706 if (mng_info->frozen[object_id]) in ReadOneMNGImage()
5712 image->filename); in ReadOneMNGImage()
5716 mng_info->exists[object_id]=MagickTrue; in ReadOneMNGImage()
5719 mng_info->invisible[object_id]=p[2]; in ReadOneMNGImage()
5726 mng_info->x_off[object_id]=(ssize_t) mng_get_long(&p[4]); in ReadOneMNGImage()
5727 mng_info->y_off[object_id]=(ssize_t) mng_get_long(&p[8]); in ReadOneMNGImage()
5732 object_id,(double) mng_info->x_off[object_id], in ReadOneMNGImage()
5733 object_id,(double) mng_info->y_off[object_id]); in ReadOneMNGImage()
5741 mng_info->object_clip[object_id]=mng_read_box(mng_info->frame,0, in ReadOneMNGImage()
5749 mng_info->have_global_bkgd=MagickFalse; in ReadOneMNGImage()
5753 mng_info->mng_global_bkgd.red= in ReadOneMNGImage()
5756 mng_info->mng_global_bkgd.green= in ReadOneMNGImage()
5759 mng_info->mng_global_bkgd.blue= in ReadOneMNGImage()
5762 mng_info->have_global_bkgd=MagickTrue; in ReadOneMNGImage()
5808 if (mng_info->global_plte == (png_colorp) NULL) in ReadOneMNGImage()
5809 mng_info->global_plte=(png_colorp) AcquireQuantumMemory(256, in ReadOneMNGImage()
5810 sizeof(*mng_info->global_plte)); in ReadOneMNGImage()
5812 if (mng_info->global_plte == (png_colorp) NULL) in ReadOneMNGImage()
5814 mng_info->global_plte_length=0; in ReadOneMNGImage()
5822 mng_info->global_plte[i].red=p[3*i]; in ReadOneMNGImage()
5823 mng_info->global_plte[i].green=p[3*i+1]; in ReadOneMNGImage()
5824 mng_info->global_plte[i].blue=p[3*i+2]; in ReadOneMNGImage()
5827 mng_info->global_plte_length=(unsigned int) (length/3); in ReadOneMNGImage()
5832 mng_info->global_plte[i].red=i; in ReadOneMNGImage()
5833 mng_info->global_plte[i].green=i; in ReadOneMNGImage()
5834 mng_info->global_plte[i].blue=i; in ReadOneMNGImage()
5838 mng_info->global_plte_length=256; in ReadOneMNGImage()
5841 mng_info->global_plte_length=0; in ReadOneMNGImage()
5853 mng_info->global_trns[i]=p[i]; in ReadOneMNGImage()
5857 mng_info->global_trns[i]=255; in ReadOneMNGImage()
5859 mng_info->global_trns_length=(unsigned int) length; in ReadOneMNGImage()
5871 mng_info->global_gamma=((float) igamma)*0.00001; in ReadOneMNGImage()
5872 mng_info->have_global_gama=MagickTrue; in ReadOneMNGImage()
5876 mng_info->have_global_gama=MagickFalse; in ReadOneMNGImage()
5888 mng_info->global_chrm.white_point.x=0.00001*mng_get_long(p); in ReadOneMNGImage()
5889 mng_info->global_chrm.white_point.y=0.00001*mng_get_long(&p[4]); in ReadOneMNGImage()
5890 mng_info->global_chrm.red_primary.x=0.00001*mng_get_long(&p[8]); in ReadOneMNGImage()
5891 mng_info->global_chrm.red_primary.y=0.00001* in ReadOneMNGImage()
5893 mng_info->global_chrm.green_primary.x=0.00001* in ReadOneMNGImage()
5895 mng_info->global_chrm.green_primary.y=0.00001* in ReadOneMNGImage()
5897 mng_info->global_chrm.blue_primary.x=0.00001* in ReadOneMNGImage()
5899 mng_info->global_chrm.blue_primary.y=0.00001* in ReadOneMNGImage()
5901 mng_info->have_global_chrm=MagickTrue; in ReadOneMNGImage()
5904 mng_info->have_global_chrm=MagickFalse; in ReadOneMNGImage()
5917 mng_info->global_srgb_intent= in ReadOneMNGImage()
5919 mng_info->have_global_srgb=MagickTrue; in ReadOneMNGImage()
5922 mng_info->have_global_srgb=MagickFalse; in ReadOneMNGImage()
5944 CoderError,"FRAM chunk found in MNG-VLC datastream","`%s'", in ReadOneMNGImage()
5945 image->filename); in ReadOneMNGImage()
5947 if ((mng_info->framing_mode == 2) || (mng_info->framing_mode == 4)) in ReadOneMNGImage()
5948 image->delay=frame_delay; in ReadOneMNGImage()
5956 mng_info->framing_mode=p[0]; in ReadOneMNGImage()
5960 " Framing_mode=%d",mng_info->framing_mode); in ReadOneMNGImage()
5968 while (((p-chunk) < (long) length) && *p) in ReadOneMNGImage()
5973 if ((p-chunk) < (ssize_t) (length-4)) in ReadOneMNGImage()
5985 if (change_delay && ((p-chunk) < (ssize_t) (length-4))) in ReadOneMNGImage()
5987 frame_delay=1UL*image->ticks_per_second* in ReadOneMNGImage()
5990 if (mng_info->ticks_per_second != 0) in ReadOneMNGImage()
5991 frame_delay/=mng_info->ticks_per_second; in ReadOneMNGImage()
6006 if (change_timeout && ((p-chunk) < (ssize_t) (length-4))) in ReadOneMNGImage()
6008 frame_timeout=1UL*image->ticks_per_second* in ReadOneMNGImage()
6011 if (mng_info->ticks_per_second != 0) in ReadOneMNGImage()
6012 frame_timeout/=mng_info->ticks_per_second; in ReadOneMNGImage()
6027 if (change_clipping && ((p-chunk) < (ssize_t) (length-16))) in ReadOneMNGImage()
6044 mng_info->clip=fb; in ReadOneMNGImage()
6045 mng_info->clip=mng_minimum_box(fb,mng_info->frame); in ReadOneMNGImage()
6047 subframe_width=(size_t) (mng_info->clip.right in ReadOneMNGImage()
6048 -mng_info->clip.left); in ReadOneMNGImage()
6050 subframe_height=(size_t) (mng_info->clip.bottom in ReadOneMNGImage()
6051 -mng_info->clip.top); in ReadOneMNGImage()
6061 if (insert_layers && (mng_info->framing_mode == 4) && in ReadOneMNGImage()
6065 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
6075 mng_info->image=image; in ReadOneMNGImage()
6079 image->start_loop=MagickTrue; in ReadOneMNGImage()
6080 image->iterations=mng_iterations; in ReadOneMNGImage()
6085 image->start_loop=MagickFalse; in ReadOneMNGImage()
6087 image->columns=subframe_width; in ReadOneMNGImage()
6088 image->rows=subframe_height; in ReadOneMNGImage()
6089 image->page.width=subframe_width; in ReadOneMNGImage()
6090 image->page.height=subframe_height; in ReadOneMNGImage()
6091 image->page.x=mng_info->clip.left; in ReadOneMNGImage()
6092 image->page.y=mng_info->clip.top; in ReadOneMNGImage()
6093 image->background_color=mng_background_color; in ReadOneMNGImage()
6094 image->alpha_trait=UndefinedPixelTrait; in ReadOneMNGImage()
6095 image->delay=0; in ReadOneMNGImage()
6104 (double) mng_info->clip.left, in ReadOneMNGImage()
6105 (double) mng_info->clip.right, in ReadOneMNGImage()
6106 (double) mng_info->clip.top, in ReadOneMNGImage()
6107 (double) mng_info->clip.bottom); in ReadOneMNGImage()
6134 if (mng_info->exists[i] && !mng_info->frozen[i]) in ReadOneMNGImage()
6139 box=mng_info->object_clip[i]; in ReadOneMNGImage()
6140 if ((p-chunk) < (ssize_t) (length-17)) in ReadOneMNGImage()
6141 mng_info->object_clip[i]= in ReadOneMNGImage()
6154 if (mng_info->exists[i]) in ReadOneMNGImage()
6156 mng_info->frozen[i]=MagickTrue; in ReadOneMNGImage()
6158 if (mng_info->ob[i] != (MngBuffer *) NULL) in ReadOneMNGImage()
6159 mng_info->ob[i]->frozen=MagickTrue; in ReadOneMNGImage()
6185 i=p[j-1] << 8 | p[j]; in ReadOneMNGImage()
6214 if (mng_info->exists[i] && !mng_info->frozen[i] && in ReadOneMNGImage()
6215 (p-chunk) < (ssize_t) (length-8)) in ReadOneMNGImage()
6223 old_pair.a=mng_info->x_off[i]; in ReadOneMNGImage()
6224 old_pair.b=mng_info->y_off[i]; in ReadOneMNGImage()
6226 mng_info->x_off[i]=new_pair.a; in ReadOneMNGImage()
6227 mng_info->y_off[i]=new_pair.b; in ReadOneMNGImage()
6242 mng_info->loop_active[loop_level]=1; /* mark loop active */ in ReadOneMNGImage()
6261 mng_info->loop_jump[loop_level]=TellBlob(image); in ReadOneMNGImage()
6262 mng_info->loop_count[loop_level]=loop_iters; in ReadOneMNGImage()
6265 mng_info->loop_iteration[loop_level]=0; in ReadOneMNGImage()
6282 Found end of zero-iteration loop. in ReadOneMNGImage()
6284 skipping_loop=(-1); in ReadOneMNGImage()
6285 mng_info->loop_active[loop_level]=0; in ReadOneMNGImage()
6291 if (mng_info->loop_active[loop_level] == 1) in ReadOneMNGImage()
6293 mng_info->loop_count[loop_level]--; in ReadOneMNGImage()
6294 mng_info->loop_iteration[loop_level]++; in ReadOneMNGImage()
6300 mng_info->loop_count[loop_level]); in ReadOneMNGImage()
6302 if (mng_info->loop_count[loop_level] > 0) in ReadOneMNGImage()
6305 SeekBlob(image,mng_info->loop_jump[loop_level], in ReadOneMNGImage()
6325 mng_info->loop_active[loop_level]=0; in ReadOneMNGImage()
6326 last_level=(-1); in ReadOneMNGImage()
6328 if (mng_info->loop_active[i] == 1) in ReadOneMNGImage()
6342 if (mng_info->clon_warning == 0) in ReadOneMNGImage()
6345 image->filename); in ReadOneMNGImage()
6347 mng_info->clon_warning++; in ReadOneMNGImage()
6377 if (mng_info->magn_warning == 0) in ReadOneMNGImage()
6382 "`%s'",image->filename); in ReadOneMNGImage()
6384 mng_info->magn_warning++; in ReadOneMNGImage()
6455 if (mng_info->magn_warning == 0) in ReadOneMNGImage()
6460 image->filename); in ReadOneMNGImage()
6462 mng_info->magn_warning++; in ReadOneMNGImage()
6470 mng_info->magn_mb=magn_mb; in ReadOneMNGImage()
6471 mng_info->magn_ml=magn_ml; in ReadOneMNGImage()
6472 mng_info->magn_mr=magn_mr; in ReadOneMNGImage()
6473 mng_info->magn_mt=magn_mt; in ReadOneMNGImage()
6474 mng_info->magn_mx=magn_mx; in ReadOneMNGImage()
6475 mng_info->magn_my=magn_my; in ReadOneMNGImage()
6476 mng_info->magn_methx=magn_methx; in ReadOneMNGImage()
6477 mng_info->magn_methy=magn_methy; in ReadOneMNGImage()
6483 if (mng_info->past_warning == 0) in ReadOneMNGImage()
6486 image->filename); in ReadOneMNGImage()
6488 mng_info->past_warning++; in ReadOneMNGImage()
6493 if (mng_info->show_warning == 0) in ReadOneMNGImage()
6496 image->filename); in ReadOneMNGImage()
6498 mng_info->show_warning++; in ReadOneMNGImage()
6504 mng_info->have_global_sbit=MagickFalse; in ReadOneMNGImage()
6508 mng_info->global_sbit.gray=p[0]; in ReadOneMNGImage()
6509 mng_info->global_sbit.red=p[0]; in ReadOneMNGImage()
6510 mng_info->global_sbit.green=p[1]; in ReadOneMNGImage()
6511 mng_info->global_sbit.blue=p[2]; in ReadOneMNGImage()
6512 mng_info->global_sbit.alpha=p[3]; in ReadOneMNGImage()
6513 mng_info->have_global_sbit=MagickTrue; in ReadOneMNGImage()
6520 mng_info->global_x_pixels_per_unit= in ReadOneMNGImage()
6522 mng_info->global_y_pixels_per_unit= in ReadOneMNGImage()
6524 mng_info->global_phys_unit_type=p[8]; in ReadOneMNGImage()
6525 mng_info->have_global_phys=MagickTrue; in ReadOneMNGImage()
6529 mng_info->have_global_phys=MagickFalse; in ReadOneMNGImage()
6533 if (mng_info->phyg_warning == 0) in ReadOneMNGImage()
6535 CoderError,"pHYg is not implemented.","`%s'",image->filename); in ReadOneMNGImage()
6537 mng_info->phyg_warning++; in ReadOneMNGImage()
6543 if (mng_info->basi_warning == 0) in ReadOneMNGImage()
6546 image->filename); in ReadOneMNGImage()
6548 mng_info->basi_warning++; in ReadOneMNGImage()
6612 mng_info->exists[object_id]=MagickTrue; in ReadOneMNGImage()
6613 mng_info->viewable[object_id]=MagickTrue; in ReadOneMNGImage()
6615 if (mng_info->invisible[object_id]) in ReadOneMNGImage()
6644 if ((mng_info->clip.left > 0) || (mng_info->clip.top > 0) || in ReadOneMNGImage()
6645 (image_width < mng_info->mng_width) || in ReadOneMNGImage()
6646 (mng_info->clip.right < (ssize_t) mng_info->mng_width) || in ReadOneMNGImage()
6647 (image_height < mng_info->mng_height) || in ReadOneMNGImage()
6648 (mng_info->clip.bottom < (ssize_t) mng_info->mng_height)) in ReadOneMNGImage()
6650 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
6662 mng_info->image=image; in ReadOneMNGImage()
6666 image->start_loop=MagickTrue; in ReadOneMNGImage()
6667 image->iterations=mng_iterations; in ReadOneMNGImage()
6672 image->start_loop=MagickFalse; in ReadOneMNGImage()
6676 image->delay=0; in ReadOneMNGImage()
6677 image->columns=mng_info->mng_width; in ReadOneMNGImage()
6678 image->rows=mng_info->mng_height; in ReadOneMNGImage()
6679 image->page.width=mng_info->mng_width; in ReadOneMNGImage()
6680 image->page.height=mng_info->mng_height; in ReadOneMNGImage()
6681 image->page.x=0; in ReadOneMNGImage()
6682 image->page.y=0; in ReadOneMNGImage()
6683 image->background_color=mng_background_color; in ReadOneMNGImage()
6688 (double) mng_info->mng_width,(double) mng_info->mng_height); in ReadOneMNGImage()
6695 if (insert_layers && (mng_info->framing_mode == 3) && in ReadOneMNGImage()
6699 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
6712 mng_info->image=image; in ReadOneMNGImage()
6716 image->start_loop=MagickTrue; in ReadOneMNGImage()
6717 image->iterations=mng_iterations; in ReadOneMNGImage()
6722 image->start_loop=MagickFalse; in ReadOneMNGImage()
6724 image->delay=0; in ReadOneMNGImage()
6725 image->columns=subframe_width; in ReadOneMNGImage()
6726 image->rows=subframe_height; in ReadOneMNGImage()
6727 image->page.width=subframe_width; in ReadOneMNGImage()
6728 image->page.height=subframe_height; in ReadOneMNGImage()
6729 image->page.x=mng_info->clip.left; in ReadOneMNGImage()
6730 image->page.y=mng_info->clip.top; in ReadOneMNGImage()
6731 image->background_color=mng_background_color; in ReadOneMNGImage()
6732 image->alpha_trait=UndefinedPixelTrait; in ReadOneMNGImage()
6738 (double) mng_info->clip.left,(double) mng_info->clip.right, in ReadOneMNGImage()
6739 (double) mng_info->clip.top,(double) mng_info->clip.bottom); in ReadOneMNGImage()
6744 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
6756 mng_info->image=image; in ReadOneMNGImage()
6765 image->start_loop=MagickTrue; in ReadOneMNGImage()
6770 image->start_loop=MagickFalse; in ReadOneMNGImage()
6772 if (mng_info->framing_mode == 1 || mng_info->framing_mode == 3) in ReadOneMNGImage()
6774 image->delay=frame_delay; in ReadOneMNGImage()
6779 image->delay=0; in ReadOneMNGImage()
6781 image->page.width=mng_info->mng_width; in ReadOneMNGImage()
6782 image->page.height=mng_info->mng_height; in ReadOneMNGImage()
6783 image->page.x=mng_info->x_off[object_id]; in ReadOneMNGImage()
6784 image->page.y=mng_info->y_off[object_id]; in ReadOneMNGImage()
6785 image->iterations=mng_iterations; in ReadOneMNGImage()
6796 offset=SeekBlob(image,-((ssize_t) length+12),SEEK_CUR); in ReadOneMNGImage()
6802 mng_info->image=image; in ReadOneMNGImage()
6803 mng_info->mng_type=mng_type; in ReadOneMNGImage()
6804 mng_info->object_id=object_id; in ReadOneMNGImage()
6818 "exit ReadJNGImage() with error"); in ReadOneMNGImage()
6823 if (image->columns == 0 || image->rows == 0) in ReadOneMNGImage()
6829 mng_info->image=image; in ReadOneMNGImage()
6836 if (mng_info->magn_methx || mng_info->magn_methy) in ReadOneMNGImage()
6846 if (mng_info->magn_methx == 1) in ReadOneMNGImage()
6848 magnified_width=mng_info->magn_ml; in ReadOneMNGImage()
6850 if (image->columns > 1) in ReadOneMNGImage()
6851 magnified_width += mng_info->magn_mr; in ReadOneMNGImage()
6853 if (image->columns > 2) in ReadOneMNGImage()
6855 ((image->columns-2)*(mng_info->magn_mx)); in ReadOneMNGImage()
6860 magnified_width=(png_uint_32) image->columns; in ReadOneMNGImage()
6862 if (image->columns > 1) in ReadOneMNGImage()
6863 magnified_width += mng_info->magn_ml-1; in ReadOneMNGImage()
6865 if (image->columns > 2) in ReadOneMNGImage()
6866 magnified_width += mng_info->magn_mr-1; in ReadOneMNGImage()
6868 if (image->columns > 3) in ReadOneMNGImage()
6870 ((image->columns-3)*(mng_info->magn_mx-1)); in ReadOneMNGImage()
6873 if (mng_info->magn_methy == 1) in ReadOneMNGImage()
6875 magnified_height=mng_info->magn_mt; in ReadOneMNGImage()
6877 if (image->rows > 1) in ReadOneMNGImage()
6878 magnified_height += mng_info->magn_mb; in ReadOneMNGImage()
6880 if (image->rows > 2) in ReadOneMNGImage()
6882 ((image->rows-2)*(mng_info->magn_my)); in ReadOneMNGImage()
6887 magnified_height=(png_uint_32) image->rows; in ReadOneMNGImage()
6889 if (image->rows > 1) in ReadOneMNGImage()
6890 magnified_height += mng_info->magn_mt-1; in ReadOneMNGImage()
6892 if (image->rows > 2) in ReadOneMNGImage()
6893 magnified_height += mng_info->magn_mb-1; in ReadOneMNGImage()
6895 if (image->rows > 3) in ReadOneMNGImage()
6897 ((image->rows-3)*(mng_info->magn_my-1)); in ReadOneMNGImage()
6900 if (magnified_height > image->rows || in ReadOneMNGImage()
6901 magnified_width > image->columns) in ReadOneMNGImage()
6909 Quantum in ReadOneMNGImage()
6921 register Quantum in ReadOneMNGImage()
6941 large_image->columns=magnified_width; in ReadOneMNGImage()
6942 large_image->rows=magnified_height; in ReadOneMNGImage()
6944 magn_methx=mng_info->magn_methx; in ReadOneMNGImage()
6945 magn_methy=mng_info->magn_methy; in ReadOneMNGImage()
6955 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneMNGImage()
6957 q=GetAuthenticPixels(image,0,y,image->columns,1, in ReadOneMNGImage()
6959 if (q == (Quantum *) NULL) in ReadOneMNGImage()
6961 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOneMNGImage()
6979 #define QM Quantum in ReadOneMNGImage()
6982 if (image->alpha_trait != UndefinedPixelTrait) in ReadOneMNGImage()
6987 large_image->background_color.alpha=OpaqueAlpha; in ReadOneMNGImage()
7008 (double) large_image->rows); in ReadOneMNGImage()
7009 m=(ssize_t) mng_info->magn_mt; in ReadOneMNGImage()
7011 length=(size_t) GetPixelChannels(image)*image->columns; in ReadOneMNGImage()
7012 next=(Quantum *) AcquireQuantumMemory(length,sizeof(*next)); in ReadOneMNGImage()
7013 prev=(Quantum *) AcquireQuantumMemory(length,sizeof(*prev)); in ReadOneMNGImage()
7015 if ((prev == (Quantum *) NULL) || in ReadOneMNGImage()
7016 (next == (Quantum *) NULL)) in ReadOneMNGImage()
7018 if (prev != (Quantum *) NULL) in ReadOneMNGImage()
7019 prev=(Quantum *) RelinquishMagickMemory(prev); in ReadOneMNGImage()
7020 if (next != (Quantum *) NULL) in ReadOneMNGImage()
7021 next=(Quantum *) RelinquishMagickMemory(next); in ReadOneMNGImage()
7027 n=GetAuthenticPixels(image,0,0,image->columns,1,exception); in ReadOneMNGImage()
7030 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneMNGImage()
7033 m=(ssize_t) mng_info->magn_mt; in ReadOneMNGImage()
7035 else if (magn_methy > 1 && y == (ssize_t) image->rows-2) in ReadOneMNGImage()
7036 m=(ssize_t) mng_info->magn_mb; in ReadOneMNGImage()
7038 else if (magn_methy <= 1 && y == (ssize_t) image->rows-1) in ReadOneMNGImage()
7039 m=(ssize_t) mng_info->magn_mb; in ReadOneMNGImage()
7041 else if (magn_methy > 1 && y == (ssize_t) image->rows-1) in ReadOneMNGImage()
7045 m=(ssize_t) mng_info->magn_my; in ReadOneMNGImage()
7051 if (y < (ssize_t) image->rows-1) in ReadOneMNGImage()
7053 n=GetAuthenticPixels(image,0,y+1,image->columns,1, in ReadOneMNGImage()
7060 register Quantum in ReadOneMNGImage()
7063 assert(yy < (ssize_t) large_image->rows); in ReadOneMNGImage()
7066 q=GetAuthenticPixels(large_image,0,yy,large_image->columns, in ReadOneMNGImage()
7068 if (q == (Quantum *) NULL) in ReadOneMNGImage()
7070 q+=(large_image->columns-image->columns)* in ReadOneMNGImage()
7073 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOneMNGImage()
7077 if (image->storage_class == PseudoClass) in ReadOneMNGImage()
7113 -GetPixelRed(image,pixels)+m))/ in ReadOneMNGImage()
7118 -GetPixelGreen(image,pixels)+m))/ in ReadOneMNGImage()
7123 -GetPixelBlue(image,pixels)+m))/ in ReadOneMNGImage()
7127 if (image->alpha_trait != UndefinedPixelTrait) in ReadOneMNGImage()
7130 -GetPixelAlpha(image,pixels)+m)) in ReadOneMNGImage()
7177 -GetPixelAlpha(image,pixels)) in ReadOneMNGImage()
7193 prev=(Quantum *) RelinquishMagickMemory(prev); in ReadOneMNGImage()
7194 next=(Quantum *) RelinquishMagickMemory(next); in ReadOneMNGImage()
7196 length=image->columns; in ReadOneMNGImage()
7206 mng_info->image=image; in ReadOneMNGImage()
7212 (double) image->columns); in ReadOneMNGImage()
7214 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneMNGImage()
7216 register Quantum in ReadOneMNGImage()
7219 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in ReadOneMNGImage()
7220 if (q == (Quantum *) NULL) in ReadOneMNGImage()
7222 pixels=q+(image->columns-length)*GetPixelChannels(image); in ReadOneMNGImage()
7225 for (x=(ssize_t) (image->columns-length); in ReadOneMNGImage()
7226 x < (ssize_t) image->columns; x++) in ReadOneMNGImage()
7230 if (x == (ssize_t) (image->columns-length)) in ReadOneMNGImage()
7231 m=(ssize_t) mng_info->magn_ml; in ReadOneMNGImage()
7233 else if (magn_methx > 1 && x == (ssize_t) image->columns-2) in ReadOneMNGImage()
7234 m=(ssize_t) mng_info->magn_mr; in ReadOneMNGImage()
7237 x == (ssize_t) image->columns-1) in ReadOneMNGImage()
7238 m=(ssize_t) mng_info->magn_mr; in ReadOneMNGImage()
7240 else if (magn_methx > 1 && x == (ssize_t) image->columns-1) in ReadOneMNGImage()
7244 m=(ssize_t) mng_info->magn_mx; in ReadOneMNGImage()
7273 -GetPixelRed(image,pixels))+m) in ReadOneMNGImage()
7279 -GetPixelGreen(image,pixels))+m) in ReadOneMNGImage()
7285 -GetPixelBlue(image,pixels))+m) in ReadOneMNGImage()
7288 if (image->alpha_trait != UndefinedPixelTrait) in ReadOneMNGImage()
7291 -GetPixelAlpha(image,pixels))+m) in ReadOneMNGImage()
7338 -GetPixelAlpha(image,pixels))+m)/ in ReadOneMNGImage()
7355 Rescale pixels to Quantum in ReadOneMNGImage()
7357 for (y=0; y < (ssize_t) image->rows; y++) in ReadOneMNGImage()
7359 q=GetAuthenticPixels(image,0,y,image->columns,1, in ReadOneMNGImage()
7361 if (q == (Quantum *) NULL) in ReadOneMNGImage()
7364 for (x=(ssize_t) image->columns-1; x >= 0; x--) in ReadOneMNGImage()
7389 Crop_box is with respect to the upper left corner of the MNG. in ReadOneMNGImage()
7391 crop_box.left=mng_info->image_box.left+mng_info->x_off[object_id]; in ReadOneMNGImage()
7392 crop_box.right=mng_info->image_box.right+mng_info->x_off[object_id]; in ReadOneMNGImage()
7393 crop_box.top=mng_info->image_box.top+mng_info->y_off[object_id]; in ReadOneMNGImage()
7394 crop_box.bottom=mng_info->image_box.bottom+mng_info->y_off[object_id]; in ReadOneMNGImage()
7395 crop_box=mng_minimum_box(crop_box,mng_info->clip); in ReadOneMNGImage()
7396 crop_box=mng_minimum_box(crop_box,mng_info->frame); in ReadOneMNGImage()
7397 crop_box=mng_minimum_box(crop_box,mng_info->object_clip[object_id]); in ReadOneMNGImage()
7398 if ((crop_box.left != (mng_info->image_box.left in ReadOneMNGImage()
7399 +mng_info->x_off[object_id])) || in ReadOneMNGImage()
7400 (crop_box.right != (mng_info->image_box.right in ReadOneMNGImage()
7401 +mng_info->x_off[object_id])) || in ReadOneMNGImage()
7402 (crop_box.top != (mng_info->image_box.top in ReadOneMNGImage()
7403 +mng_info->y_off[object_id])) || in ReadOneMNGImage()
7404 (crop_box.bottom != (mng_info->image_box.bottom in ReadOneMNGImage()
7405 +mng_info->y_off[object_id]))) in ReadOneMNGImage()
7421 Crop_info is with respect to the upper left corner of in ReadOneMNGImage()
7424 crop_info.x=(crop_box.left-mng_info->x_off[object_id]); in ReadOneMNGImage()
7425 crop_info.y=(crop_box.top-mng_info->y_off[object_id]); in ReadOneMNGImage()
7426 crop_info.width=(size_t) (crop_box.right-crop_box.left); in ReadOneMNGImage()
7427 crop_info.height=(size_t) (crop_box.bottom-crop_box.top); in ReadOneMNGImage()
7428 image->page.width=image->columns; in ReadOneMNGImage()
7429 image->page.height=image->rows; in ReadOneMNGImage()
7430 image->page.x=0; in ReadOneMNGImage()
7431 image->page.y=0; in ReadOneMNGImage()
7436 image->columns=im->columns; in ReadOneMNGImage()
7437 image->rows=im->rows; in ReadOneMNGImage()
7439 image->page.width=image->columns; in ReadOneMNGImage()
7440 image->page.height=image->rows; in ReadOneMNGImage()
7441 image->page.x=crop_box.left; in ReadOneMNGImage()
7442 image->page.y=crop_box.top; in ReadOneMNGImage()
7453 image->columns=1; in ReadOneMNGImage()
7454 image->rows=1; in ReadOneMNGImage()
7455 image->colors=2; in ReadOneMNGImage()
7457 image->page.width=1; in ReadOneMNGImage()
7458 image->page.height=1; in ReadOneMNGImage()
7459 image->page.x=0; in ReadOneMNGImage()
7460 image->page.y=0; in ReadOneMNGImage()
7464 image=mng_info->image; in ReadOneMNGImage()
7472 if (image->depth > 16) in ReadOneMNGImage()
7473 image->depth=16; in ReadOneMNGImage()
7477 if (image->depth > 8) in ReadOneMNGImage()
7480 image->depth=16; in ReadOneMNGImage()
7484 image->depth = 8; in ReadOneMNGImage()
7487 if (image_info->number_scenes != 0) in ReadOneMNGImage()
7489 if (mng_info->scenes_found > in ReadOneMNGImage()
7490 (ssize_t) (image_info->first_scene+image_info->number_scenes)) in ReadOneMNGImage()
7498 } while (LocaleCompare(image_info->magick,"MNG") == 0); in ReadOneMNGImage()
7507 if (insert_layers && !mng_info->image_found && (mng_info->mng_width) && in ReadOneMNGImage()
7508 (mng_info->mng_height)) in ReadOneMNGImage()
7517 if (GetAuthenticPixelQueue(image) != (Quantum *) NULL) in ReadOneMNGImage()
7533 image->columns=mng_info->mng_width; in ReadOneMNGImage()
7534 image->rows=mng_info->mng_height; in ReadOneMNGImage()
7535 image->page.width=mng_info->mng_width; in ReadOneMNGImage()
7536 image->page.height=mng_info->mng_height; in ReadOneMNGImage()
7537 image->page.x=0; in ReadOneMNGImage()
7538 image->page.y=0; in ReadOneMNGImage()
7539 image->background_color=mng_background_color; in ReadOneMNGImage()
7540 image->alpha_trait=UndefinedPixelTrait; in ReadOneMNGImage()
7542 if (image_info->ping == MagickFalse) in ReadOneMNGImage()
7545 mng_info->image_found++; in ReadOneMNGImage()
7548 image->iterations=mng_iterations; in ReadOneMNGImage()
7551 image->start_loop=MagickTrue; in ReadOneMNGImage()
7556 if (image_count > 10*mng_info->image_found) in ReadOneMNGImage()
7563 "`%s'",image_info->filename); in ReadOneMNGImage()
7577 image_info->filename); in ReadOneMNGImage()
7581 if (mng_info->ticks_per_second && mng_info->image_found > 1 && in ReadOneMNGImage()
7590 CoderError,"image->next for first image is NULL but shouldn't be.", in ReadOneMNGImage()
7591 "`%s'",image_info->filename); in ReadOneMNGImage()
7594 if (mng_info->image_found == 0) in ReadOneMNGImage()
7601 CoderError,"No visible images in file","`%s'",image_info->filename); in ReadOneMNGImage()
7606 if (mng_info->ticks_per_second) in ReadOneMNGImage()
7607 final_delay=1UL*MagickMax(image->ticks_per_second,1L)* in ReadOneMNGImage()
7608 final_delay/mng_info->ticks_per_second; in ReadOneMNGImage()
7611 image->start_loop=MagickTrue; in ReadOneMNGImage()
7618 if (image->delay) in ReadOneMNGImage()
7619 final_image_delay=image->delay; in ReadOneMNGImage()
7627 image->delay=final_delay; in ReadOneMNGImage()
7631 " image->delay=%.20g, final_delay=%.20g",(double) image->delay, in ReadOneMNGImage()
7646 " scene 0 delay=%.20g",(double) image->delay); in ReadOneMNGImage()
7653 (double) image->delay); in ReadOneMNGImage()
7672 scene=image->scene; in ReadOneMNGImage()
7683 next->page.width=mng_info->mng_width; in ReadOneMNGImage()
7684 next->page.height=mng_info->mng_height; in ReadOneMNGImage()
7685 next->page.x=0; in ReadOneMNGImage()
7686 next->page.y=0; in ReadOneMNGImage()
7687 next->scene=scene++; in ReadOneMNGImage()
7693 if (next->delay == 0) in ReadOneMNGImage()
7695 scene--; in ReadOneMNGImage()
7696 next_image->previous=GetPreviousImageInList(next); in ReadOneMNGImage()
7700 next->previous->next=next_image; in ReadOneMNGImage()
7710 image->dispose=BackgroundDispose; in ReadOneMNGImage()
7724 " scene 0 delay=%.20g dispose=%.20g",(double) image->delay, in ReadOneMNGImage()
7725 (double) image->dispose); in ReadOneMNGImage()
7733 (double) image->delay,(double) image->dispose); in ReadOneMNGImage()
7760 assert(image_info->signature == MagickCoreSignature); in ReadMNGImage()
7762 image_info->filename); in ReadMNGImage()
7764 assert(exception->signature == MagickCoreSignature); in ReadMNGImage()
7783 mng_info->image=image; in ReadMNGImage()
7791 "exit ReadMNGImage() with error"); in ReadMNGImage()
7806 printf("Your PNG library is too old: You have libpng-%s\n", in ReadPNGImage()
7810 "PNG library is too old","`%s'",image_info->filename); in ReadPNGImage()
7838 % whether the format supports native in-memory I/O, and a brief
7887 entry=AcquireMagickInfo("PNG","MNG","Multiple-image Network Graphics"); in RegisterPNGImage()
7888 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7891 entry->decoder=(DecodeImageHandler *) ReadMNGImage; in RegisterPNGImage()
7892 entry->encoder=(EncodeImageHandler *) WriteMNGImage; in RegisterPNGImage()
7895 entry->magick=(IsImageFormatHandler *) IsMNG; in RegisterPNGImage()
7898 entry->version=ConstantString(version); in RegisterPNGImage()
7900 entry->mime_type=ConstantString("video/x-mng"); in RegisterPNGImage()
7901 entry->note=ConstantString(MNGNote); in RegisterPNGImage()
7907 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7908 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7911 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
7912 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7913 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
7914 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
7917 entry->version=ConstantString(version); in RegisterPNGImage()
7919 entry->note=ConstantString(PNGNote); in RegisterPNGImage()
7923 "8-bit indexed with optional binary transparency"); in RegisterPNGImage()
7926 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7927 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7930 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
7931 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7932 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
7933 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
7937 "opaque or binary transparent 24-bit RGB"); in RegisterPNGImage()
7952 entry->version=ConstantString(version); in RegisterPNGImage()
7955 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7956 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7959 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
7960 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7961 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
7962 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
7965 entry=AcquireMagickInfo("PNG","PNG32","opaque or transparent 32-bit RGBA"); in RegisterPNGImage()
7968 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7969 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7972 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
7973 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7974 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
7975 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
7979 "opaque or binary transparent 48-bit RGB"); in RegisterPNGImage()
7982 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7983 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7986 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
7987 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
7988 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
7989 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
7992 entry=AcquireMagickInfo("PNG","PNG64","opaque or transparent 64-bit RGBA"); in RegisterPNGImage()
7995 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
7996 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
7999 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
8000 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
8001 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
8002 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
8006 "PNG inheriting bit-depth, color-type from original, if possible"); in RegisterPNGImage()
8009 entry->decoder=(DecodeImageHandler *) ReadPNGImage; in RegisterPNGImage()
8010 entry->encoder=(EncodeImageHandler *) WritePNGImage; in RegisterPNGImage()
8013 entry->magick=(IsImageFormatHandler *) IsPNG; in RegisterPNGImage()
8014 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
8015 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
8016 entry->mime_type=ConstantString("image/png"); in RegisterPNGImage()
8023 entry->decoder=(DecodeImageHandler *) ReadJNGImage; in RegisterPNGImage()
8024 entry->encoder=(EncodeImageHandler *) WriteJNGImage; in RegisterPNGImage()
8028 entry->magick=(IsImageFormatHandler *) IsJNG; in RegisterPNGImage()
8029 entry->flags|=CoderDecoderSeekableStreamFlag; in RegisterPNGImage()
8030 entry->flags^=CoderAdjoinFlag; in RegisterPNGImage()
8031 entry->mime_type=ConstantString("image/x-jng"); in RegisterPNGImage()
8032 entry->note=ConstantString(JNGNote); in RegisterPNGImage()
8093 % Group's "Multiple-image Network Graphics" encoded image format.
8095 % MNG support written by Glenn Randers-Pehrson, glennrp@image...
8110 % To do (as of version 5.5.2, November 26, 2002 -- glennrp -- see also
8113 % Preserve all unknown and not-yet-handled known chunks found in input
8119 % Improve selection of color type (use indexed-colour or indexed-colour
8120 % with tRNS when 256 or fewer unique RGBA values are present).
8122 % Figure out what to do with "dispose=<restore-to-previous>" (dispose == 3)
8123 % This will be complicated if we limit ourselves to generating MNG-LC
8131 % Check for identical sRGB and replace with a global sRGB (and remove
8133 % replace with global gAMA/cHRM (or with sRGB if appropriate; replace
8134 % local gAMA/cHRM with local sRGB if appropriate).
8143 % Use a smaller-than-32k value of compression window size when
8153 % are present. This will involve expanding the embedded images with a
8181 if (LocaleNCompare((char *) profile_type+1, "ng-chunk-",9) == 0) in Magick_png_write_raw_profile()
8184 if (image_info->verbose) in Magick_png_write_raw_profile()
8217 (void) FormatLocaleString(dp,allocated_length- in Magick_png_write_raw_profile()
8218 (png_size_t) (dp-text[0].text),"%8lu ",(unsigned long) length); in Magick_png_write_raw_profile()
8231 text[0].text_length=(png_size_t) (dp-text[0].text); in Magick_png_write_raw_profile()
8232 text[0].compression=image_info->compression == NoCompression || in Magick_png_write_raw_profile()
8233 (image_info->compression == UndefinedCompression && in Magick_png_write_raw_profile()
8234 text[0].text_length < 128) ? -1 : 0; in Magick_png_write_raw_profile()
8245 const Quantum *p, const PixelInfo *q) in IsColorEqual()
8255 if ((AbsolutePixelValue(red-q->red) < MagickEpsilon) && in IsColorEqual()
8256 (AbsolutePixelValue(green-q->green) < MagickEpsilon) && in IsColorEqual()
8257 (AbsolutePixelValue(blue-q->blue) < MagickEpsilon)) in IsColorEqual()
8287 ret=sscanf(timestamp,"%d-%d-%dT%d:%d:%d",&year,&month,&day,&hour, in write_tIME_chunk()
8291 ret=sscanf(timestamp,"%d-%d-%dT%d:%d:%d%d:%d",&year,&month,&day,&hour, in write_tIME_chunk()
8304 image->filename,ret); in write_tIME_chunk()
8310 addminutes=-addminutes; in write_tIME_chunk()
8311 day--; in write_tIME_chunk()
8317 month--; in write_tIME_chunk()
8332 year--; in write_tIME_chunk()
8337 minute-=60; in write_tIME_chunk()
8342 hour -=24; in write_tIME_chunk()
8346 day --; in write_tIME_chunk()
8465 ping_exclude_zCCP, /* hex-encoded iCCP */ in WriteOnePNGImage()
8563 " running with %s", libpng_runv); in WriteOnePNGImage()
8570 " running with %s", zlib_runv); in WriteOnePNGImage()
8609 ping_exclude_bKGD=mng_info->ping_exclude_bKGD; in WriteOnePNGImage()
8610 ping_exclude_caNv=mng_info->ping_exclude_caNv; in WriteOnePNGImage()
8611 ping_exclude_cHRM=mng_info->ping_exclude_cHRM; in WriteOnePNGImage()
8612 ping_exclude_date=mng_info->ping_exclude_date; in WriteOnePNGImage()
8613 ping_exclude_eXIf=mng_info->ping_exclude_eXIf; in WriteOnePNGImage()
8614 ping_exclude_gAMA=mng_info->ping_exclude_gAMA; in WriteOnePNGImage()
8615 ping_exclude_iCCP=mng_info->ping_exclude_iCCP; in WriteOnePNGImage()
8616 /* ping_exclude_iTXt=mng_info->ping_exclude_iTXt; */ in WriteOnePNGImage()
8617 ping_exclude_oFFs=mng_info->ping_exclude_oFFs; in WriteOnePNGImage()
8618 ping_exclude_pHYs=mng_info->ping_exclude_pHYs; in WriteOnePNGImage()
8619 ping_exclude_sRGB=mng_info->ping_exclude_sRGB; in WriteOnePNGImage()
8620 ping_exclude_tEXt=mng_info->ping_exclude_tEXt; in WriteOnePNGImage()
8621 ping_exclude_tIME=mng_info->ping_exclude_tIME; in WriteOnePNGImage()
8622 /* ping_exclude_tRNS=mng_info->ping_exclude_tRNS; */ in WriteOnePNGImage()
8623 ping_exclude_zCCP=mng_info->ping_exclude_zCCP; /* hex-encoded iCCP in zTXt */ in WriteOnePNGImage()
8624 ping_exclude_zTXt=mng_info->ping_exclude_zTXt; in WriteOnePNGImage()
8626 ping_preserve_colormap = mng_info->ping_preserve_colormap; in WriteOnePNGImage()
8627 ping_preserve_iCCP = mng_info->ping_preserve_iCCP; in WriteOnePNGImage()
8631 * i.e., eliminate the ICC profile and set image->rendering_intent. in WriteOnePNGImage()
8641 * Use something other than image->rendering_intent to record the fact in WriteOnePNGImage()
8681 " Got a %lu-byte ICC profile (potentially sRGB)", in WriteOnePNGImage()
8688 " with crc=%8x",(unsigned int) profile_crc); in WriteOnePNGImage()
8695 " It is sRGB with rendering intent = %s", in WriteOnePNGImage()
8698 if (image->rendering_intent==UndefinedIntent) in WriteOnePNGImage()
8700 image->rendering_intent= in WriteOnePNGImage()
8713 " Got %lu-byte ICC profile not recognized as sRGB", in WriteOnePNGImage()
8727 if (image->storage_class == UndefinedClass) in WriteOnePNGImage()
8729 " image->storage_class=UndefinedClass"); in WriteOnePNGImage()
8730 if (image->storage_class == DirectClass) in WriteOnePNGImage()
8732 " image->storage_class=DirectClass"); in WriteOnePNGImage()
8733 if (image->storage_class == PseudoClass) in WriteOnePNGImage()
8735 " image->storage_class=PseudoClass"); in WriteOnePNGImage()
8736 (void) LogMagickEvent(CoderEvent,GetMagickModule(), image->taint ? in WriteOnePNGImage()
8737 " image->taint=MagickTrue": in WriteOnePNGImage()
8738 " image->taint=MagickFalse"); in WriteOnePNGImage()
8740 " image->gamma=%g", image->gamma); in WriteOnePNGImage()
8743 if (image->storage_class == PseudoClass && in WriteOnePNGImage()
8744 (mng_info->write_png8 || mng_info->write_png24 || mng_info->write_png32 || in WriteOnePNGImage()
8745 mng_info->write_png48 || mng_info->write_png64 || in WriteOnePNGImage()
8746 (mng_info->write_png_colortype != 1 && in WriteOnePNGImage()
8747 mng_info->write_png_colortype != 5))) in WriteOnePNGImage()
8750 image->storage_class = DirectClass; in WriteOnePNGImage()
8755 if (image->storage_class != PseudoClass && image->colormap != NULL) in WriteOnePNGImage()
8761 (void) RelinquishMagickMemory(image->colormap); in WriteOnePNGImage()
8762 image->colormap=NULL; in WriteOnePNGImage()
8766 if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse) in WriteOnePNGImage()
8773 image->depth=GetImageQuantumDepth(image,MagickFalse); in WriteOnePNGImage()
8774 if (image->depth <= 8 && image->taint && image->storage_class == PseudoClass) in WriteOnePNGImage()
8778 if (image->depth > 8) in WriteOnePNGImage()
8782 " Reducing PNG bit depth to 8 since this is a Q8 build."); in WriteOnePNGImage()
8784 image->depth=8; in WriteOnePNGImage()
8788 /* Respect the -depth option */ in WriteOnePNGImage()
8789 if (image->depth < 4) in WriteOnePNGImage()
8791 register Quantum in WriteOnePNGImage()
8794 if (image->depth > 2) in WriteOnePNGImage()
8796 /* Scale to 4-bit */ in WriteOnePNGImage()
8797 LBR04PacketRGBA(image->background_color); in WriteOnePNGImage()
8799 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
8801 r=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
8803 if (r == (Quantum *) NULL) in WriteOnePNGImage()
8806 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
8816 if (image->storage_class == PseudoClass && image->colormap != NULL) in WriteOnePNGImage()
8818 for (i=0; i < (ssize_t) image->colors; i++) in WriteOnePNGImage()
8820 LBR04PacketRGBA(image->colormap[i]); in WriteOnePNGImage()
8824 else if (image->depth > 1) in WriteOnePNGImage()
8826 /* Scale to 2-bit */ in WriteOnePNGImage()
8827 LBR02PacketRGBA(image->background_color); in WriteOnePNGImage()
8829 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
8831 r=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
8833 if (r == (Quantum *) NULL) in WriteOnePNGImage()
8836 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
8846 if (image->storage_class == PseudoClass && image->colormap != NULL) in WriteOnePNGImage()
8848 for (i=0; i < (ssize_t) image->colors; i++) in WriteOnePNGImage()
8850 LBR02PacketRGBA(image->colormap[i]); in WriteOnePNGImage()
8856 /* Scale to 1-bit */ in WriteOnePNGImage()
8857 LBR01PacketRGBA(image->background_color); in WriteOnePNGImage()
8859 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
8861 r=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
8863 if (r == (Quantum *) NULL) in WriteOnePNGImage()
8866 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
8876 if (image->storage_class == PseudoClass && image->colormap != NULL) in WriteOnePNGImage()
8878 for (i=0; i < (ssize_t) image->colors; i++) in WriteOnePNGImage()
8880 LBR01PacketRGBA(image->colormap[i]); in WriteOnePNGImage()
8887 if (image->depth < 8) in WriteOnePNGImage()
8888 image->depth=8; in WriteOnePNGImage()
8894 if (image->depth > 8) in WriteOnePNGImage()
8895 image->depth=16; in WriteOnePNGImage()
8899 if (image->depth > 8) in WriteOnePNGImage()
8902 image->depth=16; in WriteOnePNGImage()
8905 if (image->depth == 16 && mng_info->write_png_depth != 16) in WriteOnePNGImage()
8906 if (mng_info->write_png8 || in WriteOnePNGImage()
8908 image->depth = 8; in WriteOnePNGImage()
8911 image_colors = (int) image->colors; in WriteOnePNGImage()
8912 number_opaque = (int) image->colors; in WriteOnePNGImage()
8916 if (mng_info->write_png_colortype && in WriteOnePNGImage()
8917 (mng_info->write_png_colortype > 4 || (mng_info->write_png_depth >= 8 && in WriteOnePNGImage()
8918 mng_info->write_png_colortype < 4 && in WriteOnePNGImage()
8919 image->alpha_trait == UndefinedPixelTrait))) in WriteOnePNGImage()
8924 if (mng_info->write_png_colortype == 1 || in WriteOnePNGImage()
8925 mng_info->write_png_colortype == 5) in WriteOnePNGImage()
8928 if (image->alpha_trait != UndefinedPixelTrait) in WriteOnePNGImage()
8935 if (mng_info->write_png_colortype < 7) in WriteOnePNGImage()
8941 * are still too many colors we reduce to a simple 4-4-4-1, then 3-3-3-1 in WriteOnePNGImage()
8942 * RGBA palette and run again, and then to a simple 3-3-2-1 RGBA in WriteOnePNGImage()
8952 if (image->depth != GetImageDepth(image,exception)) in WriteOnePNGImage()
8953 (void) SetImageDepth(image,image->depth,exception); in WriteOnePNGImage()
8960 * Also, sometimes we get PseudoClass images with an out-of-date in WriteOnePNGImage()
8961 * colormap. This code will replace the colormap with a new one. in WriteOnePNGImage()
8966 * If image->alpha_trait is MagickFalse, we ignore the alpha channel in WriteOnePNGImage()
8967 * even though it sometimes contains left-over non-opaque values. in WriteOnePNGImage()
8970 * and semitransparent pixels, and whether the image has any non-gray in WriteOnePNGImage()
8971 * pixels or only black-and-white pixels) that we might need later. in WriteOnePNGImage()
8974 * we need to check for bogus non-opaque values, at least. in WriteOnePNGImage()
8985 register const Quantum in WriteOnePNGImage()
8988 register Quantum in WriteOnePNGImage()
8998 " image->columns=%.20g",(double) image->columns); in WriteOnePNGImage()
9000 " image->rows=%.20g",(double) image->rows); in WriteOnePNGImage()
9002 " image->alpha_trait=%.20g",(double) image->alpha_trait); in WriteOnePNGImage()
9004 " image->depth=%.20g",(double) image->depth); in WriteOnePNGImage()
9006 if (image->storage_class == PseudoClass && image->colormap != NULL) in WriteOnePNGImage()
9018 (int) image->colormap[i].red, in WriteOnePNGImage()
9019 (int) image->colormap[i].green, in WriteOnePNGImage()
9020 (int) image->colormap[i].blue, in WriteOnePNGImage()
9021 (int) image->colormap[i].alpha); in WriteOnePNGImage()
9024 for (i=image->colors - 10; i < (ssize_t) image->colors; i++) in WriteOnePNGImage()
9031 (int) image->colormap[i].red, in WriteOnePNGImage()
9032 (int) image->colormap[i].green, in WriteOnePNGImage()
9033 (int) image->colormap[i].blue, in WriteOnePNGImage()
9034 (int) image->colormap[i].alpha); in WriteOnePNGImage()
9040 " image->colors=%d",(int) image->colors); in WriteOnePNGImage()
9042 if (image->colors == 0) in WriteOnePNGImage()
9056 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9058 r=GetVirtualPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9060 if (r == (const Quantum *) NULL) in WriteOnePNGImage()
9063 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9065 if (image->alpha_trait == UndefinedPixelTrait || in WriteOnePNGImage()
9153 if (mng_info->write_png8 == MagickFalse && in WriteOnePNGImage()
9163 (int) image->background_color.red, in WriteOnePNGImage()
9164 (int) image->background_color.green, in WriteOnePNGImage()
9165 (int) image->background_color.blue); in WriteOnePNGImage()
9169 if (opaque[i].red == image->background_color.red && in WriteOnePNGImage()
9170 opaque[i].green == image->background_color.green && in WriteOnePNGImage()
9171 opaque[i].blue == image->background_color.blue) in WriteOnePNGImage()
9176 opaque[i] = image->background_color; in WriteOnePNGImage()
9207 if (mng_info->write_png_colortype != 7) /* We won't need this info */ in WriteOnePNGImage()
9212 if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse) in WriteOnePNGImage()
9222 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9224 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9226 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9230 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9245 /* Worst case is black-and-white; we are looking at every in WriteOnePNGImage()
9252 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9319 if ((mng_info->ping_exclude_tRNS == MagickFalse || in WriteOnePNGImage()
9321 (((mng_info->write_png_colortype-1) == in WriteOnePNGImage()
9323 (mng_info->write_png_colortype == 0))) in WriteOnePNGImage()
9336 image->colors = image_colors; in WriteOnePNGImage()
9342 image->filename); in WriteOnePNGImage()
9347 image->colormap[i] = colormap[i]; in WriteOnePNGImage()
9352 " image->colors=%d (%d)", in WriteOnePNGImage()
9353 (int) image->colors, image_colors); in WriteOnePNGImage()
9359 /* Sync the pixel indices with the new colormap */ in WriteOnePNGImage()
9361 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9363 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9365 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9368 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9372 if ((image->alpha_trait == UndefinedPixelTrait || in WriteOnePNGImage()
9373 image->colormap[i].alpha == GetPixelAlpha(image,q)) && in WriteOnePNGImage()
9374 image->colormap[i].red == GetPixelRed(image,q) && in WriteOnePNGImage()
9375 image->colormap[i].green == GetPixelGreen(image,q) && in WriteOnePNGImage()
9376 image->colormap[i].blue == GetPixelBlue(image,q)) in WriteOnePNGImage()
9394 " image->colors=%d", (int) image->colors); in WriteOnePNGImage()
9396 if (image->colormap != NULL) in WriteOnePNGImage()
9401 for (i=0; i < (ssize_t) image->colors; i++) in WriteOnePNGImage()
9403 if (i < 300 || i >= (ssize_t) image->colors - 10) in WriteOnePNGImage()
9408 (int) image->colormap[i].red, in WriteOnePNGImage()
9409 (int) image->colormap[i].green, in WriteOnePNGImage()
9410 (int) image->colormap[i].blue, in WriteOnePNGImage()
9411 (int) image->colormap[i].alpha); in WriteOnePNGImage()
9453 " At least one pixel or the background is non-gray"); in WriteOnePNGImage()
9459 if (mng_info->write_png8 == MagickFalse) in WriteOnePNGImage()
9464 image_colors != 0 && image->colormap != NULL && in WriteOnePNGImage()
9472 * them into image->background_color. in WriteOnePNGImage()
9479 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9481 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9483 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9486 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9490 SetPixelViaPixelInfo(image,&image->background_color,q); in WriteOnePNGImage()
9502 image->colormap != NULL) in WriteOnePNGImage()
9504 image->colormap[i].alpha = in WriteOnePNGImage()
9505 (image->colormap[i].alpha > TransparentAlpha/2 ? in WriteOnePNGImage()
9512 * background color to the 4-4-4-1, 3-3-3-1 or 3-3-2-1 palette. If the in WriteOnePNGImage()
9513 * image is mostly gray, the 4-4-4-1 palette is likely to end up with 256 in WriteOnePNGImage()
9520 " Quantizing the background color to 4-4-4"); in WriteOnePNGImage()
9524 LBR04PacketRGB(image->background_color); in WriteOnePNGImage()
9528 " Quantizing the pixel colors to 4-4-4"); in WriteOnePNGImage()
9530 if (image->colormap == NULL) in WriteOnePNGImage()
9532 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9534 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9536 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9539 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9556 " Quantizing the colormap to 4-4-4"); in WriteOnePNGImage()
9560 LBR04PacketRGB(image->colormap[i]); in WriteOnePNGImage()
9570 " Quantizing the background color to 3-3-3"); in WriteOnePNGImage()
9574 LBR03PacketRGB(image->background_color); in WriteOnePNGImage()
9578 " Quantizing the pixel colors to 3-3-3-1"); in WriteOnePNGImage()
9580 if (image->colormap == NULL) in WriteOnePNGImage()
9582 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9584 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9586 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9589 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9606 " Quantizing the colormap to 3-3-3-1"); in WriteOnePNGImage()
9609 LBR03PacketRGB(image->colormap[i]); in WriteOnePNGImage()
9619 " Quantizing the background color to 3-3-2"); in WriteOnePNGImage()
9627 LBR02PacketBlue(image->background_color); in WriteOnePNGImage()
9631 " Quantizing the pixel colors to 3-3-2-1"); in WriteOnePNGImage()
9633 if (image->colormap == NULL) in WriteOnePNGImage()
9635 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9637 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9639 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9642 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9659 " Quantizing the colormap to 3-3-2-1"); in WriteOnePNGImage()
9662 LBR02PacketBlue(image->colormap[i]); in WriteOnePNGImage()
9670 /* Take care of special case with 256 opaque colors + 1 transparent in WriteOnePNGImage()
9671 * color. We don't need to quantize to 2-3-2-1; we only need to in WriteOnePNGImage()
9673 * colors (0x49, 0, 0) -> (0x24, 0, 0). in WriteOnePNGImage()
9677 " Merging two dark red background colors to 3-3-2-1"); in WriteOnePNGImage()
9679 if (ScaleQuantumToChar(image->background_color.red) == 0x49 && in WriteOnePNGImage()
9680 ScaleQuantumToChar(image->background_color.green) == 0x00 && in WriteOnePNGImage()
9681 ScaleQuantumToChar(image->background_color.blue) == 0x00) in WriteOnePNGImage()
9683 image->background_color.red=ScaleCharToQuantum(0x24); in WriteOnePNGImage()
9688 " Merging two dark red pixel colors to 3-3-2-1"); in WriteOnePNGImage()
9690 if (image->colormap == NULL) in WriteOnePNGImage()
9692 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9694 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
9696 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9699 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9721 if (ScaleQuantumToChar(image->colormap[i].red) == 0x49 && in WriteOnePNGImage()
9722 ScaleQuantumToChar(image->colormap[i].green) == 0x00 && in WriteOnePNGImage()
9723 ScaleQuantumToChar(image->colormap[i].blue) == 0x00) in WriteOnePNGImage()
9725 image->colormap[i].red=ScaleCharToQuantum(0x24); in WriteOnePNGImage()
9735 * then we must write a Gray-Alpha (color-type 4) or RGBA (color-type 6) in WriteOnePNGImage()
9738 if (mng_info->ping_exclude_tRNS != MagickFalse && in WriteOnePNGImage()
9741 unsigned int colortype=mng_info->write_png_colortype; in WriteOnePNGImage()
9744 mng_info->write_png_colortype = 5; in WriteOnePNGImage()
9747 mng_info->write_png_colortype = 7; in WriteOnePNGImage()
9750 mng_info->write_png_colortype != colortype) in WriteOnePNGImage()
9759 * we are writing a PNG with colortype 0 or 2, and we have not in WriteOnePNGImage()
9763 mng_info->write_png_colortype < 4) in WriteOnePNGImage()
9771 image->colormap == NULL) in WriteOnePNGImage()
9773 register const Quantum in WriteOnePNGImage()
9776 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
9778 q=GetVirtualPixels(image,0,y,image->columns,1, exception); in WriteOnePNGImage()
9780 if (q == (Quantum *) NULL) in WriteOnePNGImage()
9783 for (x=0; x < (ssize_t) image->columns; x++) in WriteOnePNGImage()
9806 /* Assuming that image->colormap[0] is the one transparent color in WriteOnePNGImage()
9811 if (image->colormap[i].red == image->colormap[0].red && in WriteOnePNGImage()
9812 image->colormap[i].green == image->colormap[0].green && in WriteOnePNGImage()
9813 image->colormap[i].blue == image->colormap[0].blue) in WriteOnePNGImage()
9834 image_depth=image->depth; in WriteOnePNGImage()
9838 image_colors=(int) image->colors; in WriteOnePNGImage()
9839 image_matte=image->alpha_trait != in WriteOnePNGImage()
9842 if (mng_info->write_png_colortype < 5) in WriteOnePNGImage()
9843 mng_info->IsPalette=image->storage_class == PseudoClass && in WriteOnePNGImage()
9844 image_colors <= 256 && image->colormap != NULL; in WriteOnePNGImage()
9846 mng_info->IsPalette = MagickFalse; in WriteOnePNGImage()
9848 if ((mng_info->write_png_colortype == 4 || mng_info->write_png8) && in WriteOnePNGImage()
9849 (image->colors == 0 || image->colormap == NULL)) in WriteOnePNGImage()
9854 "Cannot write PNG8 or color-type 3; colormap is NULL", in WriteOnePNGImage()
9855 "`%s'",IMimage->filename); in WriteOnePNGImage()
9894 if (image_info->verbose) in WriteOnePNGImage()
9915 /* { For navigation to end of SETJMP-protected block. Within this in WriteOnePNGImage()
9930 /* Reject images with too many rows or columns */ in WriteOnePNGImage()
9943 if (mng_info->write_mng) in WriteOnePNGImage()
9947 /* Disable new libpng-1.5.10 feature when writing a MNG because in WriteOnePNGImage()
9948 * zero-length PLTE is OK in WriteOnePNGImage()
9956 if (mng_info->write_mng) in WriteOnePNGImage()
9964 ping_width=(png_uint_32) image->columns; in WriteOnePNGImage()
9965 ping_height=(png_uint_32) image->rows; in WriteOnePNGImage()
9967 if (mng_info->write_png8 || mng_info->write_png24 || mng_info->write_png32) in WriteOnePNGImage()
9970 if (mng_info->write_png48 || mng_info->write_png64) in WriteOnePNGImage()
9973 if (mng_info->write_png_depth != 0) in WriteOnePNGImage()
9974 image_depth=mng_info->write_png_depth; in WriteOnePNGImage()
9976 /* Adjust requested depth to next higher valid depth if necessary */ in WriteOnePNGImage()
9993 " image_matte=%.20g",(double) image->alpha_trait); in WriteOnePNGImage()
9995 " image->depth=%.20g",(double) image->depth); in WriteOnePNGImage()
10007 if ((image->resolution.x != 0) && (image->resolution.y != 0) && in WriteOnePNGImage()
10008 (!mng_info->write_mng || !mng_info->equal_physs)) in WriteOnePNGImage()
10014 if (image->units == PixelsPerInchResolution) in WriteOnePNGImage()
10018 (png_uint_32) ((100.0*image->resolution.x+0.5)/2.54); in WriteOnePNGImage()
10020 (png_uint_32) ((100.0*image->resolution.y+0.5)/2.54); in WriteOnePNGImage()
10023 else if (image->units == PixelsPerCentimeterResolution) in WriteOnePNGImage()
10026 ping_pHYs_x_resolution=(png_uint_32) (100.0*image->resolution.x+0.5); in WriteOnePNGImage()
10027 ping_pHYs_y_resolution=(png_uint_32) (100.0*image->resolution.y+0.5); in WriteOnePNGImage()
10033 ping_pHYs_x_resolution=(png_uint_32) image->resolution.x; in WriteOnePNGImage()
10034 ping_pHYs_y_resolution=(png_uint_32) image->resolution.y; in WriteOnePNGImage()
10049 if ((!mng_info->adjoin || !mng_info->equal_backgrounds)) in WriteOnePNGImage()
10068 (ScaleQuantumToShort(image->background_color.red) & mask); in WriteOnePNGImage()
10071 (ScaleQuantumToShort(image->background_color.green) & mask); in WriteOnePNGImage()
10074 (ScaleQuantumToShort(image->background_color.blue) & mask); in WriteOnePNGImage()
10100 if (mng_info->IsPalette && mng_info->write_png8) in WriteOnePNGImage()
10103 for reducing the sample depth from 8. */ in WriteOnePNGImage()
10116 " Setting up PLTE chunk with %d colors (%d)", in WriteOnePNGImage()
10121 palette[i].red=ScaleQuantumToChar(image->colormap[i].red); in WriteOnePNGImage()
10122 palette[i].green=ScaleQuantumToChar(image->colormap[i].green); in WriteOnePNGImage()
10123 palette[i].blue=ScaleQuantumToChar(image->colormap[i].blue); in WriteOnePNGImage()
10145 assert(image->colormap != NULL); in WriteOnePNGImage()
10167 for (i=0; i < (ssize_t) MagickMax(1L*number_colors-1L,1L); i++) in WriteOnePNGImage()
10168 if (IsPNGColorEqual(ping_background,image->colormap[i])) in WriteOnePNGImage()
10182 else if (mng_info->write_png_colortype == 1) in WriteOnePNGImage()
10188 else if (mng_info->write_png24 || mng_info->write_png48 || in WriteOnePNGImage()
10189 mng_info->write_png_colortype == 3) in WriteOnePNGImage()
10195 else if (mng_info->write_png32 || mng_info->write_png64 || in WriteOnePNGImage()
10196 mng_info->write_png_colortype == 7) in WriteOnePNGImage()
10202 else /* mng_info->write_pngNN not specified */ in WriteOnePNGImage()
10206 if (mng_info->write_png_colortype != 0) in WriteOnePNGImage()
10208 ping_color_type=(png_byte) mng_info->write_png_colortype-1; in WriteOnePNGImage()
10228 if (image_info->type == TrueColorType) in WriteOnePNGImage()
10233 else if (image_info->type == TrueColorAlphaType) in WriteOnePNGImage()
10238 else if (image_info->type == PaletteType || in WriteOnePNGImage()
10239 image_info->type == PaletteAlphaType) in WriteOnePNGImage()
10291 if (image->alpha_trait == UndefinedPixelTrait && in WriteOnePNGImage()
10301 if (image->colors == 0) in WriteOnePNGImage()
10317 " Tentative PNG bit depth: %d",ping_bit_depth); in WriteOnePNGImage()
10320 if (ping_bit_depth < (int) mng_info->write_png_depth) in WriteOnePNGImage()
10321 ping_bit_depth = mng_info->write_png_depth; in WriteOnePNGImage()
10334 " image_info->type: %.20g",(double) image_info->type); in WriteOnePNGImage()
10341 " image->depth: %.20g",(double) image->depth); in WriteOnePNGImage()
10349 if (mng_info->IsPalette) in WriteOnePNGImage()
10351 if (mng_info->write_png_colortype == 0) in WriteOnePNGImage()
10370 if (mng_info->write_png_colortype == 0) in WriteOnePNGImage()
10394 (ScaleQuantumToShort(image->colormap[0].red) & mask); in WriteOnePNGImage()
10397 (ScaleQuantumToShort(image->colormap[0].green) & mask); in WriteOnePNGImage()
10400 (ScaleQuantumToShort(image->colormap[0].blue) & mask); in WriteOnePNGImage()
10404 image->colormap)) & mask); in WriteOnePNGImage()
10423 if (mng_info->write_png_colortype == 0) in WriteOnePNGImage()
10452 if ((mng_info->IsPalette) && in WriteOnePNGImage()
10453 mng_info->write_png_colortype-1 != PNG_COLOR_TYPE_PALETTE && in WriteOnePNGImage()
10462 else if (mng_info->write_png_colortype-1 != PNG_COLOR_TYPE_GRAY_ALPHA) in WriteOnePNGImage()
10481 ((ssize_t) (image_colors-1) > (ssize_t) MaxColormapSize)) in WriteOnePNGImage()
10492 if(!mng_info->write_png_depth) in WriteOnePNGImage()
10504 mng_info->IsPalette) in WriteOnePNGImage()
10518 intensity=ScaleQuantumToChar(image->colormap[i].red); in WriteOnePNGImage()
10528 if (depth_1_ok && mng_info->write_png_depth <= 1) in WriteOnePNGImage()
10531 else if (depth_2_ok && mng_info->write_png_depth <= 2) in WriteOnePNGImage()
10534 else if (depth_4_ok && mng_info->write_png_depth <= 4) in WriteOnePNGImage()
10544 if (mng_info->IsPalette) in WriteOnePNGImage()
10555 if (!(mng_info->have_write_global_plte && matte == MagickFalse)) in WriteOnePNGImage()
10559 palette[i].red=ScaleQuantumToChar(image->colormap[i].red); in WriteOnePNGImage()
10561 ScaleQuantumToChar(image->colormap[i].green); in WriteOnePNGImage()
10562 palette[i].blue=ScaleQuantumToChar(image->colormap[i].blue); in WriteOnePNGImage()
10567 " Setting up PLTE chunk with %d colors", in WriteOnePNGImage()
10574 if (mng_info->write_png_depth == 0) in WriteOnePNGImage()
10613 ScaleQuantumToChar(image->colormap[i].alpha); in WriteOnePNGImage()
10653 if (ping_bit_depth < (ssize_t) mng_info->write_png_depth) in WriteOnePNGImage()
10654 ping_bit_depth = (ssize_t) mng_info->write_png_depth; in WriteOnePNGImage()
10657 Adjust background and transparency samples in sub-8-bit grayscale files. in WriteOnePNGImage()
10668 maxval=(png_uint_16) ((one << ping_bit_depth)-1); in WriteOnePNGImage()
10675 &image->background_color))) +.5))); in WriteOnePNGImage()
10702 if (mng_info->IsPalette && (int) ping_color_type == PNG_COLOR_TYPE_PALETTE) in WriteOnePNGImage()
10711 if (IsPNGColorEqual(image->background_color,image->colormap[i])) in WriteOnePNGImage()
10719 " Setting up bKGD chunk with index=%d",(int) i); in WriteOnePNGImage()
10770 /* Untangle the "-quality" setting: in WriteOnePNGImage()
10777 0 or omitted: Use Z_HUFFMAN_ONLY strategy with the in WriteOnePNGImage()
10780 1-9: the zlib compression level in WriteOnePNGImage()
10784 0-4: the PNG filter method in WriteOnePNGImage()
10793 a MNG, otherwise "none". Did not work in IM-6.7.0-9 in WriteOnePNGImage()
10797 filtering. Unused prior to IM-6.7.0-10, was same as 6 in WriteOnePNGImage()
10800 Unused prior to IM-6.7.0-10, was same as 6 in WriteOnePNGImage()
10802 Note that using the -quality option, not all combinations of in WriteOnePNGImage()
10805 release that accomodates "-define png:compression-strategy", etc. in WriteOnePNGImage()
10809 quality=image_info->quality == UndefinedCompressionQuality ? 75UL : in WriteOnePNGImage()
10810 image_info->quality; in WriteOnePNGImage()
10814 if (mng_info->write_png_compression_strategy == 0) in WriteOnePNGImage()
10815 mng_info->write_png_compression_strategy = Z_HUFFMAN_ONLY+1; in WriteOnePNGImage()
10818 else if (mng_info->write_png_compression_level == 0) in WriteOnePNGImage()
10825 mng_info->write_png_compression_level = level+1; in WriteOnePNGImage()
10828 if (mng_info->write_png_compression_strategy == 0) in WriteOnePNGImage()
10831 #ifdef Z_RLE /* Z_RLE was added to zlib-1.2.0 */ in WriteOnePNGImage()
10832 mng_info->write_png_compression_strategy=Z_RLE+1; in WriteOnePNGImage()
10834 mng_info->write_png_compression_strategy = Z_DEFAULT_STRATEGY+1; in WriteOnePNGImage()
10838 if (mng_info->write_png_compression_filter == 0) in WriteOnePNGImage()
10839 mng_info->write_png_compression_filter=((int) quality % 10) + 1; in WriteOnePNGImage()
10843 if (mng_info->write_png_compression_level) in WriteOnePNGImage()
10846 (int) mng_info->write_png_compression_level-1); in WriteOnePNGImage()
10848 if (mng_info->write_png_compression_strategy) in WriteOnePNGImage()
10851 (int) mng_info->write_png_compression_strategy-1); in WriteOnePNGImage()
10856 if (mng_info->write_png_compression_filter == 6) in WriteOnePNGImage()
10859 else if (mng_info->write_png_compression_filter == 0 || in WriteOnePNGImage()
10860 mng_info->write_png_compression_filter == 1) in WriteOnePNGImage()
10866 (int) mng_info->write_png_compression_filter-1); in WriteOnePNGImage()
10869 if (mng_info->write_png_compression_level != 0) in WriteOnePNGImage()
10870 png_set_compression_level(ping,mng_info->write_png_compression_level-1); in WriteOnePNGImage()
10872 if (mng_info->write_png_compression_filter == 6) in WriteOnePNGImage()
10881 else if (mng_info->write_png_compression_filter == 7 || in WriteOnePNGImage()
10882 mng_info->write_png_compression_filter == 10) in WriteOnePNGImage()
10885 else if (mng_info->write_png_compression_filter == 8) in WriteOnePNGImage()
10888 if (mng_info->write_mng) in WriteOnePNGImage()
10898 else if (mng_info->write_png_compression_filter == 9) in WriteOnePNGImage()
10901 else if (mng_info->write_png_compression_filter != 0) in WriteOnePNGImage()
10903 mng_info->write_png_compression_filter-1); in WriteOnePNGImage()
10905 if (mng_info->write_png_compression_strategy != 0) in WriteOnePNGImage()
10907 mng_info->write_png_compression_strategy-1); in WriteOnePNGImage()
10909 ping_interlace_method=image_info->interlace != NoInterlace; in WriteOnePNGImage()
10911 if (mng_info->write_mng) in WriteOnePNGImage()
10914 /* Bail out if cannot meet defined png:bit-depth or png:color-type */ in WriteOnePNGImage()
10916 if (mng_info->write_png_colortype != 0) in WriteOnePNGImage()
10918 if (mng_info->write_png_colortype-1 == PNG_COLOR_TYPE_GRAY) in WriteOnePNGImage()
10927 if (mng_info->write_png_colortype-1 == PNG_COLOR_TYPE_GRAY_ALPHA) in WriteOnePNGImage()
10933 ((mng_info->write_png_depth && in WriteOnePNGImage()
10934 (int) mng_info->write_png_depth != ping_bit_depth) || in WriteOnePNGImage()
10935 (mng_info->write_png_colortype && in WriteOnePNGImage()
10936 ((int) mng_info->write_png_colortype-1 != ping_color_type && in WriteOnePNGImage()
10937 mng_info->write_png_colortype != 7 && in WriteOnePNGImage()
10938 !(mng_info->write_png_colortype == 5 && ping_color_type == 0))))) in WriteOnePNGImage()
10948 if (mng_info->write_png_depth) in WriteOnePNGImage()
10951 " Defined png:bit-depth=%u, Computed depth=%u", in WriteOnePNGImage()
10952 mng_info->write_png_depth, in WriteOnePNGImage()
10956 if (mng_info->write_png_colortype) in WriteOnePNGImage()
10959 " Defined png:color-type=%u, Computed color type=%u", in WriteOnePNGImage()
10960 mng_info->write_png_colortype-1, in WriteOnePNGImage()
10966 "Cannot write image with defined png:bit-depth or png:color-type."); in WriteOnePNGImage()
10969 if (image_matte != MagickFalse && image->alpha_trait == UndefinedPixelTrait) in WriteOnePNGImage()
10972 image->alpha_trait = BlendPixelTrait; in WriteOnePNGImage()
11063 /* Do not write hex-encoded ICC chunk */ in WriteOnePNGImage()
11072 /* Do not write hex-encoded ICC chunk; we will in WriteOnePNGImage()
11079 " Setting up zTXt chunk with uuencoded %s profile", in WriteOnePNGImage()
11092 if ((mng_info->have_write_global_srgb == 0) && in WriteOnePNGImage()
11108 image->rendering_intent))); in WriteOnePNGImage()
11114 if ((!mng_info->write_mng) || (!png_get_valid(ping,ping_info,PNG_INFO_sRGB))) in WriteOnePNGImage()
11121 (image->gamma < .45 || image->gamma > .46))) in WriteOnePNGImage()
11123 if ((mng_info->have_write_global_gama == 0) && (image->gamma != 0.0)) in WriteOnePNGImage()
11133 png_set_gAMA(ping,ping_info,image->gamma); in WriteOnePNGImage()
11139 if ((mng_info->have_write_global_chrm == 0) && in WriteOnePNGImage()
11140 (image->chromaticity.red_primary.x != 0.0)) in WriteOnePNGImage()
11152 wp=image->chromaticity.white_point; in WriteOnePNGImage()
11153 rp=image->chromaticity.red_primary; in WriteOnePNGImage()
11154 gp=image->chromaticity.green_primary; in WriteOnePNGImage()
11155 bp=image->chromaticity.blue_primary; in WriteOnePNGImage()
11221 if (image->taint == MagickFalse) in WriteOnePNGImage()
11242 if (mng_info->need_blob != MagickFalse) in WriteOnePNGImage()
11258 " Calling png_set_tRNS with num_trans=%d",ping_num_trans); in WriteOnePNGImage()
11287 /* write orNT if image->orientation is defined */ in WriteOnePNGImage()
11288 if (image->orientation != UndefinedOrientation) in WriteOnePNGImage()
11296 chunk[4]=Magick_Orientation_to_Exif_Orientation(image->orientation); in WriteOnePNGImage()
11306 if ((image->page.width != 0 && image->page.width != image->columns) || in WriteOnePNGImage()
11307 (image->page.height != 0 && image->page.height != image->rows) || in WriteOnePNGImage()
11308 image->page.x != 0 || image->page.y != 0) in WriteOnePNGImage()
11316 PNGLong(chunk+4,(png_uint_32) image->page.width); in WriteOnePNGImage()
11317 PNGLong(chunk+8,(png_uint_32) image->page.height); in WriteOnePNGImage()
11318 PNGsLong(chunk+12,(png_int_32) image->page.x); in WriteOnePNGImage()
11319 PNGsLong(chunk+16,(png_int_32) image->page.y); in WriteOnePNGImage()
11329 if (image->page.x || image->page.y) in WriteOnePNGImage()
11331 png_set_oFFs(ping,ping_info,(png_int_32) image->page.x, in WriteOnePNGImage()
11332 (png_int_32) image->page.y, 0); in WriteOnePNGImage()
11336 " Setting up oFFs chunk with x=%d, y=%d, units=0", in WriteOnePNGImage()
11337 (int) image->page.x, (int) image->page.y); in WriteOnePNGImage()
11343 /* avoid libpng-1.2.6 bug by setting PNG_HAVE_IDAT flag */ in WriteOnePNGImage()
11345 ping->mode |= PNG_HAVE_IDAT; in WriteOnePNGImage()
11353 rowbytes=image->columns; in WriteOnePNGImage()
11393 quantum_info->format=UndefinedQuantumFormat; in WriteOnePNGImage()
11398 if ((!mng_info->write_png8 && !mng_info->write_png24 && in WriteOnePNGImage()
11399 !mng_info->write_png48 && !mng_info->write_png64 && in WriteOnePNGImage()
11400 !mng_info->write_png32) && in WriteOnePNGImage()
11401 (mng_info->IsPalette || in WriteOnePNGImage()
11402 (image_info->type == BilevelType)) && in WriteOnePNGImage()
11410 register const Quantum in WriteOnePNGImage()
11414 if (mng_info->IsPalette) in WriteOnePNGImage()
11417 if (mng_info->write_png_colortype-1 == PNG_COLOR_TYPE_PALETTE) in WriteOnePNGImage()
11426 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
11432 p=GetVirtualPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
11434 if (p == (const Quantum *) NULL) in WriteOnePNGImage()
11439 if (mng_info->write_png_colortype-1 != PNG_COLOR_TYPE_PALETTE) in WriteOnePNGImage()
11440 for (i=0; i < (ssize_t) image->columns; i++) in WriteOnePNGImage()
11451 (MagickOffsetType) (pass * image->rows + y), in WriteOnePNGImage()
11452 num_passes * image->rows); in WriteOnePNGImage()
11462 if ((!mng_info->write_png8 && !mng_info->write_png24 && in WriteOnePNGImage()
11463 !mng_info->write_png48 && !mng_info->write_png64 && in WriteOnePNGImage()
11464 !mng_info->write_png32) && (image_matte != MagickFalse || in WriteOnePNGImage()
11466 (mng_info->IsPalette) && ping_have_color == MagickFalse) in WriteOnePNGImage()
11468 register const Quantum in WriteOnePNGImage()
11474 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
11476 p=GetVirtualPixels(image,0,y,image->columns,1,exception); in WriteOnePNGImage()
11478 if (p == (const Quantum *) NULL) in WriteOnePNGImage()
11483 if (mng_info->IsPalette) in WriteOnePNGImage()
11513 (MagickOffsetType) (pass * image->rows + y), in WriteOnePNGImage()
11514 num_passes * image->rows); in WriteOnePNGImage()
11524 register const Quantum in WriteOnePNGImage()
11530 mng_info->write_png24 || in WriteOnePNGImage()
11531 mng_info->write_png32 || in WriteOnePNGImage()
11532 mng_info->write_png48 || in WriteOnePNGImage()
11533 mng_info->write_png64 || in WriteOnePNGImage()
11534 (!mng_info->write_png8 && !mng_info->IsPalette)) in WriteOnePNGImage()
11536 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
11538 p=GetVirtualPixels(image,0,y,image->columns,1, exception); in WriteOnePNGImage()
11540 if (p == (const Quantum *) NULL) in WriteOnePNGImage()
11545 if (image->storage_class == DirectClass) in WriteOnePNGImage()
11580 (MagickOffsetType) (pass * image->rows + y), in WriteOnePNGImage()
11581 num_passes * image->rows); in WriteOnePNGImage()
11590 mng_info->write_png24 || mng_info->write_png32 || in WriteOnePNGImage()
11591 mng_info->write_png48 || mng_info->write_png64 || in WriteOnePNGImage()
11592 (!mng_info->write_png8 && !mng_info->IsPalette)) in WriteOnePNGImage()
11606 for (y=0; y < (ssize_t) image->rows; y++) in WriteOnePNGImage()
11610 " pass %d, Image Is RGB, 16-bit GRAY, or GRAY_ALPHA", in WriteOnePNGImage()
11613 p=GetVirtualPixels(image,0,y,image->columns,1, exception); in WriteOnePNGImage()
11615 if (p == (const Quantum *) NULL) in WriteOnePNGImage()
11620 SetQuantumDepth(image,quantum_info,image->depth); in WriteOnePNGImage()
11645 " Writing row of non-gray pixels (4)"); in WriteOnePNGImage()
11655 (MagickOffsetType) (pass * image->rows + y), in WriteOnePNGImage()
11656 num_passes * image->rows); in WriteOnePNGImage()
11680 if (mng_info->write_png_depth) in WriteOnePNGImage()
11683 " Defined png:bit-depth: %d",mng_info->write_png_depth); in WriteOnePNGImage()
11687 " PNG bit-depth written: %d",ping_bit_depth); in WriteOnePNGImage()
11689 if (mng_info->write_png_colortype) in WriteOnePNGImage()
11692 " Defined png:color-type: %d",mng_info->write_png_colortype-1); in WriteOnePNGImage()
11696 " PNG color-type written: %d",ping_color_type); in WriteOnePNGImage()
11727 /* Suppress the IM-generated Date:create and Date:modify */ in WriteOnePNGImage()
11752 text[0].compression=image_info->compression == NoCompression || in WriteOnePNGImage()
11753 (image_info->compression == UndefinedCompression && in WriteOnePNGImage()
11816 length -= 6; in WriteOnePNGImage()
11840 if (mng_info->need_fram && (int) image->dispose == BackgroundDispose) in WriteOnePNGImage()
11842 if (mng_info->page.x || mng_info->page.y || in WriteOnePNGImage()
11843 (ping_width != mng_info->page.width) || in WriteOnePNGImage()
11844 (ping_height != mng_info->page.height)) in WriteOnePNGImage()
11850 Write FRAM 4 with clipping boundaries followed by FRAM 1. in WriteOnePNGImage()
11863 PNGLong(chunk+15,(png_uint_32) (mng_info->page.x)); /* left cb */ in WriteOnePNGImage()
11865 (png_uint_32) (mng_info->page.x + ping_width)); in WriteOnePNGImage()
11866 PNGLong(chunk+23,(png_uint_32) (mng_info->page.y)); /* top cb */ in WriteOnePNGImage()
11868 (png_uint_32) (mng_info->page.y + ping_height)); in WriteOnePNGImage()
11871 mng_info->old_framing_mode=4; in WriteOnePNGImage()
11872 mng_info->framing_mode=1; in WriteOnePNGImage()
11876 mng_info->framing_mode=3; in WriteOnePNGImage()
11878 if (mng_info->write_mng && !mng_info->need_fram && in WriteOnePNGImage()
11879 ((int) image->dispose == 3)) in WriteOnePNGImage()
11880 png_error(ping, "Cannot convert GIF with disposal method 3 to MNG-LC"); in WriteOnePNGImage()
11896 /* Store bit depth actually written */ in WriteOnePNGImage()
11900 (void) SetImageProperty(IMimage,"png:bit-depth-written",s,exception); in WriteOnePNGImage()
11910 /* } for navigation to beginning of SETJMP-protected block. Revert to in WriteOnePNGImage()
11931 % Multiple-image Network Graphics (MNG) image file.
11933 % MNG support written by Glenn Randers-Pehrson, glennrp@image...
11950 % Communicating with the PNG encoder:
11954 % pseudo-formats which are subsets of png:
11956 % o PNG8: An 8-bit indexed PNG datastream is written. If the image has
11957 % a depth greater than 8, the depth is reduced. If transparency
11961 % 50%-thresholded to binary transparency. If more than 256
11962 % colors are present, they will be quantized to the 4-4-4-1,
11963 % 3-3-3-1, or 3-3-2-1 palette. The underlying RGB color
11964 % of any resulting fully-transparent pixels is changed to
11969 % PNG encoder. The pixels contain 8-bit indices even if
11970 % they could be represented with 1, 2, or 4 bits. Grayscale
11976 % o PNG24: An 8-bit per sample RGB PNG datastream is written. The tRNS
11979 % is reduction of sample depth to 8. If the image has more
11981 % has an opaque pixel with the same RGB components as the
11984 % o PNG32: An 8-bit per sample RGBA PNG is written. Partial
11988 % The only loss in data is the reduction of the sample depth
11991 % o PNG48: A 16-bit per sample RGB PNG datastream is written. The tRNS
11995 % has an opaque pixel with the same RGB components as the
11998 % o PNG64: A 16-bit per sample RGBA PNG is written. Partial
12003 % o PNG00: A PNG that inherits its colortype and bit-depth from the input
12009 % o -define: For more precise control of the PNG output, you can use the
12010 % Image options "png:bit-depth" and "png:color-type". These
12011 % can be set from the commandline with "-define" and also
12013 % are case-independent and are converted to lowercase before
12016 % png:color-type can be 0, 2, 3, 4, or 6.
12018 % When png:color-type is 0 (Grayscale), png:bit-depth can
12021 % When png:color-type is 2 (RGB), png:bit-depth can
12024 % When png:color-type is 3 (Indexed), png:bit-depth can
12027 % bit-depth 8 in indexed PNG files.
12029 % When png:color-type is 4 (Gray-Matte) or 6 (RGB-Matte),
12030 % png:bit-depth can be 8 or 16.
12032 % If the image cannot be written without loss with the
12033 % requested bit-depth and color-type, a PNG file will not
12039 % image depth and number of colors and limit transparency to binary
12040 % transparency prior to attempting to write the image with depth, color,
12043 % Note that another definition, "png:bit-depth-written" exists, but it
12045 % PNG encoder to inform the JNG encoder of the depth of the alpha channel.
12049 % o 32-bit depth is reduced to 16.
12050 % o 16-bit depth is reduced to 8 if all pixels contain samples whose
12055 % o Grayscale images are reduced to 1, 2, or 4 bit depth if
12056 % this can be done without loss and a larger bit depth N was not
12057 % requested via the "-define png:bit-depth=N" option.
12060 % o Opaque matte channel is removed (or added, if color-type 4 or 6
12086 assert(image_info->signature == MagickCoreSignature); in WritePNGImage()
12088 assert(image->signature == MagickCoreSignature); in WritePNGImage()
12089 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); in WritePNGImage()
12103 mng_info->image=image; in WritePNGImage()
12104 mng_info->equal_backgrounds=MagickTrue; in WritePNGImage()
12108 mng_info->write_png8=LocaleCompare(image_info->magick,"PNG8") == 0; in WritePNGImage()
12109 mng_info->write_png24=LocaleCompare(image_info->magick,"PNG24") == 0; in WritePNGImage()
12110 mng_info->write_png32=LocaleCompare(image_info->magick,"PNG32") == 0; in WritePNGImage()
12111 mng_info->write_png48=LocaleCompare(image_info->magick,"PNG48") == 0; in WritePNGImage()
12112 mng_info->write_png64=LocaleCompare(image_info->magick,"PNG64") == 0; in WritePNGImage()
12116 if (value != (char *) NULL || LocaleCompare(image_info->magick,"PNG00") == 0) in WritePNGImage()
12121 mng_info->write_png8 = MagickFalse; in WritePNGImage()
12122 mng_info->write_png24 = MagickFalse; in WritePNGImage()
12123 mng_info->write_png32 = MagickFalse; in WritePNGImage()
12124 mng_info->write_png48 = MagickFalse; in WritePNGImage()
12125 mng_info->write_png64 = MagickFalse; in WritePNGImage()
12128 mng_info->write_png8 = MagickTrue; in WritePNGImage()
12131 mng_info->write_png24 = MagickTrue; in WritePNGImage()
12134 mng_info->write_png32 = MagickTrue; in WritePNGImage()
12137 mng_info->write_png48 = MagickTrue; in WritePNGImage()
12140 mng_info->write_png64 = MagickTrue; in WritePNGImage()
12143 LocaleCompare(image_info->magick,"PNG00") == 0) in WritePNGImage()
12145 /* Retrieve png:IHDR.bit-depth-orig and png:IHDR.color-type-orig. */ in WritePNGImage()
12146 value=GetImageProperty(image,"png:IHDR.bit-depth-orig",exception); in WritePNGImage()
12151 " png00 inherited bit depth=%s",value); in WritePNGImage()
12154 mng_info->write_png_depth = 1; in WritePNGImage()
12157 mng_info->write_png_depth = 2; in WritePNGImage()
12160 mng_info->write_png_depth = 4; in WritePNGImage()
12163 mng_info->write_png_depth = 8; in WritePNGImage()
12166 mng_info->write_png_depth = 16; in WritePNGImage()
12169 value=GetImageProperty(image,"png:IHDR.color-type-orig",exception); in WritePNGImage()
12177 mng_info->write_png_colortype = 1; in WritePNGImage()
12180 mng_info->write_png_colortype = 3; in WritePNGImage()
12183 mng_info->write_png_colortype = 4; in WritePNGImage()
12186 mng_info->write_png_colortype = 5; in WritePNGImage()
12189 mng_info->write_png_colortype = 7; in WritePNGImage()
12194 if (mng_info->write_png8) in WritePNGImage()
12196 mng_info->write_png_colortype = /* 3 */ 4; in WritePNGImage()
12197 mng_info->write_png_depth = 8; in WritePNGImage()
12198 image->depth = 8; in WritePNGImage()
12201 if (mng_info->write_png24) in WritePNGImage()
12203 mng_info->write_png_colortype = /* 2 */ 3; in WritePNGImage()
12204 mng_info->write_png_depth = 8; in WritePNGImage()
12205 image->depth = 8; in WritePNGImage()
12207 if (image->alpha_trait != UndefinedPixelTrait) in WritePNGImage()
12216 if (mng_info->write_png32) in WritePNGImage()
12218 mng_info->write_png_colortype = /* 6 */ 7; in WritePNGImage()
12219 mng_info->write_png_depth = 8; in WritePNGImage()
12220 image->depth = 8; in WritePNGImage()
12221 image->alpha_trait = BlendPixelTrait; in WritePNGImage()
12227 if (mng_info->write_png48) in WritePNGImage()
12229 mng_info->write_png_colortype = /* 2 */ 3; in WritePNGImage()
12230 mng_info->write_png_depth = 16; in WritePNGImage()
12231 image->depth = 16; in WritePNGImage()
12233 if (image->alpha_trait != UndefinedPixelTrait) in WritePNGImage()
12242 if (mng_info->write_png64) in WritePNGImage()
12244 mng_info->write_png_colortype = /* 6 */ 7; in WritePNGImage()
12245 mng_info->write_png_depth = 16; in WritePNGImage()
12246 image->depth = 16; in WritePNGImage()
12247 image->alpha_trait = BlendPixelTrait; in WritePNGImage()
12253 value=GetImageOption(image_info,"png:bit-depth"); in WritePNGImage()
12258 mng_info->write_png_depth = 1; in WritePNGImage()
12261 mng_info->write_png_depth = 2; in WritePNGImage()
12264 mng_info->write_png_depth = 4; in WritePNGImage()
12267 mng_info->write_png_depth = 8; in WritePNGImage()
12270 mng_info->write_png_depth = 16; in WritePNGImage()
12275 "ignoring invalid defined png:bit-depth", in WritePNGImage()
12280 " png:bit-depth=%d was defined.\n",mng_info->write_png_depth); in WritePNGImage()
12283 value=GetImageOption(image_info,"png:color-type"); in WritePNGImage()
12289 mng_info->write_png_colortype = 1; in WritePNGImage()
12292 mng_info->write_png_colortype = 2; in WritePNGImage()
12295 mng_info->write_png_colortype = 3; in WritePNGImage()
12298 mng_info->write_png_colortype = 4; in WritePNGImage()
12301 mng_info->write_png_colortype = 5; in WritePNGImage()
12304 mng_info->write_png_colortype = 7; in WritePNGImage()
12309 "ignoring invalid defined png:color-type", in WritePNGImage()
12314 " png:color-type=%d was defined.\n", in WritePNGImage()
12315 mng_info->write_png_colortype-1); in WritePNGImage()
12323 * Chunks can be listed for exclusion via a "png:exclude-chunk" in WritePNGImage()
12326 * to or instead of a comma-separated list of chunks, the in WritePNGImage()
12327 * "exclude-chunk" string can be simply "all" or "none". in WritePNGImage()
12329 * Note that the "-strip" option provides a convenient way of in WritePNGImage()
12332 * -define png:exclude-chunk="bKGD,caNv,cHRM,eXIf,gAMA,iCCP, in WritePNGImage()
12335 * The exclude-chunk define takes priority over the mng_info. in WritePNGImage()
12337 * A "png:include-chunk" define takes priority over both the in WritePNGImage()
12338 * mng_info and the "png:exclude-chunk" define. Like the in WritePNGImage()
12339 * "exclude-chunk" string, it can define "all" or "none" as in WritePNGImage()
12340 * well as a comma-separated list. Chunks that are unknown to in WritePNGImage()
12341 * ImageMagick are always excluded, regardless of their "copy-safe" in WritePNGImage()
12343 * appear in the "include-chunk" list. Such defines appearing among in WritePNGImage()
12358 * The -strip option causes StripImage() to set the png:include-chunk in WritePNGImage()
12362 mng_info->ping_exclude_bKGD=MagickFalse; in WritePNGImage()
12363 mng_info->ping_exclude_caNv=MagickFalse; in WritePNGImage()
12364 mng_info->ping_exclude_cHRM=MagickFalse; in WritePNGImage()
12365 mng_info->ping_exclude_date=MagickFalse; in WritePNGImage()
12366 mng_info->ping_exclude_eXIf=MagickFalse; in WritePNGImage()
12367 mng_info->ping_exclude_EXIF=MagickFalse; /* hex-encoded EXIF in zTXt */ in WritePNGImage()
12368 mng_info->ping_exclude_gAMA=MagickFalse; in WritePNGImage()
12369 mng_info->ping_exclude_iCCP=MagickFalse; in WritePNGImage()
12370 /* mng_info->ping_exclude_iTXt=MagickFalse; */ in WritePNGImage()
12371 mng_info->ping_exclude_oFFs=MagickFalse; in WritePNGImage()
12372 mng_info->ping_exclude_pHYs=MagickFalse; in WritePNGImage()
12373 mng_info->ping_exclude_sRGB=MagickFalse; in WritePNGImage()
12374 mng_info->ping_exclude_tEXt=MagickFalse; in WritePNGImage()
12375 mng_info->ping_exclude_tIME=MagickFalse; in WritePNGImage()
12376 mng_info->ping_exclude_tRNS=MagickFalse; in WritePNGImage()
12377 mng_info->ping_exclude_zCCP=MagickFalse; /* hex-encoded iCCP in zTXt */ in WritePNGImage()
12378 mng_info->ping_exclude_zTXt=MagickFalse; in WritePNGImage()
12380 mng_info->ping_preserve_colormap=MagickFalse; in WritePNGImage()
12382 value=GetImageOption(image_info,"png:preserve-colormap"); in WritePNGImage()
12384 value=GetImageArtifact(image,"png:preserve-colormap"); in WritePNGImage()
12386 mng_info->ping_preserve_colormap=MagickTrue; in WritePNGImage()
12388 mng_info->ping_preserve_iCCP=MagickFalse; in WritePNGImage()
12390 value=GetImageOption(image_info,"png:preserve-iCCP"); in WritePNGImage()
12392 value=GetImageArtifact(image,"png:preserve-iCCP"); in WritePNGImage()
12394 mng_info->ping_preserve_iCCP=MagickTrue; in WritePNGImage()
12396 /* These compression-level, compression-strategy, and compression-filter in WritePNGImage()
12397 * defines take precedence over values from the -quality option. in WritePNGImage()
12399 value=GetImageOption(image_info,"png:compression-level"); in WritePNGImage()
12401 value=GetImageArtifact(image,"png:compression-level"); in WritePNGImage()
12408 mng_info->write_png_compression_level = 1; in WritePNGImage()
12411 mng_info->write_png_compression_level = 2; in WritePNGImage()
12414 mng_info->write_png_compression_level = 3; in WritePNGImage()
12417 mng_info->write_png_compression_level = 4; in WritePNGImage()
12420 mng_info->write_png_compression_level = 5; in WritePNGImage()
12423 mng_info->write_png_compression_level = 6; in WritePNGImage()
12426 mng_info->write_png_compression_level = 7; in WritePNGImage()
12429 mng_info->write_png_compression_level = 8; in WritePNGImage()
12432 mng_info->write_png_compression_level = 9; in WritePNGImage()
12435 mng_info->write_png_compression_level = 10; in WritePNGImage()
12440 "ignoring invalid defined png:compression-level", in WritePNGImage()
12444 value=GetImageOption(image_info,"png:compression-strategy"); in WritePNGImage()
12446 value=GetImageArtifact(image,"png:compression-strategy"); in WritePNGImage()
12450 mng_info->write_png_compression_strategy = Z_DEFAULT_STRATEGY+1; in WritePNGImage()
12453 mng_info->write_png_compression_strategy = Z_FILTERED+1; in WritePNGImage()
12456 mng_info->write_png_compression_strategy = Z_HUFFMAN_ONLY+1; in WritePNGImage()
12459 #ifdef Z_RLE /* Z_RLE was added to zlib-1.2.0 */ in WritePNGImage()
12460 mng_info->write_png_compression_strategy = Z_RLE+1; in WritePNGImage()
12462 mng_info->write_png_compression_strategy = Z_DEFAULT_STRATEGY+1; in WritePNGImage()
12466 #ifdef Z_FIXED /* Z_FIXED was added to zlib-1.2.2.2 */ in WritePNGImage()
12467 mng_info->write_png_compression_strategy = Z_FIXED+1; in WritePNGImage()
12469 mng_info->write_png_compression_strategy = Z_DEFAULT_STRATEGY+1; in WritePNGImage()
12475 "ignoring invalid defined png:compression-strategy", in WritePNGImage()
12479 value=GetImageOption(image_info,"png:compression-filter"); in WritePNGImage()
12481 value=GetImageArtifact(image,"png:compression-filter"); in WritePNGImage()
12487 * Implement this as a comma-separated list of 0,1,2,3,4,5 in WritePNGImage()
12492 mng_info->write_png_compression_filter = 1; in WritePNGImage()
12495 mng_info->write_png_compression_filter = 2; in WritePNGImage()
12498 mng_info->write_png_compression_filter = 3; in WritePNGImage()
12501 mng_info->write_png_compression_filter = 4; in WritePNGImage()
12504 mng_info->write_png_compression_filter = 5; in WritePNGImage()
12507 mng_info->write_png_compression_filter = 6; in WritePNGImage()
12512 "ignoring invalid defined png:compression-filter", in WritePNGImage()
12521 value=GetImageOption(image_info,"png:exclude-chunks"); in WritePNGImage()
12524 value=GetImageArtifact(image,"png:exclude-chunks"); in WritePNGImage()
12527 value=GetImageOption(image_info,"png:exclude-chunk"); in WritePNGImage()
12530 value=GetImageArtifact(image,"png:exclude-chunk"); in WritePNGImage()
12533 value=GetImageOption(image_info,"png:include-chunks"); in WritePNGImage()
12536 value=GetImageArtifact(image,"png:include-chunks"); in WritePNGImage()
12539 value=GetImageOption(image_info,"png:include-chunk"); in WritePNGImage()
12542 value=GetImageArtifact(image,"png:include-chunk"); in WritePNGImage()
12556 " png:exclude-chunk=%s found in image options.\n", value); in WritePNGImage()
12559 " png:exclude-chunk=%s found in image artifacts.\n", value); in WritePNGImage()
12562 " png:include-chunk=%s found in image options.\n", value); in WritePNGImage()
12565 " png:include-chunk=%s found in image artifacts.\n", value); in WritePNGImage()
12570 mng_info->ping_exclude_bKGD=excluding; in WritePNGImage()
12571 mng_info->ping_exclude_caNv=excluding; in WritePNGImage()
12572 mng_info->ping_exclude_cHRM=excluding; in WritePNGImage()
12573 mng_info->ping_exclude_date=excluding; in WritePNGImage()
12574 mng_info->ping_exclude_EXIF=excluding; in WritePNGImage()
12575 mng_info->ping_exclude_eXIf=excluding; in WritePNGImage()
12576 mng_info->ping_exclude_gAMA=excluding; in WritePNGImage()
12577 mng_info->ping_exclude_iCCP=excluding; in WritePNGImage()
12578 /* mng_info->ping_exclude_iTXt=excluding; */ in WritePNGImage()
12579 mng_info->ping_exclude_oFFs=excluding; in WritePNGImage()
12580 mng_info->ping_exclude_pHYs=excluding; in WritePNGImage()
12581 mng_info->ping_exclude_sRGB=excluding; in WritePNGImage()
12582 mng_info->ping_exclude_tEXt=excluding; in WritePNGImage()
12583 mng_info->ping_exclude_tIME=excluding; in WritePNGImage()
12584 mng_info->ping_exclude_tRNS=excluding; in WritePNGImage()
12585 mng_info->ping_exclude_zCCP=excluding; in WritePNGImage()
12586 mng_info->ping_exclude_zTXt=excluding; in WritePNGImage()
12591 mng_info->ping_exclude_bKGD=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12593 mng_info->ping_exclude_caNv=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12595 mng_info->ping_exclude_cHRM=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12597 mng_info->ping_exclude_date=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12599 mng_info->ping_exclude_eXIf=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12601 mng_info->ping_exclude_EXIF=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12603 mng_info->ping_exclude_gAMA=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12605 mng_info->ping_exclude_iCCP=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12607 /* mng_info->ping_exclude_iTXt=!excluding; */ in WritePNGImage()
12608 mng_info->ping_exclude_oFFs=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12610 mng_info->ping_exclude_pHYs=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12612 mng_info->ping_exclude_sRGB=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12614 mng_info->ping_exclude_tEXt=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12616 mng_info->ping_exclude_tIME=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12618 mng_info->ping_exclude_tRNS=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12620 mng_info->ping_exclude_zCCP=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12622 mng_info->ping_exclude_zTXt=excluding != MagickFalse ? MagickFalse : in WritePNGImage()
12627 mng_info->ping_exclude_bKGD=excluding; in WritePNGImage()
12630 mng_info->ping_exclude_caNv=excluding; in WritePNGImage()
12633 mng_info->ping_exclude_cHRM=excluding; in WritePNGImage()
12636 mng_info->ping_exclude_date=excluding; in WritePNGImage()
12640 mng_info->ping_exclude_EXIF=excluding; in WritePNGImage()
12641 mng_info->ping_exclude_eXIf=excluding; in WritePNGImage()
12645 mng_info->ping_exclude_gAMA=excluding; in WritePNGImage()
12648 mng_info->ping_exclude_iCCP=excluding; in WritePNGImage()
12652 mng_info->ping_exclude_iTXt=excluding; in WritePNGImage()
12656 mng_info->ping_exclude_oFFs=excluding; in WritePNGImage()
12659 mng_info->ping_exclude_pHYs=excluding; in WritePNGImage()
12662 mng_info->ping_exclude_sRGB=excluding; in WritePNGImage()
12665 mng_info->ping_exclude_tEXt=excluding; in WritePNGImage()
12668 mng_info->ping_exclude_tIME=excluding; in WritePNGImage()
12671 mng_info->ping_exclude_tRNS=excluding; in WritePNGImage()
12674 mng_info->ping_exclude_zCCP=excluding; in WritePNGImage()
12677 mng_info->ping_exclude_zTXt=excluding; in WritePNGImage()
12684 if (mng_info->ping_exclude_bKGD != MagickFalse) in WritePNGImage()
12687 if (mng_info->ping_exclude_caNv != MagickFalse) in WritePNGImage()
12690 if (mng_info->ping_exclude_cHRM != MagickFalse) in WritePNGImage()
12693 if (mng_info->ping_exclude_date != MagickFalse) in WritePNGImage()
12696 if (mng_info->ping_exclude_EXIF != MagickFalse) in WritePNGImage()
12699 if (mng_info->ping_exclude_eXIf != MagickFalse) in WritePNGImage()
12702 if (mng_info->ping_exclude_gAMA != MagickFalse) in WritePNGImage()
12705 if (mng_info->ping_exclude_iCCP != MagickFalse) in WritePNGImage()
12709 if (mng_info->ping_exclude_iTXt != MagickFalse) in WritePNGImage()
12714 if (mng_info->ping_exclude_oFFs != MagickFalse) in WritePNGImage()
12717 if (mng_info->ping_exclude_pHYs != MagickFalse) in WritePNGImage()
12720 if (mng_info->ping_exclude_sRGB != MagickFalse) in WritePNGImage()
12723 if (mng_info->ping_exclude_tEXt != MagickFalse) in WritePNGImage()
12726 if (mng_info->ping_exclude_tIME != MagickFalse) in WritePNGImage()
12729 if (mng_info->ping_exclude_tRNS != MagickFalse) in WritePNGImage()
12732 if (mng_info->ping_exclude_zCCP != MagickFalse) in WritePNGImage()
12735 if (mng_info->ping_exclude_zTXt != MagickFalse) in WritePNGImage()
12740 mng_info->need_blob = MagickTrue; in WritePNGImage()
12795 transparent=image_info->type==GrayscaleAlphaType || in WriteOneJNGImage()
12796 image_info->type==TrueColorAlphaType || in WriteOneJNGImage()
12797 image->alpha_trait != UndefinedPixelTrait; in WriteOneJNGImage()
12801 jng_quality=image_info->quality == 0UL ? 75UL : image_info->quality%1000; in WriteOneJNGImage()
12803 jng_alpha_compression_method=(image->compression==JPEGCompression || in WriteOneJNGImage()
12804 image_info->compression==JPEGCompression) ? 8 : 0; in WriteOneJNGImage()
12806 jng_alpha_quality=image_info->quality == 0UL ? 75UL : in WriteOneJNGImage()
12807 image_info->quality; in WriteOneJNGImage()
12838 (void) CopyMagickString(jpeg_image->magick,"JPEG",MagickPathExtent); in WriteOneJNGImage()
12839 jpeg_image->alpha_trait=UndefinedPixelTrait; in WriteOneJNGImage()
12840 jpeg_image->quality=jng_alpha_quality; in WriteOneJNGImage()
12841 jpeg_image_info->type=GrayscaleType; in WriteOneJNGImage()
12843 (void) AcquireUniqueFilename(jpeg_image->filename); in WriteOneJNGImage()
12844 (void) FormatLocaleString(jpeg_image_info->filename,MagickPathExtent, in WriteOneJNGImage()
12845 "%s",jpeg_image->filename); in WriteOneJNGImage()
12854 /* To do: check bit depth of PNG alpha channel */ in WriteOneJNGImage()
12857 if (image_info->type != TrueColorAlphaType && image_info->type != in WriteOneJNGImage()
12859 jng_color_type-=2; in WriteOneJNGImage()
12872 " JNG Alpha Depth = %d",jng_alpha_sample_depth); in WriteOneJNGImage()
12895 (void) CopyMagickString(jpeg_image_info->magick,"PNG", in WriteOneJNGImage()
12897 (void) CopyMagickString(jpeg_image->magick,"PNG",MagickPathExtent); in WriteOneJNGImage()
12898 jpeg_image_info->interlace=NoInterlace; in WriteOneJNGImage()
12901 (void) SetImageArtifact(jpeg_image,"png:exclude-chunks","all"); in WriteOneJNGImage()
12906 /* Retrieve sample depth used */ in WriteOneJNGImage()
12907 value=GetImageProperty(jpeg_image,"png:bit-depth-written",exception); in WriteOneJNGImage()
12920 (void) CopyMagickString(jpeg_image_info->magick,"JPEG", in WriteOneJNGImage()
12922 (void) CopyMagickString(jpeg_image->magick,"JPEG",MagickPathExtent); in WriteOneJNGImage()
12923 jpeg_image_info->interlace=NoInterlace; in WriteOneJNGImage()
12940 (void) RelinquishUniqueFileResource(jpeg_image_info->filename); in WriteOneJNGImage()
12948 PNGLong(chunk+4,(png_uint_32) image->columns); in WriteOneJNGImage()
12949 PNGLong(chunk+8,(png_uint_32) image->rows); in WriteOneJNGImage()
12951 chunk[13]=8; /* sample depth */ in WriteOneJNGImage()
12953 chunk[15]=(unsigned char) (image_info->interlace == NoInterlace ? 0 : 8); in WriteOneJNGImage()
12963 " JNG width:%15lu",(unsigned long) image->columns); in WriteOneJNGImage()
12966 " JNG height:%14lu",(unsigned long) image->rows); in WriteOneJNGImage()
12972 " JNG sample depth:%8d",8); in WriteOneJNGImage()
12981 " JNG alpha depth:%9d",jng_alpha_sample_depth); in WriteOneJNGImage()
13015 (void) WriteBlobMSBULong(image,(size_t) (num_bytes-4L)); in WriteOneJNGImage()
13017 LogPNGChunk(logging,mng_bKGD,(size_t) (num_bytes-4L)); in WriteOneJNGImage()
13018 red=ScaleQuantumToChar(image->background_color.red); in WriteOneJNGImage()
13019 green=ScaleQuantumToChar(image->background_color.green); in WriteOneJNGImage()
13020 blue=ScaleQuantumToChar(image->background_color.blue); in WriteOneJNGImage()
13031 if ((image->colorspace == sRGBColorspace || image->rendering_intent)) in WriteOneJNGImage()
13040 if (image->rendering_intent != UndefinedIntent) in WriteOneJNGImage()
13043 (image->rendering_intent)); in WriteOneJNGImage()
13055 if (image->gamma != 0.0) in WriteOneJNGImage()
13063 PNGLong(chunk+4,(png_uint_32) (100000*image->gamma+0.5)); in WriteOneJNGImage()
13068 if ((mng_info->equal_chrms == MagickFalse) && in WriteOneJNGImage()
13069 (image->chromaticity.red_primary.x != 0.0)) in WriteOneJNGImage()
13080 primary=image->chromaticity.white_point; in WriteOneJNGImage()
13083 primary=image->chromaticity.red_primary; in WriteOneJNGImage()
13086 primary=image->chromaticity.green_primary; in WriteOneJNGImage()
13089 primary=image->chromaticity.blue_primary; in WriteOneJNGImage()
13097 if (image->resolution.x && image->resolution.y && !mng_info->equal_physs) in WriteOneJNGImage()
13105 if (image->units == PixelsPerInchResolution) in WriteOneJNGImage()
13108 (image->resolution.x*100.0/2.54+0.5)); in WriteOneJNGImage()
13111 (image->resolution.y*100.0/2.54+0.5)); in WriteOneJNGImage()
13118 if (image->units == PixelsPerCentimeterResolution) in WriteOneJNGImage()
13121 (image->resolution.x*100.0+0.5)); in WriteOneJNGImage()
13124 (image->resolution.y*100.0+0.5)); in WriteOneJNGImage()
13131 PNGLong(chunk+4,(png_uint_32) (image->resolution.x+0.5)); in WriteOneJNGImage()
13132 PNGLong(chunk+8,(png_uint_32) (image->resolution.y+0.5)); in WriteOneJNGImage()
13140 if (mng_info->write_mng == 0 && (image->page.x || image->page.y)) in WriteOneJNGImage()
13148 PNGsLong(chunk+4,(ssize_t) (image->page.x)); in WriteOneJNGImage()
13149 PNGsLong(chunk+8,(ssize_t) (image->page.y)); in WriteOneJNGImage()
13237 (void) CopyMagickString(jpeg_image->magick,"JPEG",MagickPathExtent); in WriteOneJNGImage()
13239 (void) AcquireUniqueFilename(jpeg_image->filename); in WriteOneJNGImage()
13240 (void) FormatLocaleString(jpeg_image_info->filename,MagickPathExtent,"%s", in WriteOneJNGImage()
13241 jpeg_image->filename); in WriteOneJNGImage()
13248 " Created jpeg_image, %.20g x %.20g.",(double) jpeg_image->columns, in WriteOneJNGImage()
13249 (double) jpeg_image->rows); in WriteOneJNGImage()
13255 jpeg_image_info->type=GrayscaleType; in WriteOneJNGImage()
13257 jpeg_image_info->quality=jng_quality; in WriteOneJNGImage()
13258 jpeg_image->quality=jng_quality; in WriteOneJNGImage()
13259 (void) CopyMagickString(jpeg_image_info->magick,"JPEG",MagickPathExtent); in WriteOneJNGImage()
13260 (void) CopyMagickString(jpeg_image->magick,"JPEG",MagickPathExtent); in WriteOneJNGImage()
13288 (void) RelinquishUniqueFileResource(jpeg_image_info->filename); in WriteOneJNGImage()
13319 % JNG support written by Glenn Randers-Pehrson, glennrp@image...
13350 assert(image_info->signature == MagickCoreSignature); in WriteJNGImage()
13352 assert(image->signature == MagickCoreSignature); in WriteJNGImage()
13353 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); in WriteJNGImage()
13358 if ((image->columns > 65535UL) || (image->rows > 65535UL)) in WriteJNGImage()
13371 mng_info->image=image; in WriteJNGImage()
13434 if (image_info->verbose) in WriteMNGImage()
13435 printf("Your PNG library (libpng-%s) is rather old.\n", in WriteMNGImage()
13443 assert(image_info->signature == MagickCoreSignature); in WriteMNGImage()
13445 assert(image->signature == MagickCoreSignature); in WriteMNGImage()
13446 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); in WriteMNGImage()
13462 mng_info->image=image; in WriteMNGImage()
13463 write_mng=LocaleCompare(image_info->magick,"MNG") == 0; in WriteMNGImage()
13471 * To do: check -define png:bit_depth and png:color_type as well, in WriteMNGImage()
13476 mng_info->write_png8=LocaleCompare(image_info->magick,"PNG8") == 0; in WriteMNGImage()
13477 mng_info->write_png24=LocaleCompare(image_info->magick,"PNG24") == 0; in WriteMNGImage()
13478 mng_info->write_png32=LocaleCompare(image_info->magick,"PNG32") == 0; in WriteMNGImage()
13481 if (image_info->compression == JPEGCompression) in WriteMNGImage()
13484 mng_info->adjoin=image_info->adjoin && in WriteMNGImage()
13495 " Image_info depth: %.20g, Type: %d", in WriteMNGImage()
13496 (double) image_info->depth, image_info->type); in WriteMNGImage()
13503 " Scene: %.20g\n, Image depth: %.20g", in WriteMNGImage()
13504 (double) scene++, (double) p->depth); in WriteMNGImage()
13506 if (p->alpha_trait != UndefinedPixelTrait) in WriteMNGImage()
13514 if (p->storage_class == PseudoClass) in WriteMNGImage()
13522 if (p->colors) in WriteMNGImage()
13524 " Number of colors: %.20g",(double) p->colors); in WriteMNGImage()
13530 if (mng_info->adjoin == MagickFalse) in WriteMNGImage()
13542 mng_info->framing_mode=1; in WriteMNGImage()
13543 mng_info->old_framing_mode=1; in WriteMNGImage()
13546 if (image_info->page != (char *) NULL) in WriteMNGImage()
13551 SetGeometry(image,&mng_info->page); in WriteMNGImage()
13552 (void) ParseMetaGeometry(image_info->page,&mng_info->page.x, in WriteMNGImage()
13553 &mng_info->page.y,&mng_info->page.width,&mng_info->page.height); in WriteMNGImage()
13568 mng_info->page=image->page; in WriteMNGImage()
13570 if (mng_info->page.width || mng_info->page.height) in WriteMNGImage()
13575 initial_delay=image->delay; in WriteMNGImage()
13577 mng_info->equal_chrms=image->chromaticity.red_primary.x != 0.0; in WriteMNGImage()
13578 mng_info->equal_physs=MagickTrue, in WriteMNGImage()
13579 mng_info->equal_gammas=MagickTrue; in WriteMNGImage()
13580 mng_info->equal_srgbs=MagickTrue; in WriteMNGImage()
13581 mng_info->equal_backgrounds=MagickTrue; in WriteMNGImage()
13586 mng_info->equal_palettes=MagickFalse; in WriteMNGImage()
13593 if ((next_image->columns+next_image->page.x) > mng_info->page.width) in WriteMNGImage()
13594 mng_info->page.width=next_image->columns+next_image->page.x; in WriteMNGImage()
13596 if ((next_image->rows+next_image->page.y) > mng_info->page.height) in WriteMNGImage()
13597 mng_info->page.height=next_image->rows+next_image->page.y; in WriteMNGImage()
13600 if (next_image->page.x || next_image->page.y) in WriteMNGImage()
13603 if (next_image->alpha_trait != UndefinedPixelTrait) in WriteMNGImage()
13606 if ((int) next_image->dispose >= BackgroundDispose) in WriteMNGImage()
13607 if ((next_image->alpha_trait != UndefinedPixelTrait) || in WriteMNGImage()
13608 next_image->page.x || next_image->page.y || in WriteMNGImage()
13609 ((next_image->columns < mng_info->page.width) && in WriteMNGImage()
13610 (next_image->rows < mng_info->page.height))) in WriteMNGImage()
13611 mng_info->need_fram=MagickTrue; in WriteMNGImage()
13613 if (next_image->iterations) in WriteMNGImage()
13616 final_delay=next_image->delay; in WriteMNGImage()
13619 next_image->ticks_per_second) in WriteMNGImage()
13620 mng_info->need_fram=1; in WriteMNGImage()
13627 if (image->alpha_trait != UndefinedPixelTrait) in WriteMNGImage()
13634 mng_info->equal_palettes=PalettesAreEqual(image,next_image); in WriteMNGImage()
13636 use_global_plte=mng_info->equal_palettes; in WriteMNGImage()
13637 need_local_plte=!mng_info->equal_palettes; in WriteMNGImage()
13642 if (next_image->background_color.red != in WriteMNGImage()
13643 next_image->next->background_color.red || in WriteMNGImage()
13644 next_image->background_color.green != in WriteMNGImage()
13645 next_image->next->background_color.green || in WriteMNGImage()
13646 next_image->background_color.blue != in WriteMNGImage()
13647 next_image->next->background_color.blue) in WriteMNGImage()
13648 mng_info->equal_backgrounds=MagickFalse; in WriteMNGImage()
13650 if (next_image->gamma != next_image->next->gamma) in WriteMNGImage()
13651 mng_info->equal_gammas=MagickFalse; in WriteMNGImage()
13653 if (next_image->rendering_intent != in WriteMNGImage()
13654 next_image->next->rendering_intent) in WriteMNGImage()
13655 mng_info->equal_srgbs=MagickFalse; in WriteMNGImage()
13657 if ((next_image->units != next_image->next->units) || in WriteMNGImage()
13658 (next_image->resolution.x != next_image->next->resolution.x) || in WriteMNGImage()
13659 (next_image->resolution.y != next_image->next->resolution.y)) in WriteMNGImage()
13660 mng_info->equal_physs=MagickFalse; in WriteMNGImage()
13662 if (mng_info->equal_chrms) in WriteMNGImage()
13664 if (next_image->chromaticity.red_primary.x != in WriteMNGImage()
13665 next_image->next->chromaticity.red_primary.x || in WriteMNGImage()
13666 next_image->chromaticity.red_primary.y != in WriteMNGImage()
13667 next_image->next->chromaticity.red_primary.y || in WriteMNGImage()
13668 next_image->chromaticity.green_primary.x != in WriteMNGImage()
13669 next_image->next->chromaticity.green_primary.x || in WriteMNGImage()
13670 next_image->chromaticity.green_primary.y != in WriteMNGImage()
13671 next_image->next->chromaticity.green_primary.y || in WriteMNGImage()
13672 next_image->chromaticity.blue_primary.x != in WriteMNGImage()
13673 next_image->next->chromaticity.blue_primary.x || in WriteMNGImage()
13674 next_image->chromaticity.blue_primary.y != in WriteMNGImage()
13675 next_image->next->chromaticity.blue_primary.y || in WriteMNGImage()
13676 next_image->chromaticity.white_point.x != in WriteMNGImage()
13677 next_image->next->chromaticity.white_point.x || in WriteMNGImage()
13678 next_image->chromaticity.white_point.y != in WriteMNGImage()
13679 next_image->next->chromaticity.white_point.y) in WriteMNGImage()
13680 mng_info->equal_chrms=MagickFalse; in WriteMNGImage()
13688 mng_info->equal_backgrounds=MagickFalse; in WriteMNGImage()
13689 mng_info->equal_chrms=MagickFalse; in WriteMNGImage()
13690 mng_info->equal_gammas=MagickFalse; in WriteMNGImage()
13691 mng_info->equal_srgbs=MagickFalse; in WriteMNGImage()
13692 mng_info->equal_physs=MagickFalse; in WriteMNGImage()
13700 if (mng_info->need_fram == MagickFalse) in WriteMNGImage()
13711 It's probably a GIF with loop; don't run it *too* fast. in WriteMNGImage()
13713 if (mng_info->adjoin) in WriteMNGImage()
13723 mng_info->ticks_per_second=0; in WriteMNGImage()
13726 mng_info->ticks_per_second=(png_uint_32) in WriteMNGImage()
13727 (image->ticks_per_second/final_delay); in WriteMNGImage()
13729 mng_info->ticks_per_second=2; in WriteMNGImage()
13732 mng_info->ticks_per_second=1; in WriteMNGImage()
13735 mng_info->need_fram=MagickTrue; in WriteMNGImage()
13740 (final_delay != (size_t) image->ticks_per_second)) in WriteMNGImage()
13741 mng_info->need_fram=MagickTrue; /* make it exact; cannot be VLC */ in WriteMNGImage()
13744 if (mng_info->need_fram != MagickFalse) in WriteMNGImage()
13745 mng_info->ticks_per_second=image->ticks_per_second; in WriteMNGImage()
13758 PNGLong(chunk+4,(png_uint_32) mng_info->page.width); in WriteMNGImage()
13759 PNGLong(chunk+8,(png_uint_32) mng_info->page.height); in WriteMNGImage()
13760 PNGLong(chunk+12,mng_info->ticks_per_second); in WriteMNGImage()
13768 if (need_defi || mng_info->need_fram || use_global_plte) in WriteMNGImage()
13777 if (need_defi || mng_info->need_fram || use_global_plte) in WriteMNGImage()
13789 if (need_defi || mng_info->need_fram || use_global_plte) in WriteMNGImage()
13798 if (need_defi || mng_info->need_fram || use_global_plte) in WriteMNGImage()
13807 option=GetImageOption(image_info,"mng:need-cacheoff"); in WriteMNGImage()
13825 (image->iterations != 1)) in WriteMNGImage()
13835 PNGLong(chunk+6,(png_uint_32) (mng_info->ticks_per_second* in WriteMNGImage()
13836 final_delay/MagickMax(image->ticks_per_second,1))); in WriteMNGImage()
13838 if (image->iterations == 0) in WriteMNGImage()
13842 PNGLong(chunk+10,(png_uint_32) image->iterations); in WriteMNGImage()
13847 " TERM delay: %.20g",(double) (mng_info->ticks_per_second* in WriteMNGImage()
13848 final_delay/MagickMax(image->ticks_per_second,1))); in WriteMNGImage()
13850 if (image->iterations == 0) in WriteMNGImage()
13856 " Image iterations: %.20g",(double) image->iterations); in WriteMNGImage()
13864 if ((image->colorspace == sRGBColorspace || image->rendering_intent) && in WriteMNGImage()
13865 mng_info->equal_srgbs) in WriteMNGImage()
13874 if (image->rendering_intent != UndefinedIntent) in WriteMNGImage()
13877 (image->rendering_intent)); in WriteMNGImage()
13886 mng_info->have_write_global_srgb=MagickTrue; in WriteMNGImage()
13891 if (image->gamma && mng_info->equal_gammas) in WriteMNGImage()
13899 PNGLong(chunk+4,(png_uint_32) (100000*image->gamma+0.5)); in WriteMNGImage()
13902 mng_info->have_write_global_gama=MagickTrue; in WriteMNGImage()
13904 if (mng_info->equal_chrms) in WriteMNGImage()
13915 primary=image->chromaticity.white_point; in WriteMNGImage()
13918 primary=image->chromaticity.red_primary; in WriteMNGImage()
13921 primary=image->chromaticity.green_primary; in WriteMNGImage()
13924 primary=image->chromaticity.blue_primary; in WriteMNGImage()
13929 mng_info->have_write_global_chrm=MagickTrue; in WriteMNGImage()
13932 if (image->resolution.x && image->resolution.y && mng_info->equal_physs) in WriteMNGImage()
13941 if (image->units == PixelsPerInchResolution) in WriteMNGImage()
13944 (image->resolution.x*100.0/2.54+0.5)); in WriteMNGImage()
13947 (image->resolution.y*100.0/2.54+0.5)); in WriteMNGImage()
13954 if (image->units == PixelsPerCentimeterResolution) in WriteMNGImage()
13957 (image->resolution.x*100.0+0.5)); in WriteMNGImage()
13960 (image->resolution.y*100.0+0.5)); in WriteMNGImage()
13967 PNGLong(chunk+4,(png_uint_32) (image->resolution.x+0.5)); in WriteMNGImage()
13968 PNGLong(chunk+8,(png_uint_32) (image->resolution.y+0.5)); in WriteMNGImage()
13979 if (write_mng && ((image->alpha_trait != UndefinedPixelTrait) || in WriteMNGImage()
13980 image->page.x > 0 || image->page.y > 0 || (image->page.width && in WriteMNGImage()
13981 (image->page.width+image->page.x < mng_info->page.width)) in WriteMNGImage()
13982 || (image->page.height && (image->page.height+image->page.y in WriteMNGImage()
13983 < mng_info->page.height)))) in WriteMNGImage()
13988 red=ScaleQuantumToShort(image->background_color.red); in WriteMNGImage()
13989 green=ScaleQuantumToShort(image->background_color.green); in WriteMNGImage()
13990 blue=ScaleQuantumToShort(image->background_color.blue); in WriteMNGImage()
13996 if (mng_info->equal_backgrounds) in WriteMNGImage()
14008 (image->storage_class == PseudoClass) && in WriteMNGImage()
14017 data_length=3*image->colors; in WriteMNGImage()
14022 for (i=0; i < (ssize_t) image->colors; i++) in WriteMNGImage()
14025 image->colormap[i].red) & 0xff); in WriteMNGImage()
14027 image->colormap[i].green) & 0xff); in WriteMNGImage()
14029 image->colormap[i].blue) & 0xff); in WriteMNGImage()
14034 mng_info->have_write_global_plte=MagickTrue; in WriteMNGImage()
14039 mng_info->delay=0; in WriteMNGImage()
14042 mng_info->equal_palettes=MagickFalse; in WriteMNGImage()
14047 if (mng_info->adjoin) in WriteMNGImage()
14057 if (mng_info->IsPalette) in WriteMNGImage()
14063 mng_info->have_write_global_plte=mng_info->equal_palettes; in WriteMNGImage()
14064 mng_info->equal_palettes=PalettesAreEqual(image,image->next); in WriteMNGImage()
14065 if (mng_info->equal_palettes && !mng_info->have_write_global_plte) in WriteMNGImage()
14073 data_length=3*image->colors; in WriteMNGImage()
14078 for (i=0; i < (ssize_t) image->colors; i++) in WriteMNGImage()
14080 chunk[4+i*3]=ScaleQuantumToChar(image->colormap[i].red); in WriteMNGImage()
14081 chunk[5+i*3]=ScaleQuantumToChar(image->colormap[i].green); in WriteMNGImage()
14082 chunk[6+i*3]=ScaleQuantumToChar(image->colormap[i].blue); in WriteMNGImage()
14088 mng_info->have_write_global_plte=MagickTrue; in WriteMNGImage()
14092 mng_info->have_write_global_plte=MagickFalse; in WriteMNGImage()
14103 previous_x=mng_info->page.x; in WriteMNGImage()
14104 previous_y=mng_info->page.y; in WriteMNGImage()
14111 mng_info->page=image->page; in WriteMNGImage()
14112 if ((mng_info->page.x != previous_x) || in WriteMNGImage()
14113 (mng_info->page.y != previous_y)) in WriteMNGImage()
14122 PNGLong(chunk+8,(png_uint_32) mng_info->page.x); in WriteMNGImage()
14123 PNGLong(chunk+12,(png_uint_32) mng_info->page.y); in WriteMNGImage()
14130 mng_info->write_mng=write_mng; in WriteMNGImage()
14132 if ((int) image->dispose >= 3) in WriteMNGImage()
14133 mng_info->framing_mode=3; in WriteMNGImage()
14135 if (mng_info->need_fram && mng_info->adjoin && in WriteMNGImage()
14136 ((image->delay != mng_info->delay) || in WriteMNGImage()
14137 (mng_info->framing_mode != mng_info->old_framing_mode))) in WriteMNGImage()
14139 if (image->delay == mng_info->delay) in WriteMNGImage()
14142 Write a MNG FRAM chunk with the new framing mode. in WriteMNGImage()
14147 chunk[4]=(unsigned char) mng_info->framing_mode; in WriteMNGImage()
14154 Write a MNG FRAM chunk with the delay. in WriteMNGImage()
14159 chunk[4]=(unsigned char) mng_info->framing_mode; in WriteMNGImage()
14166 ((mng_info->ticks_per_second* in WriteMNGImage()
14167 image->delay)/MagickMax(image->ticks_per_second,1))); in WriteMNGImage()
14170 mng_info->delay=(png_uint_32) image->delay; in WriteMNGImage()
14172 mng_info->old_framing_mode=mng_info->framing_mode; in WriteMNGImage()
14176 if (image_info->compression == JPEGCompression) in WriteMNGImage()
14186 write_info->compression=UndefinedCompression; in WriteMNGImage()
14197 mng_info->need_blob = MagickFalse; in WriteMNGImage()
14198 mng_info->ping_preserve_colormap = MagickFalse; in WriteMNGImage()
14201 mng_info->ping_exclude_bKGD=MagickTrue; in WriteMNGImage()
14202 mng_info->ping_exclude_caNv=MagickTrue; in WriteMNGImage()
14203 mng_info->ping_exclude_cHRM=MagickTrue; in WriteMNGImage()
14204 mng_info->ping_exclude_date=MagickTrue; in WriteMNGImage()
14205 mng_info->ping_exclude_EXIF=MagickTrue; in WriteMNGImage()
14206 mng_info->ping_exclude_gAMA=MagickTrue; in WriteMNGImage()
14207 mng_info->ping_exclude_iCCP=MagickTrue; in WriteMNGImage()
14208 /* mng_info->ping_exclude_iTXt=MagickTrue; */ in WriteMNGImage()
14209 mng_info->ping_exclude_oFFs=MagickTrue; in WriteMNGImage()
14210 mng_info->ping_exclude_pHYs=MagickTrue; in WriteMNGImage()
14211 mng_info->ping_exclude_sRGB=MagickTrue; in WriteMNGImage()
14212 mng_info->ping_exclude_tEXt=MagickTrue; in WriteMNGImage()
14213 mng_info->ping_exclude_tRNS=MagickTrue; in WriteMNGImage()
14214 mng_info->ping_exclude_zCCP=MagickTrue; in WriteMNGImage()
14215 mng_info->ping_exclude_zTXt=MagickTrue; in WriteMNGImage()
14235 } while (mng_info->adjoin); in WriteMNGImage()
14267 printf("Your PNG library is too old: You have libpng-%s\n", in WritePNGImage()
14271 image_info->filename); in WritePNGImage()