}
case RadialGradient:
{
- double
- length,
- offset;
-
PointInfo
v;
- v.x=(double) x-gradient->center.x;
- v.y=(double) y-gradient->center.y;
- length=sqrt(v.x*v.x+v.y*v.y);
if (gradient->spread == RepeatSpread)
- return(length);
- offset=length/gradient->radius;
- return(offset);
+ {
+ v.x=(double) x-gradient->center.x;
+ v.y=(double) y-gradient->center.y;
+ return(sqrt(v.x*v.x+v.y*v.y));
+ }
+ v.x=(double) (x-gradient->center.x)/gradient->radii.x;
+ v.y=(double) (y-gradient->center.y)/gradient->radii.y;
+ return(sqrt(v.x*v.x+v.y*v.y));
}
}
return(0.0);
stop_1=(StopInfo *) x;
stop_2=(StopInfo *) y;
-
if (stop_1->offset > stop_2->offset)
return(1);
if (fabs(stop_1->offset-stop_2->offset) <= MagickEpsilon)
if (artifact != (const char *) NULL)
(void) sscanf(artifact,"%lf%*[ ,]%lf",&gradient->center.x,
&gradient->center.y);
- gradient->radius=MagickMax(gradient->center.x,gradient->center.y);
+ gradient->radii.x=MagickMax(gradient->center.x,gradient->center.y);
+ gradient->radii.y=MagickMax(gradient->center.x,gradient->center.y);
artifact=GetImageArtifact(image,"gradient:radius");
if (artifact != (const char *) NULL)
- gradient->radius=StringToDouble(artifact,(char **) NULL);
+ (void) sscanf(artifact,"%lf%*[ ,]%lf",&gradient->radii.x,
+ &gradient->radii.y);
+ gradient->radius=MagickMax(gradient->radii.x,gradient->radii.y);
gradient->spread=method;
/*
Define the gradient to fill between the stops.