Hi Micheal, "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote on 10/19/2005 11:10:59 AM:
> No, my scaling is uniform I believe. I'm simply using the > JSVGCanvas.ZoomInAction and JSVGCanvas.ZoomOutAction for my respective > buttons. Given that, the AffineTransform.getScaleX() and > AffineTransform.getScaleY() should be the same value and I can apply > either one to the font size? Exactly. > > Michael Bishop > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Wednesday, October 19, 2005 10:54 AM > To: [email protected] > Cc: [email protected] > Subject: RE: AW: Translations with zoom in and zoom out? > > Hi Michael, > > "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote on > > 10/19/2005 10:13:49 AM: > > > Sure, I don't give the users the ability to rotate text (yet) so > that's > > no problem. On my glass pane, I call Graphics2D.setFont(...) and > > Graphics2D.drawString(...) to render the text. To transform to an > > Element, I manually create the tag information, including font-family, > > font-weight, font-style, and font-size. So if the user has 18pt font > > chosen, I can use the AffineTransform.getScaleY() to change the point > > size? That makes sense, but what about the width? > > Well unless you are allowing for non-uniform scaling (different > X & Y scaling, square becomes a rectangle) then setting the font-size > will change the width correctly as well. If you want to allow for > non-uniform scaling then you will have to use the transform attribute > (there are a bunch of different forms, check the SVG spec for details). > > > I'm still shooting for having what you see on the glass pane mirror > > what you see when you draw to the document. > > Sure this shouldn't be an issue. > > > > > Michael Bishop > > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, October 19, 2005 10:08 AM > > To: [email protected] > > Cc: [email protected] > > Subject: RE: AW: Translations with zoom in and zoom out? > > > > Hi Michael, > > > > If you are willing to ignore rotation you can get the X/Y scale > from > > the viewBox Affine Transform > > (AffineTransform.getScaleX(), AffineTransform.getScaleY()), these can > > then > > be used to scale the > > font-size for example. > > > > You could also use the 'transform' attribute with a 'matrix(...)' > to > > directly apply the inverse viewBox > > transform to the text, which would allow you to 'skip' the mapping of > > the > > x & y coords (although at > > some loss to the readability of the SVG). > > > > "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote > on > > > > 10/19/2005 09:53:13 AM: > > > > > 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > > Sent: Wednesday, October 19, 2005 5:36 AM > > > To: [email protected] > > > 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" <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED] > > > > Gesendet: Dienstag, 18. Oktober 2005 19:02 > > > > An: [email protected] > > > > 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:[EMAIL PROTECTED] > > > > Sent: Tue 10/18/2005 12:57 PM > > > > To: [email protected] > > > > 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:[EMAIL PROTECTED] > > > > Sent: Tue 10/18/2005 7:46 AM > > > > To: [email protected] > > > > 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:[EMAIL PROTECTED] > > > > Gesendet: Montag, 17. Oktober 2005 20:44 > > > > An: [email protected] > > > > 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: > [EMAIL PROTECTED] > > > For additional commands, e-mail: > > [EMAIL PROTECTED] > > > > > > > --------------------------------------------------------------------- > > > 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] > > > > --------------------------------------------------------------------- > > 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] > > --------------------------------------------------------------------- > 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]
