% March 2000 %
% %
% %
-% Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
SVGInfo
*svg_info;
- svg_info=(SVGInfo *) AcquireAlignedMemory(1,sizeof(*svg_info));
+ svg_info=(SVGInfo *) AcquireMagickMemory(sizeof(*svg_info));
if (svg_info == (SVGInfo *) NULL)
return((SVGInfo *) NULL);
(void) ResetMagickMemory(svg_info,0,sizeof(*svg_info));
svg_info->text=AcquireString("");
- svg_info->scale=(double *) AcquireAlignedMemory(1,sizeof(*svg_info->scale));
+ svg_info->scale=(double *) AcquireMagickMemory(sizeof(*svg_info->scale));
if (svg_info->scale == (double *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
GetAffineMatrix(&svg_info->affine);
*svg_info;
svg_info=(SVGInfo *) context;
+ (void) svg_info;
*number_tokens=0;
if (style == (const char *) NULL)
return((char **) NULL);
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" SAX.setDocumentLocator()");
svg_info=(SVGInfo *) context;
+ (void) svg_info;
}
static void SVGStartDocument(void *context)
break;
}
}
+ if (strchr((char *) name,':') != (char *) NULL)
+ {
+ /*
+ Skip over namespace.
+ */
+ for ( ; *name != ':'; name++) ;
+ name++;
+ }
switch (*name)
{
case 'C':
default:
break;
}
- transform.sx=current.sx*affine.sx+current.ry*affine.rx;
- transform.rx=current.rx*affine.sx+current.sy*affine.rx;
- transform.ry=current.sx*affine.ry+current.ry*affine.sy;
- transform.sy=current.rx*affine.ry+current.sy*affine.sy;
- transform.tx=current.sx*affine.tx+current.ry*affine.ty+
- current.tx;
- transform.ty=current.rx*affine.tx+current.sy*affine.ty+
- current.ty;
+ transform.sx=affine.sx*current.sx+affine.ry*current.rx;
+ transform.rx=affine.rx*current.sx+affine.sy*current.rx;
+ transform.ry=affine.sx*current.ry+affine.ry*current.sy;
+ transform.sy=affine.rx*current.ry+affine.sy*current.sy;
+ transform.tx=affine.sx*current.tx+affine.ry*current.ty+
+ affine.tx;
+ transform.ty=affine.rx*current.tx+affine.sy*current.ty+
+ affine.ty;
}
MVGPrintf(svg_info->file,
"affine %g %g %g %g %g %g\n",transform.sx,
default:
break;
}
- transform.sx=current.sx*affine.sx+current.ry*affine.rx;
- transform.rx=current.rx*affine.sx+current.sy*affine.rx;
- transform.ry=current.sx*affine.ry+current.ry*affine.sy;
- transform.sy=current.rx*affine.ry+current.sy*affine.sy;
- transform.tx=current.sx*affine.tx+current.ry*affine.ty+
- current.tx;
- transform.ty=current.rx*affine.tx+current.sy*affine.ty+
- current.ty;
+ transform.sx=affine.sx*current.sx+affine.ry*current.rx;
+ transform.rx=affine.rx*current.sx+affine.sy*current.rx;
+ transform.ry=affine.sx*current.ry+affine.ry*current.sy;
+ transform.sy=affine.rx*current.ry+affine.sy*current.sy;
+ transform.tx=affine.sx*current.tx+affine.ry*current.ty+
+ affine.tx;
+ transform.ty=affine.rx*current.tx+affine.sy*current.ty+
+ affine.ty;
}
MVGPrintf(svg_info->file,
"affine %g %g %g %g %g %g\n",transform.sx,
svg_info->view_box=svg_info->bounds;
svg_info->width=(size_t) floor(svg_info->bounds.width+0.5);
svg_info->height=(size_t) floor(svg_info->bounds.height+0.5);
- MVGPrintf(svg_info->file,"viewbox 0 0 %lu %lu\n",svg_info->width,
- svg_info->height);
+ MVGPrintf(svg_info->file,"viewbox 0 0 %.20g %.20g\n",(double)
+ svg_info->width,(double) svg_info->height);
sx=(double) svg_info->width/svg_info->view_box.width;
sy=(double) svg_info->height/svg_info->view_box.height;
MVGPrintf(svg_info->file,"affine %g 0 0 %g 0.0 0.0\n",sx,sy);
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" SAX.endElement(%s)",name);
svg_info=(SVGInfo *) context;
+ if (strchr((char *) name,':') != (char *) NULL)
+ {
+ /*
+ Skip over namespace.
+ */
+ for ( ; *name != ':'; name++) ;
+ name++;
+ }
switch (*name)
{
case 'C':
Receiving some characters from the parser.
*/
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
- " SAX.characters(%s,%lu)",c,(size_t) length);
+ " SAX.characters(%s,%.20g)",c,(double) length);
svg_info=(SVGInfo *) context;
if (svg_info->text != (char *) NULL)
svg_info->text=(char *) ResizeQuantumMemory(svg_info->text,
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" SAX.ignorableWhitespace(%.30s, %d)",c,length);
svg_info=(SVGInfo *) context;
+ (void) svg_info;
}
static void SVGProcessingInstructions(void *context,const xmlChar *target,
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" SAX.processingInstruction(%s, %s)",target,data);
svg_info=(SVGInfo *) context;
+ (void) svg_info;
}
static void SVGComment(void *context,const xmlChar *value)
value;
value=strtol(point,&p,10);
+ (void) value;
return(p != point ? MagickTrue : MagickFalse);
}
(void) WriteBlobString(image,
" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n");
(void) FormatMagickString(message,MaxTextExtent,
- "<svg width=\"%lu\" height=\"%lu\">\n",image->columns,image->rows);
+ "<svg width=\"%.20g\" height=\"%.20g\">\n",(double) image->columns,
+ (double) image->rows);
(void) WriteBlobString(image,message);
GetMagickPixelPacket(image,&pixel);
for (y=0; y < (ssize_t) image->rows; y++)
(void) QueryMagickColorname(image,&pixel,SVGCompliance,tuple,
&image->exception);
(void) FormatMagickString(message,MaxTextExtent,
- " <circle cx=\"%ld\" cy=\"%ld\" r=\"1\" fill=\"%s\"/>\n",x,y,tuple);
+ " <circle cx=\"%.20g\" cy=\"%.20g\" r=\"1\" fill=\"%s\"/>\n",
+ (double) x,(double) y,tuple);
(void) WriteBlobString(image,message);
p++;
}
(void) WriteBlobString(image,
" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n");
(void) FormatMagickString(message,MaxTextExtent,
- "<svg width=\"%lu\" height=\"%lu\">\n",image->columns,image->rows);
+ "<svg width=\"%.20g\" height=\"%.20g\">\n",(double) image->columns,(double)
+ image->rows);
(void) WriteBlobString(image,message);
/*
Allocate primitive info memory.