diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 35df759..d57dd7f 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -1296,7 +1296,7 @@
glyph.id=FT_Get_Char_Index(face,'?');
if ((glyph.id != 0) && (last_glyph.id != 0))
{
- if (draw_info->kerning != 0.0)
+ if (fabs(draw_info->kerning) >= MagickEpsilon)
origin.x+=(FT_Pos) (64.0*direction*draw_info->kerning);
else
if (FT_HAS_KERNING(face))
@@ -1322,13 +1322,13 @@
if (status != 0)
continue;
if ((p == draw_info->text) || (bounds.xMin < metrics->bounds.x1))
- metrics->bounds.x1=bounds.xMin;
+ metrics->bounds.x1=(MagickRealType) bounds.xMin;
if ((p == draw_info->text) || (bounds.yMin < metrics->bounds.y1))
- metrics->bounds.y1=bounds.yMin;
+ metrics->bounds.y1=(MagickRealType) bounds.yMin;
if ((p == draw_info->text) || (bounds.xMax > metrics->bounds.x2))
- metrics->bounds.x2=bounds.xMax;
+ metrics->bounds.x2=(MagickRealType) bounds.xMax;
if ((p == draw_info->text) || (bounds.yMax > metrics->bounds.y2))
- metrics->bounds.y2=bounds.yMax;
+ metrics->bounds.y2=(MagickRealType) bounds.yMax;
if (draw_info->render != MagickFalse)
if ((draw_info->stroke.alpha != TransparentAlpha) ||
(draw_info->stroke_pattern != (Image *) NULL))
@@ -1451,14 +1451,14 @@
}
if ((bitmap->left+bitmap->bitmap.width) > metrics->width)
metrics->width=bitmap->left+bitmap->bitmap.width;
- if ((draw_info->interword_spacing != 0.0) &&
+ if ((fabs(draw_info->interword_spacing) >= MagickEpsilon) &&
(IsUTFSpace(GetUTFCode(p)) != MagickFalse) &&
(IsUTFSpace(code) == MagickFalse))
origin.x+=(FT_Pos) (64.0*direction*draw_info->interword_spacing);
else
origin.x+=(FT_Pos) (direction*face->glyph->advance.x);
- metrics->origin.x=origin.x;
- metrics->origin.y=origin.y;
+ metrics->origin.x=(MagickRealType) origin.x;
+ metrics->origin.y=(MagickRealType) origin.y;
if (last_glyph.id != 0)
FT_Done_Glyph(last_glyph.image);
last_glyph=glyph;
@@ -1669,9 +1669,9 @@
/*
Sample to compute bounding box.
*/
- identity=(draw_info->affine.sx == draw_info->affine.sy) &&
- (draw_info->affine.rx == 0.0) && (draw_info->affine.ry == 0.0) ?
- MagickTrue : MagickFalse;
+ identity=(fabs(draw_info->affine.sx-draw_info->affine.sy) < MagickEpsilon) &&
+ (fabs(draw_info->affine.rx) < MagickEpsilon) &&
+ (fabs(draw_info->affine.ry) < MagickEpsilon) ? MagickTrue : MagickFalse;
extent.x=0.0;
extent.y=0.0;
for (i=0; i <= (ssize_t) (strlen(draw_info->text)+2); i++)
@@ -2039,12 +2039,13 @@
*/
width=annotate_info.width;
height=annotate_info.height;
- if ((draw_info->affine.rx != 0.0) || (draw_info->affine.ry != 0.0))
+ if ((fabs(draw_info->affine.rx) >= MagickEpsilon) ||
+ (fabs(draw_info->affine.ry) >= MagickEpsilon))
{
- if (((draw_info->affine.sx-draw_info->affine.sy) == 0.0) &&
- ((draw_info->affine.rx+draw_info->affine.ry) == 0.0))
- annotate_info.degrees=(180.0/MagickPI)*
- atan2(draw_info->affine.rx,draw_info->affine.sx);
+ if ((fabs(draw_info->affine.sx-draw_info->affine.sy) < MagickEpsilon) &&
+ (fabs(draw_info->affine.rx+draw_info->affine.ry) < MagickEpsilon))
+ annotate_info.degrees=(MagickRealType) ((180.0/MagickPI)*
+ atan2(draw_info->affine.rx,draw_info->affine.sx));
}
(void) FormatLocaleString(annotate_info.geometry,MaxTextExtent,
"%.20gx%.20g%+.20g%+.20g",(double) width,(double) height,
diff --git a/MagickCore/colorspace-private.h b/MagickCore/colorspace-private.h
index 479d7ee..98a9a9c 100644
--- a/MagickCore/colorspace-private.h
+++ b/MagickCore/colorspace-private.h
@@ -34,7 +34,9 @@
magenta,
yellow;
- if ((pixel->red == 0) && (pixel->green == 0) && (pixel->blue == 0))
+ if ((fabs(pixel->red) < MagickEpsilon) &&
+ (fabs(pixel->green) < MagickEpsilon) &&
+ (fabs(pixel->blue) < MagickEpsilon))
{
pixel->black=(MagickRealType) QuantumRange;
return;
diff --git a/MagickCore/composite-private.h b/MagickCore/composite-private.h
index 745c617..e2efff0 100644
--- a/MagickCore/composite-private.h
+++ b/MagickCore/composite-private.h
@@ -55,7 +55,7 @@
/*
Compose pixel p over pixel q with the given opacities.
*/
- if (alpha == TransparentAlpha)
+ if (fabs(alpha-TransparentAlpha) < MagickEpsilon)
{
if (composite != q)
{
@@ -102,7 +102,7 @@
/*
Compose pixel p over pixel q with the given opacities.
*/
- if (alpha == OpaqueAlpha)
+ if (fabs(alpha-OpaqueAlpha) < MagickEpsilon)
{
*composite=(*p);
return;
diff --git a/MagickCore/quantum-private.h b/MagickCore/quantum-private.h
index f248caa..1e6f2e1 100644
--- a/MagickCore/quantum-private.h
+++ b/MagickCore/quantum-private.h
@@ -186,7 +186,7 @@
quantum_state->minimum=quantum_info->minimum;
quantum_state->scale=quantum_info->scale;
quantum_state->inverse_scale=1.0;
- if (quantum_state->scale != 0.0)
+ if (fabs(quantum_state->scale) >= MagickEpsilon)
quantum_state->inverse_scale/=quantum_state->scale;
quantum_state->pixel=0U;
quantum_state->bits=0U;
diff --git a/MagickCore/token-private.h b/MagickCore/token-private.h
index 683a628..d221924 100644
--- a/MagickCore/token-private.h
+++ b/MagickCore/token-private.h
@@ -53,6 +53,9 @@
static inline unsigned char *ConvertLatin1ToUTF8(const unsigned char *content)
{
+ int
+ c;
+
register const unsigned char
*p;
@@ -65,9 +68,6 @@
unsigned char
*utf8;
- unsigned int
- c;
-
length=0;
for (p=content; *p != '\0'; p++)
length+=(*p & 0x80) != 0 ? 2 : 1;
@@ -81,11 +81,11 @@
{
c=(*p);
if ((c & 0x80) == 0)
- *q++=c;
+ *q++=(unsigned char) c;
else
{
- *q++=0xc0 | ((c >> 6) & 0x3f);
- *q++=0x80 | (c & 0x3f);
+ *q++=(unsigned char) (0xc0 | ((c >> 6) & 0x3f));
+ *q++=(unsigned char) (0x80 | (c & 0x3f));
}
}
*q='\0';