Thomas Charbonnel wrote:
I'm working with Batik 1.6 on x86_64 linux with Blackdown 1.4.2-02
(64bit). I'm displaying a dynamic document in a JSVGCanvas, and am
trying to keep it top-left aligned, and still have it scale when I
resize the frame the canvas is in.
For this I set preserveAspectRatio="xMinYMin meet" on my document's
outermost svg. Initially, the canvas' preferred size matches the
width/height ratio of the document.
Do I misunderstand the standard or implementation, or is this really a
bug ?
So I think the problem is that we don't treat a resize of the
canvas as a change in the width and height of the document, that is
fixed at the first load (or when the width/height are updated
via script). One of the reasons for this is that a change in
width/height on an SVG requires that every element that uses
percentages be update, since we can't track this directly we rebuild
the entire graphics tree.
Also the SVG spec does not cover conformant behavior here. So our
behavior (resize on the center of the canvas) is probably ok.
My understanding of preserveAspectRatio="xMinYMin meet" is that the
document should always stay top-left anchored, and scale linearly.
This is not what's happening in batik at the moment.
This is what happens on load.
At the end some content is lost past the left border of the canvas, and
the document is no more top-anchored, despite "xMinYMin".
So I will say that for a document that matched aspect ratio at
load I couldn't get this to make any difference. In my case the
document was always centered when the canvas aspect ratio stopped
matching.
For now I work around the problem by registering a ComponentListener on
the canvas, then getting the rendering transform in the componentResized
callback and calling setToTranslation(0, 0) on it.
The best thing would probably be to simply replace the
updateRenderingTransform method so it doesn't zoom on the
center of the canvas.
I'd appreciate some feedback on this.
Thanks,
Thomas
---------------------------------------------------------------------
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]