xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomy <thomas.palf...@gmail.com>
Subject Re: JSVGCanvas Rotation with AffineTransform
Date Thu, 12 Mar 2009 10:38:12 GMT

Hi Alan,
I answered this question recently.
Here is a snap of my source code :

	public void setSVGAffineTransformation(){

		AffineTransform tx = svgCanvas.getRenderingTransform();
                // Zoom Level
		tx.setToScale(zoomLevel(),zoomLevel());
                // The user want to rotate ???
		if(Main.getFenetrePrincipale().getZoomControl().getAngleRotation() != 0){
                        // Sinus of Rotation angle
			double sinA =
Math.sin(Main.getFenetrePrincipale().getZoomControl().getAngleRotation());

			
                        // Do the rotation on the center of the picture
		
tx.rotate(Main.getFenetrePrincipale().getZoomControl().getAngleRotation(),
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getImage().getWidth(null)
/2,
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getImage().getHeight(null)/2);
                        // Do the translation, depend on the sinus
			if(sinA == 1)

			{

				tx.translate(-sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getX(),
-sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getY());

			}

			else

			{

				tx.translate(sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getX(),
sinA *
Main.getFenetrePrincipale().getFenetreManuscrit().getPaintCanvas().getRect().getY());

			}

		}
                // set the rendering :)
		svgCanvas.setRenderingTransform(tx);

	}

The wrong position of the JSVGCanvas was due to a mathematical error :)
Check the translate method.

Hope this will help



Alan Deikman wrote:
> 
> Thomas Palfray wrote:
>> Thanks for your answer.
>>
>> thomas.deweese@kodak.com a écrit :
>>>
>>> Hi Thomas,
>>>
>>> Thomas Palfray <thomas.palfray@gmail.com> wrote on 10/25/2008 
>>> 05:08:39 AM:
>>>
>>> > Well, i'm working on an application wich need to rotate a JSVGCanvas
>>> > (90°, 180°, 270°). I used AffineTransform and the method
>>> > setRenderingTransform like that :
>>>
>>>    If you only need to support 90, 180 & 270 deg rotations.
>>> I would suggest simply hard coding the correction factors.
>>> For 90deg it will be a translate in X by the height before rotation.
>>> for 180 deg it will be translate in X by the width and
>>> in Y by the height (both before rotation), for 270 a
>>> translate in Y by the width before rotation.
> I'm having the same problem -- I have a JSVGCanvas I want to paint in 
> different orientations.   I have tried the setRenderingTransform() 
> method with no success -- it just gets overwritten by some other logic 
> within batik with the identity transform when the component is resized.
> 
> Question: at what point can setRenderingTransform(at, true) be used or 
> is meaningful within the lifecycle of GVT rendering process?
> 
> Another question -- is there anything to read to understand the usage of 
> the different transforms in JSVGCanvas?   You have the initial 
> transform, rendering transform, viewing transform, viewbox transform, 
> and painting transform. 
> 
> Thanks in advance for any pointers.
> 
> -- 
> Alan Deikman
> ZNYX Networks
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/JSVGCanvas-Rotation-with-AffineTransform-tp20162475p22472250.html
Sent from the Batik - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Mime
View raw message