xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bishop, Michael W. CONTR J9C880" <Michael.Bis...@je.jfcom.mil>
Subject RE: AW: Translations with zoom in and zoom out?
Date Wed, 19 Oct 2005 13:53:13 GMT
Yeah, this seems to do the trick for points.  You lost me with
GeneralPath, but I currently create polylines with an ArrayList of
Point2D objects, so I can go from there and get the transform.

Still stumped on fonts though; I can get the x,y coordinate to place the
font, but I'm not sure how to transform it properly in regards to a
zoomed JSVGCanvas.

Michael Bishop

-----Original Message-----
From: thomas.deweese@kodak.com [mailto:thomas.deweese@kodak.com] 
Sent: Wednesday, October 19, 2005 5:36 AM
To: batik-users@xmlgraphics.apache.org
Subject: Re: AW: Translations with zoom in and zoom out?

Hi all,

   Is there a reason you don't use the 'transform' methods that are
built 
into 
the AffineTransform class?  These would seem to be much easier than all
of this:

Point2D transform(Point2D ptSrc, Point2D ptDst)

  There are also a bunch that tack arrays of source and dst points, that
would probably be really useful for a polyline (BTW a polyline can be
done with GeneralPath, just use lineto commands).

"Steiner, Dominik" <Dominik.Steiner@gigatronik.com> wrote on 10/19/2005 
02:57:07 AM:

> Hi Michael,
> 
> for converting a Point I do as follows:
> 
>   public static Float convertPointToViewBox(SVGCanvas canvas, Point 
point) {
>     try {
>       AffineTransform viewBoxTranfrom = canvas.getViewBoxTransform();
>       viewBoxTranfrom = viewBoxTranfrom.createInverse();
>       return convertPoint(point, viewBoxTranfrom);
>     } catch (NoninvertibleTransformException e) {
>       e.printStackTrace();
>     }
>     return null;
>   }
> 
>   private static Point2D.Float convertPoint(Point point,
AffineTransform 

> viewBoxTranfrom) {
>     double[] matrix = new double[6];
>     viewBoxTranfrom.getMatrix(matrix);
>     return convertPoint(point, matrix);
>   }
> 
>   public static Point2D.Float convertPoint(Point point,
>       double[] matrix) {
>     Point2D.Float retP = new Point2D.Float();
>     retP.x = (float) (matrix[0] * point.x + matrix[2] * point.y + 
matrix[4]);
>     retP.y = (float) (matrix[1] * point.x + matrix[3] * point.y + 
matrix[5]);
>     return retP;
>   }
> 
> I hope this helps? J
> 
> Dominik Steiner
> 
> 
> Von: Bishop, Michael W. CONTR J9C880 
[mailto:Michael.Bishop@je.jfcom.mil] 
> Gesendet: Dienstag, 18. Oktober 2005 19:02
> An: batik-users@xmlgraphics.apache.org
> Betreff: RE: Translations with zoom in and zoom out?
> 
> Oops, forgot Line2D falls in the Shape category.  For the text and the

> polyline, I really have the same problem; the text is a single x,y 
coordinate 
> and the polyline is a set of x,y coordinates.  If I can figure out how

to 
> translate those, I should be in good shape.
> 
> Michael Bishop
> 
> 
> From: Bishop, Michael W. CONTR J9C880 
[mailto:Michael.Bishop@je.jfcom.mil]
> Sent: Tue 10/18/2005 12:57 PM
> To: batik-users@xmlgraphics.apache.org
> Subject: RE: Translations with zoom in and zoom out?
> That is precisely what I needed.  I was using JSVGCanvas.
> getRenderingTransform() and that didn't quite work.  That works for my

boxes 
> and ellipses, but is there a similar school of thought, using the 
> AffineTransform for Line2D, a set of points (later used to create a 
polyline) and text??
> 
> Michael Bishop
> 
> 
> From: Steiner, Dominik [mailto:Dominik.Steiner@gigatronik.com]
> Sent: Tue 10/18/2005 7:46 AM
> To: batik-users@xmlgraphics.apache.org
> Subject: AW: Translations with zoom in and zoom out?
> Hi Michael,
> 
> I?m not sure if this helps you, but I would suggest that you transform

the 
> screen coordinates to viewbox coordinates. I first let the user draw
on 
screen
> coordinates and when he finished I do the transformation to viewbox 
> coordinates as follows:
> 
>   public static Shape scaleShapeToViewbox(Shape shape, SVGCanvas
canvas) 
{
>     try {
>       AffineTransform at =
canvas.getViewBoxTransform().createInverse();
>       shape = at.createTransformedShape(shape);
>     } catch (NoninvertibleTransformException e1) {
>       e1.printStackTrace();
>     }
>     return shape;
>   }
> 
> So this works for my Java2D shapes?.
> I hope it helps?
> 
> Dominik
> 
> Von: Bishop, Michael W. CONTR J9C880 
[mailto:Michael.Bishop@je.jfcom.mil] 
> Gesendet: Montag, 17. Oktober 2005 20:44
> An: batik-users@xmlgraphics.apache.org
> Betreff: Translations with zoom in and zoom out?
> 
> OK, so I have the JSVGCanvas zooming in and zooming out.  Since I have
a 

> whiteboard application, users can draw objects to the canvas.  Much
like 

> typical art programs, you get an ?outline? of what you?re going to
draw 
before
> it?s placed.  For a box, you click, drag the mouse to the desired size

and 
> release.  I guess they call it ?rubber-banding? or whatever.
> 
> On to my question.  When the canvas is zoomed in/zoomed out, how can I

get the
> translation correct on the glass pane?  The glass pane is currently 
drawing 
> based on the coordinates of the JSVGCanvas, but it draws as if the 
JSVGCanvas 
> isn?t zoomed in or out.  In short, what the glass pane is rendering is

not 
> zoomed, but what the JSVGCanvas is rendering is.  So what you see
isn?t 
what 
> you get when you let go of the mouse.  How can I translate my shapes 
based on 
> the zoom?  If I draw something on a canvas that is zoomed in 20%, I?d 
like to 
> scale the outline 20%...etc.  That degree of scaling is what I don?t 
know how to get.
> 
> Michael Bishop

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

---------------------------------------------------------------------
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