*name='\0';
sub_number=1;
if (*name == '#')
- sub_number=StringToLong(&name[1]);
+ sub_number=(ssize_t) StringToLong(&name[1]);
sub_number=MagickMax(sub_number,1L);
resource=(char *) NULL;
status=MagickFalse;
format;
q=(unsigned char *) (directory+2+(12*entry));
- tag_value=(ssize_t) ReadPropertyShort(endian,q)+tag_offset;
+ tag_value=(ssize_t) (ReadPropertyShort(endian,q)+tag_offset);
format=(size_t) ReadPropertyShort(endian,q+2);
if (format >= (sizeof(tag_bytes)/sizeof(*tag_bytes)))
break;
case EXIF_FMT_BYTE:
case EXIF_FMT_UNDEFINED:
{
- EXIFMultipleValues(1,"%lu",(size_t)
+ EXIFMultipleValues(1,"%.20g",(double)
(*(unsigned char *) p1));
break;
}
case EXIF_FMT_SBYTE:
{
- EXIFMultipleValues(1,"%ld",(ssize_t) (*(signed char *) p1));
+ EXIFMultipleValues(1,"%.20g",(double) (*(signed char *) p1));
break;
}
case EXIF_FMT_SSHORT:
}
case EXIF_FMT_ULONG:
{
- EXIFMultipleValues(4,"%lu",ReadPropertyLong(endian,p1));
+ EXIFMultipleValues(4,"%.20g",(double)
+ ReadPropertyLong(endian,p1));
break;
}
case EXIF_FMT_SLONG:
{
- EXIFMultipleValues(4,"%ld",ReadPropertyLong(endian,p1));
+ EXIFMultipleValues(4,"%.20g",(double)
+ ReadPropertyLong(endian,p1));
break;
}
case EXIF_FMT_URATIONAL:
{
- EXIFMultipleFractions(8,"%ld/%ld",ReadPropertyLong(endian,p1),
+ EXIFMultipleFractions(8,"%.20g/%.20g",(double)
+ ReadPropertyLong(endian,p1),(double)
ReadPropertyLong(endian,p1+4));
break;
}
case EXIF_FMT_SRATIONAL:
{
- EXIFMultipleFractions(8,"%ld/%ld",ReadPropertyLong(endian,p1),
+ EXIFMultipleFractions(8,"%.20g/%.20g",(double)
+ ReadPropertyLong(endian,p1),(double)
ReadPropertyLong(endian,p1+4));
break;
}
{
if (tag_value < 0x10000)
(void) FormatMagickString(key,MaxTextExtent,"#%04lx",
- tag_value);
+ (unsigned long) tag_value);
else
if (tag_value < 0x20000)
(void) FormatMagickString(key,MaxTextExtent,"@%04lx",
- tag_value & 0xffff);
+ (unsigned long) (tag_value & 0xffff));
else
(void) FormatMagickString(key,MaxTextExtent,"unknown");
break;
"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
(void) ConcatenateString(&path,message);
(void) FormatMagickString(message,MaxTextExtent,
- "<svg width=\"%lu\" height=\"%lu\">\n",columns,rows);
+ "<svg width=\"%.20g\" height=\"%.20g\">\n",(double) columns,(double) rows);
(void) ConcatenateString(&path,message);
(void) FormatMagickString(message,MaxTextExtent,"<g>\n");
(void) ConcatenateString(&path,message);
image->properties);
return(p);
}
- if ((image->properties != (void *) NULL) &&
- (LocaleNCompare("fx:",property,3) != 0))
+ if (image->properties != (void *) NULL)
{
p=(const char *) GetValueFromSplayTree((SplayTreeInfo *)
image->properties,property);
char
value[MaxTextExtent];
- (void) FormatMagickString(value,MaxTextExtent,"%g",(double)
- alpha);
+ (void) FormatMagickString(value,MaxTextExtent,"%.*g",
+ GetMagickPrecision(),(double) alpha);
(void) SetImageProperty((Image *) image,property,value);
}
p=(const char *) GetValueFromSplayTree((SplayTreeInfo *)
if (IsGrayImage(image,&image->exception) != MagickFalse)
colorspace=GRAYColorspace;
(void) FormatMagickString(value,MaxTextExtent,"%s",
- MagickOptionToMnemonic(MagickColorspaceOptions,(ssize_t) colorspace));
+ MagickOptionToMnemonic(MagickColorspaceOptions,(ssize_t)
+ colorspace));
break;
}
break;
{
if (LocaleNCompare("depth",property,5) == 0)
{
- (void) FormatMagickString(value,MaxTextExtent,"%lu",image->depth);
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+ image->depth);
break;
}
if (LocaleNCompare("directory",property,9) == 0)
if (LocaleNCompare("group",property,5) == 0)
{
(void) FormatMagickString(value,MaxTextExtent,"0x%lx",
- image_info->group);
+ (unsigned long) image_info->group);
break;
}
break;
{
if (LocaleNCompare("height",property,6) == 0)
{
- (void) FormatMagickString(value,MaxTextExtent,"%lu",
- image->magick_rows != 0 ? image->magick_rows : 256UL);
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",
+ image->magick_rows != 0 ? (double) image->magick_rows : 256.0);
break;
}
break;
(void) GetImageChannelRange(image,image_info->channel,&minimum,
&maximum,&image->exception);
- (void) FormatMagickString(value,MaxTextExtent,"%g",maximum);
+ (void) FormatMagickString(value,MaxTextExtent,"%.*g",
+ GetMagickPrecision(),maximum);
break;
}
if (LocaleNCompare("mean",property,4) == 0)
(void) GetImageChannelRange(image,image_info->channel,&minimum,
&maximum,&image->exception);
- (void) FormatMagickString(value,MaxTextExtent,"%g",minimum);
+ (void) FormatMagickString(value,MaxTextExtent,"%.*g",
+ GetMagickPrecision(),minimum);
break;
}
break;
p=image;
for (page=1; GetPreviousImageInList(p) != (Image *) NULL; page++)
p=GetPreviousImageInList(p);
- (void) FormatMagickString(value,MaxTextExtent,"%lu",page);
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+ page);
break;
}
break;
}
if (LocaleNCompare("scenes",property,6) == 0)
{
- (void) FormatMagickString(value,MaxTextExtent,"%lu",
- (size_t) GetImageListLength(image));
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+ GetImageListLength(image));
break;
}
if (LocaleNCompare("scene",property,5) == 0)
{
- (void) FormatMagickString(value,MaxTextExtent,"%lu",image->scene);
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+ image->scene);
if (image_info->number_scenes != 0)
- (void) FormatMagickString(value,MaxTextExtent,"%lu",
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
image_info->scene);
break;
}
{
if (LocaleNCompare("width",property,5) == 0)
{
- (void) FormatMagickString(value,MaxTextExtent,"%lu",
- image->magick_columns != 0 ? image->magick_columns : 256UL);
+ (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+ (image->magick_columns != 0 ? image->magick_columns : 256));
break;
}
break;
/*
File size.
*/
- (void) FormatMagickString(format,MaxTextExtent,"%lu",(size_t)
+ (void) FormatMagickString(format,MaxTextExtent,"%.20g",(double)
image->extent);
if (image->extent != (MagickSizeType) ((size_t) image->extent))
(void) FormatMagickSize(image->extent,MagickFalse,format);
/*
Image geometry.
*/
- q+=FormatMagickString(q,extent,"%lux%lu%+ld%+ld",image->page.width,
- image->page.height,image->page.x,image->page.y);
+ q+=FormatMagickString(q,extent,"%.20gx%.20g%+.20g%+.20g",(double)
+ image->page.width,(double) image->page.height,(double)
+ image->page.x,(double) image->page.y);
break;
}
case 'h':
/*
Image height.
*/
- q+=FormatMagickString(q,extent,"%lu",image->rows != 0 ? image->rows :
- image->magick_rows);
+ q+=FormatMagickString(q,extent,"%.20g",(double)
+ (image->rows != 0 ? image->rows : image->magick_rows));
break;
}
case 'i':
/*
Number of unique colors.
*/
- q+=FormatMagickString(q,extent,"%lu",GetNumberColors(image,
- (FILE *) NULL,&image->exception));
+ q+=FormatMagickString(q,extent,"%.20g",(double)
+ GetNumberColors(image,(FILE *) NULL,&image->exception));
break;
}
case 'l':
/*
Number of images in the list.
*/
- q+=FormatMagickString(q,extent,"%lu",(size_t)
+ q+=FormatMagickString(q,extent,"%.20g",(double)
GetImageListLength(image));
break;
}
p=image;
for (page=1; GetPreviousImageInList(p) != (Image *) NULL; page++)
p=GetPreviousImageInList(p);
- q+=FormatMagickString(q,extent,"%lu",page);
+ q+=FormatMagickString(q,extent,"%.20g",(double) page);
break;
}
case 'q':
/*
Image depth.
*/
- q+=FormatMagickString(q,extent,"%lu",image->depth);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->depth);
break;
}
case 'r':
Image scene number.
*/
if (text_info->number_scenes == 0)
- q+=FormatMagickString(q,extent,"%lu",image->scene);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->scene);
else
- q+=FormatMagickString(q,extent,"%lu",text_info->scene);
+ q+=FormatMagickString(q,extent,"%.20g",(double) text_info->scene);
break;
}
case 'u':
/*
Image width.
*/
- q+=FormatMagickString(q,extent,"%lu",image->columns != 0 ?
- image->columns : image->magick_columns);
+ q+=FormatMagickString(q,extent,"%.20g",(double)
+ (image->columns != 0 ? image->columns : image->magick_columns));
break;
}
case 'x':
Image horizontal resolution.
*/
q+=FormatMagickString(q,extent,"%g %s",image->x_resolution,
- MagickOptionToMnemonic(MagickResolutionOptions,(ssize_t) image->units));
+ MagickOptionToMnemonic(MagickResolutionOptions,(ssize_t)
+ image->units));
break;
}
case 'y':
Image vertical resolution.
*/
q+=FormatMagickString(q,extent,"%g %s",image->y_resolution,
- MagickOptionToMnemonic(MagickResolutionOptions,(ssize_t) image->units));
+ MagickOptionToMnemonic(MagickResolutionOptions,(ssize_t)
+ image->units));
break;
}
case 'z':
/*
Image depth.
*/
- q+=FormatMagickString(q,extent,"%lu",image->depth);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->depth);
break;
}
case 'A':
}
case 'G':
{
- q+=FormatMagickString(q,extent,"%lux%lu",image->magick_columns,
- image->magick_rows);
+ q+=FormatMagickString(q,extent,"%.20gx%.20g",(double)
+ image->magick_columns,(double) image->magick_rows);
break;
}
case 'H':
{
- q+=FormatMagickString(q,extent,"%ld",image->page.height);
+ q+=FormatMagickString(q,extent,"%.20g",(double)
+ image->page.height);
break;
}
case 'O':
{
- q+=FormatMagickString(q,extent,"%+ld%+ld",image->page.x,image->page.y);
+ q+=FormatMagickString(q,extent,"%+ld%+ld",(long) image->page.x,
+ (long) image->page.y);
break;
}
case 'P':
{
- q+=FormatMagickString(q,extent,"%lux%lu",image->page.width,
- image->page.height);
+ q+=FormatMagickString(q,extent,"%.20gx%.20g",(double) image->page.width,
+ (double) image->page.height);
break;
}
case 'Q':
{
- q+=FormatMagickString(q,extent,"%lu",image->quality);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->quality);
break;
}
case 'S':
if (text_info->number_scenes == 0)
q+=CopyMagickString(q,"2147483647",extent);
else
- q+=FormatMagickString(q,extent,"%lu",text_info->scene+
- text_info->number_scenes);
+ q+=FormatMagickString(q,extent,"%.20g",(double)
+ (text_info->scene+text_info->number_scenes));
break;
}
case 'T':
{
- q+=FormatMagickString(q,extent,"%lu",image->delay);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->delay);
break;
}
case 'W':
{
- q+=FormatMagickString(q,extent,"%ld",image->page.width);
+ q+=FormatMagickString(q,extent,"%.20g",(double) image->page.width);
break;
}
case 'X':
{
- q+=FormatMagickString(q,extent,"%+ld",image->page.x);
+ q+=FormatMagickString(q,extent,"%+.20g",(double) image->page.x);
break;
}
case 'Y':
{
- q+=FormatMagickString(q,extent,"%+ld",image->page.y);
+ q+=FormatMagickString(q,extent,"%+.20g",(double) image->page.y);
break;
}
case 'Z':
Image bounding box.
*/
page=GetImageBoundingBox(image,&image->exception);
- q+=FormatMagickString(q,MaxTextExtent,"%lux%lu%+ld%+ld",page.width,
- page.height,page.x,page.y);
+ q+=FormatMagickString(q,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
+ (double) page.width,(double) page.height,(double) page.x,(double)
+ page.y);
break;
}
case '#':
MagickExport MagickBooleanType SetImageProperty(Image *image,
const char *property,const char *value)
{
+ ExceptionInfo
+ *exception;
+
MagickBooleanType
status;
if ((value == (const char *) NULL) || (*value == '\0'))
return(DeleteImageProperty(image,property));
status=MagickTrue;
+ exception=(&image->exception);
switch (*property)
{
case 'B':
case 'b':
{
+ if (LocaleCompare(property,"background") == 0)
+ {
+ (void) QueryColorDatabase(value,&image->background_color,exception);
+ break;
+ }
if (LocaleCompare(property,"bias") == 0)
{
image->bias=SiPrefixToDouble(value,QuantumRange);
if ((flags & LessValue) != 0)
{
if (image->delay < (size_t) floor(geometry_info.rho+0.5))
- image->ticks_per_second=(ssize_t) floor(geometry_info.sigma+0.5);
+ image->ticks_per_second=(ssize_t)
+ floor(geometry_info.sigma+0.5);
}
else
image->delay=(size_t) floor(geometry_info.rho+0.5);
image->ticks_per_second=(ssize_t) floor(geometry_info.sigma+0.5);
break;
}
+ if (LocaleCompare(property,"density") == 0)
+ {
+ GeometryInfo
+ geometry_info;
+
+ flags=ParseGeometry(value,&geometry_info);
+ image->x_resolution=geometry_info.rho;
+ image->y_resolution=geometry_info.sigma;
+ if ((flags & SigmaValue) == 0)
+ image->y_resolution=image->x_resolution;
+ }
if (LocaleCompare(property,"depth") == 0)
{
image->depth=StringToUnsignedLong(value);
image_info=AcquireImageInfo();
(void) CopyMagickString(image_info->filename,value,MaxTextExtent);
- (void) SetImageInfo(image_info,1,&image->exception);
- profile=FileToStringInfo(image_info->filename,~0UL,&image->exception);
+ (void) SetImageInfo(image_info,1,exception);
+ profile=FileToStringInfo(image_info->filename,~0UL,exception);
if (profile != (StringInfo *) NULL)
status=SetImageProfile(image,image_info->magick,profile);
image_info=DestroyImageInfo(image_info);
ConstantString(property),ConstantString(value));
break;
}
+ case 'U':
+ case 'u':
+ {
+ if (LocaleCompare(property,"units") == 0)
+ {
+ ssize_t
+ units;
+
+ units=ParseMagickOption(MagickResolutionOptions,MagickFalse,value);
+ if (units < 0)
+ break;
+ image->units=(ResolutionType) units;
+ break;
+ }
+ status=AddValueToSplayTree((SplayTreeInfo *) image->properties,
+ ConstantString(property),ConstantString(value));
+ break;
+ }
default:
{
status=AddValueToSplayTree((SplayTreeInfo *) image->properties,