You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by Thomas E Deweese <th...@kodak.com> on 2001/09/04 14:28:22 UTC
Reduction of 2 concatenated matrix-based affine transforms not supported in svggen?
>>>>> "EP" == Evenblij, Paul <Pa...@nl.compuware.com> writes:
EP> While working on a solution which should make it possible to cache
EP> raster image data (yes, I have a working version!;) I noticed the
EP> following:
EP> org.apache.batik.ext.awt.g2d.TransformStackElement has a method
EP> "concatenate()" which essentially reduces 2 affine transforms of
EP> the same type to 1. However, only translations, rotations and
EP> scales are supported. General transformations represented in
EP> matrix form cannot be concatenated. This may result in SVG
EP> transform attribute strings of epic length...
EP> Do people agree that this is a bug? Are there compelling reasons
EP> for this behaviour (e.g. performance)? Is there a reason why I
EP> should not fix this? My code for caching images is quite heavily
EP> dependent on transformations to get the image data to show
EP> correctly. Long attribute strings would sort of defeat the whole
EP> caching scheme...
I'm guessing it is done so people can read the result. I can
make a lot more sense out of:
transform="rotate(45), scale(0.5)"
As opposed to:
transform="matrix(0.35, 0.35, -0.35, 0.35, 0, 0)"
(or what ever the correct result is...)
This might be something that could be control by a hint, or the
like. Perhaps the TransformStack could re-decompose a matrix
transform into a scale, rotate, translate (when shear is not
involved)...
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org
Re: Reduction of 2 concatenated matrix-based affine transforms not
supported in svggen?
Posted by Vincent Hardy <vi...@sun.com>.
Thomas E Deweese wrote:
>
> ....
> EP> Do people agree that this is a bug? Are there compelling reasons
> EP> for this behaviour (e.g. performance)? Is there a reason why I
> EP> should not fix this? My code for caching images is quite heavily
> EP> dependent on transformations to get the image data to show
> EP> correctly. Long attribute strings would sort of defeat the whole
> EP> caching scheme...
>
> I'm guessing it is done so people can read the result. I can
> make a lot more sense out of:
>
> transform="rotate(45), scale(0.5)"
>
> As opposed to:
> transform="matrix(0.35, 0.35, -0.35, 0.35, 0, 0)"
>
> (or what ever the correct result is...)
>
> This might be something that could be control by a hint, or the
> like. Perhaps the TransformStack could re-decompose a matrix
> transform into a scale, rotate, translate (when shear is not
> involved)...
Thomas is right, this was done so that the svg is more readable
(and sometimes more concise, because scale(2,3) is shorter than
the matrix equivalent). When I wrote the TransformStack, my goal
was to find a solution that would produce readable SVG and would
be concise enough in many cases...
However, I agree that if you keep modifying the transform you
end up with a long transform string which no longer makes sense...
In addition to what Thomas suggests, you could also put a limit on
the number of entries in the transform stack: beyond that limit,
the stack is collapsed and the matrix notation could be used...
Vincent.
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org