Ignore:
Timestamp:
03/14/11 14:46:46 (2 years ago)
Author:
glennrp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ImageMagick/trunk/coders/png.c

    r3845 r3872  
    19681968    } 
    19691969#endif 
     1970 
    19701971  if (png_get_valid(ping,ping_info,PNG_INFO_PLTE)) 
    19711972    { 
     
    28842885          (void) ConcatenateMagickString(value,text[i].text,length+2); 
    28852886 
    2886           /* Don't save "density" property if we have a pHYs chunk */ 
    2887           if (LocaleCompare(text[i].key,"density") != 0 || 
    2888               !png_get_valid(ping,ping_info,PNG_INFO_pHYs)) 
     2887          /* Don't save "density" or "units" property if we have a pHYs 
     2888           * chunk 
     2889           */ 
     2890          if (!png_get_valid(ping,ping_info,PNG_INFO_pHYs) || 
     2891              (LocaleCompare(text[i].key,"density") != 0 && 
     2892              LocaleCompare(text[i].key,"units") != 0)) 
    28892893             (void) SetImageProperty(image,text[i].key,value); 
    28902894 
     
    78597863        { 
    78607864          ping_pHYs_unit_type=PNG_RESOLUTION_METER; 
    7861           ping_pHYs_x_resolution=(png_uint_32) (100.0*image->x_resolution/2.54); 
    7862           ping_pHYs_y_resolution=(png_uint_32) (100.0*image->y_resolution/2.54); 
     7865          ping_pHYs_x_resolution= 
     7866             (png_uint_32) ((100.0*image->x_resolution+0.5)/2.54); 
     7867          ping_pHYs_y_resolution= 
     7868             (png_uint_32) ((100.0*image->y_resolution+0.5)/2.54); 
    78637869        } 
    78647870 
     
    78667872        { 
    78677873          ping_pHYs_unit_type=PNG_RESOLUTION_METER; 
    7868           ping_pHYs_x_resolution=(png_uint_32) (100.0*image->x_resolution); 
    7869           ping_pHYs_y_resolution=(png_uint_32) (100.0*image->y_resolution); 
     7874          ping_pHYs_x_resolution=(png_uint_32) (100.0*image->x_resolution+0.5); 
     7875          ping_pHYs_y_resolution=(png_uint_32) (100.0*image->y_resolution+0.5); 
    78707876        } 
    78717877 
     
    78777883        } 
    78787884 
     7885      if (logging != MagickFalse) 
     7886        (void) LogMagickEvent(CoderEvent,GetMagickModule(), 
     7887          "    Set up PNG pHYs chunk: xres: %.20g, yres: %.20g, units: %d.", 
     7888          (double) ping_pHYs_x_resolution,(double) ping_pHYs_y_resolution, 
     7889          (int) ping_pHYs_unit_type); 
    78797890       ping_have_pHYs = MagickTrue; 
    78807891    } 
     
    86638674  } 
    86648675 
    8665   if (ping_exclude_iCCP == MagickFalse || ping_exclude_zCCP == MagickFalse) 
     8676  if ((ping_exclude_tEXt == MagickFalse || ping_exclude_zTXt == MagickFalse) && 
     8677     (ping_exclude_iCCP == MagickFalse || ping_exclude_zCCP == MagickFalse)) 
    86668678    { 
    86678679      ResetImageProfileIterator(image); 
     
    89158927             ping_pHYs_y_resolution, 
    89168928             ping_pHYs_unit_type); 
     8929 
     8930          if (logging) 
     8931            { 
     8932              (void) LogMagickEvent(CoderEvent,GetMagickModule(), 
     8933                   "    Setting up pHYs chunk"); 
     8934              (void) LogMagickEvent(CoderEvent,GetMagickModule(), 
     8935                   "      x_resolution=%lu", 
     8936                   (unsigned long) ping_pHYs_x_resolution); 
     8937              (void) LogMagickEvent(CoderEvent,GetMagickModule(), 
     8938                   "      y_resolution=%lu", 
     8939                   (unsigned long) ping_pHYs_y_resolution); 
     8940              (void) LogMagickEvent(CoderEvent,GetMagickModule(), 
     8941                   "      unit_type=%lu", 
     8942                   (unsigned long) ping_pHYs_unit_type); 
     8943            } 
    89178944        } 
    89188945    } 
     
    93899416    Generate text chunks. 
    93909417  */ 
    9391   if (ping_exclude_tEXt == MagickFalse && ping_exclude_zTXt == MagickFalse) 
     9418  if (ping_exclude_tEXt == MagickFalse || ping_exclude_zTXt == MagickFalse) 
    93929419  { 
    93939420    ResetImagePropertyIterator(image); 
     
    93999426 
    94009427      value=GetImageProperty(image,property); 
    9401       if (LocaleCompare(property,"density") != 0 || 
    9402           ping_exclude_pHYs != MagickFalse) 
     9428      if (ping_exclude_pHYs != MagickFalse       || 
     9429          LocaleCompare(property,"density") != 0 || 
     9430          LocaleCompare(property,"units") != 0) 
    94039431        { 
    94049432        if (value != (const char *) NULL) 
Note: See TracChangeset for help on using the changeset viewer.