Paul,

Thanks a lot for your detailed bug report. I will look at it in details
and commit your patch shortly.

Regards,
Vincent.

"Evenblij, Paul" wrote:
> 
> Hi there,
> 
> I have found another issue with SVGTransform.
> Perform the following sequence of calls on SVGGraphics2D instance g2d:
> 
>   g2d.translate(10,10);
>   g2d.scale(2, 2);
>   g2d.scale(0.5, 0.5);
>   g2d.translate(20,40);
>   g2d.rotate(0);
>   g2d.translate(-30,-50);
> 
>   g2d.fillRect(10,10, 100,80);
> 
> Attentive readers will note that the series of transformations should have
> no net effect whatsoever. Still, Batik generates the following SVG:
> 
> <rect x="10" y="10" transform="translate(10,10)  translate(20,40)
> translate(-30,-50)" width="100" style="fill:black; stroke:none;" height="80"
> />
> 
> Obviously, the transform string is not optimized. This is due to the "scale"
> transforms (which, taken together, form an identity) and the "rotate" (which
> is also an identity). Identity transforms are not converted to SVG (note the
> double spaces between the "translate"s). This is correct. However, the first
> "translate" is by then already converted, and can no longer be concatenated
> to the next.
> 
> I have created a patch which addresses this issue. It adds an "isIdentity()"
> method to the TransformStackElement class, and reconstructs the public
> "toSVGTransform()" method in SVGTransform, so that identities do not keep
> similar transforms from being concatenated, not even if they are "hidden",
> like the paired scale transforms above. It also removes the "isIdentity()"
> implementation from SVGTransform itself, since this is now handled
> generically by TransformStackElement.
> 
> Generated output of the patched code reads:
> 
> <rect x="10" y="10" width="100" style="fill:black; stroke:none;" height="80"
> />
> 
> I have created bug 3871 for this, and attached the proposed patch.
> 
> Cheers,
> Paul
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to