Yeah, if I switch my "getRotationAngle" method with yours in my main
application, everything works itself out.  This bug's probably been in
my code for a long time; I just never noticed it until I started
smoothly rotating objects on the canvas as opposed to applying a single
rotation angle.

Thanks for checking that out.

Michael Bishop 

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> On Behalf Of Archie Cobbs
> Sent: Wednesday, January 23, 2008 5:16 PM
> To: batik-users@xmlgraphics.apache.org
> Subject: Re: Rendering bug with transforms?
> 
> Something is wrong with your logic that computes the angles. 
> The reason you are not seeing it with rectangles and circles 
> is because they have 180 degree rotational symmetry.
> 
> Apply the attached patch to your code to see what the real 
> angle is you are rotating by, which bounces around during 
> part of the rotation. 
> 
> Don't know what the exact problem is but you can probably 
> figure it out from here...
> 
> -Archie
> 
> 
> On Jan 23, 2008 3:29 PM, Bishop, Michael W. CONTR J9C880 < 
> [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> > wrote:
> 
> 
>       I got snapshots from the original, rotated (flipped) 
> and rotated 
>       (correct) DOMs.  Since the transform is in matrix form, 
> it's hard to
>       discern anything save the fact that all three are 
> different.  I loaded
>       each snapshot in Squiggle; they looked the same as they do in my
>       application.
>       
>       I was able to create a test class that can showcase 
> this behavior.  It's
>       not a specific SVG; it's an application that rotates a 
> rect element,
>       degree-by-degree a full 360 degrees on a JSVGCanvas 
> successfully.  Then 
>       it does the same with a text element and the errors 
> occur between 90 and
>       270.
>       
>       I'll attach the class for those curious; it's a single 
> file that just
>       needs Batik on the classpath:
>       mil.jfcom.cie.whiteboard.TestElementTransform 
>       
>       I guess I should also file a bug unless someone finds 
> something wrong
>       with the attached code.
>       
> 
>       Michael Bishop
>       
>       > -----Original Message-----
>       > From: [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>  [mailto:[EMAIL PROTECTED]
>       > On Behalf Of Archie Cobbs
>       
>       > Sent: Wednesday, January 23, 2008 2:52 PM
>       > To: batik-users@xmlgraphics.apache.org
>       > Subject: Re: Rendering bug with transforms?
>       >
>       
>       > I would be interesting to "snapshot" your DOM after the 
>       > unexpected flip occurs then:
>       >
>       > - Save it to a file.
>       > - Verify relaunching squiggle on the file still shows 
> item flipped.
>       > - Do analysis to determine whether matrix is incorrect (your
>       > bug) or batik is mis-reading it (batik bug).
>       > - If Batik is mis-reading matrix, create Bugzilla issue
>       > containing simplified counterexample SVG file.
>       >
>       > One possibility is your computation is broken around the 
>       > "corner cases" of 90 and 270 degress. Continuous reading and
>       > updating of the matrix makes these corner cases more likely
>       > to be hit.
>       >
>       >
>       > On Jan 23, 2008 1:36 PM, Bishop, Michael W. CONTR J9C880 
>       > <[EMAIL PROTECTED]> wrote:
>       >
>       >
>       >       OK, the slider basically reports a degree from 0 to
>       > 359.  I have a
>       >       ChangeListener attached that updates the "transform" 
>       > attribute of the
>       >       selected element.
>       >
>       >       So what essentially happens:
>       >
>       >       - Retrieve the "transform" (I use the matrix only)
>       > attribute as an
>       >       AffineTransform. 
>       >       - Revert the current rotation angle on the 
> AffineTransform.
>       >       - Apply the new rotation angle to the AffineTransform.
>       >       - Convert the AffineTransform to a "transform" 
> attribute. 
>       >       - Apply the new "transform" attribute to the 
> element on the
>       >       UpdateManager.
>       >
>       >       I don't think static rotation covers it.  My old
>       > rotation technique was
>       >       a plain JSlider that would only update the element
>       > after the change
>       >       occurs.  This never fails.  It only seems to happen
>       > when the document is
>       >       continuously updated as the slider is moving.  Another 
>       > interesting fact
>       >       is that sometimes an element STAYS flipped; 
> when I get back to 0
>       >       degrees, I see that a text element might be upside-down.
>       >
>       >       If this behavior was consistant across all elements, 
>       > I'd be more apt to
>       >       dig through my code.  It only seems to happen with
>       > certain elements.
>       >       Maybe I can write a test case that will draw an element
>       > to a canvas,
>       >       then rotate it through 360 degrees with a for loop. 
>       >
>       >       Michael Bishop
>       >
>       >
>       >       > -----Original Message-----
>       >       > From: [EMAIL PROTECTED] [mailto:
>       
>       > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ]
>       >       > On Behalf Of Archie Cobbs 
>       >       > Sent: Wednesday, January 23, 2008 1:41 PM
>       >       > To: batik-users@xmlgraphics.apache.org
>       >       > Subject: Re: Rendering bug with transforms? 
>       >       >
>       >       > What is your slider actually doing?
>       >       >
>       >       > If it's just updating the "transform" 
> attribute of a DOM
>       >       > element, in theory you should be able to 
> produce a static 
>       >       > document containing a polygon rotated e.g. 
> 120 degrees that
>       >       > squiggle renders upside down.
>       >       >
>       >       > I.e., what's the simplest document or program 
> that reproduces 
>       >       > incorrect rendering? I'm sure something 
> obvious like an
>       >       > upside down rotation would be fixed pretty quickly.
>       >       >
>       >       > On the other hand, it could be your logic. 
> How exactly does a 
>       >       > circular slider position turn into SVG attributes?
>       >       >
>       >       >
>       >       > On Jan 23, 2008 12:31 PM, Bishop, Michael W. 
> CONTR J9C880
>       >       > < [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> > wrote:
>       >       >
>       >       >
>       >       >       Hello,
>       >       >           I've come across a pretty odd 
> problem with Batik.
>       >       > I'm using the 
>       >       >       1.7 release version.  For my application, I've
>       >       > developed a "circle
>       >       >       slider" which is pretty much a Jslider 
> that goes in a
>       >       > circle.  I use it 
>       >       >       to rotate elements from 0 degrees to 
> 360 degrees.  As I
>       >       > move the slider,
>       >       >       the shape on the JSVGCanvas changes.  This works
>       >       > perfectly for circle, 
>       >       >       ellipse, line, and rect elements.  On 
> other elements
>       >       > (polygon, polyline,
>       >       >       path, text), the element is rapidly 
> flipped 180 degrees
>       >       > ONLY when the 
>       >       >       circle slider is between 90 and 270 degrees.
>       >       >           So I get a smooth rotation from 0 to 90.
>       > From 90 to 270 the
>       >       >       element gets flipped upside-down over 
> and over again, 
>       >       > oscillating back
>       >       >       and forth.  From 270 to 360 (0), I get 
> smooth rotation
>       >       > again.  The
>       >       >       reason I think it's Batik is because it 
> doesn't occur 
>       >       > with every element
>       >       >       and my application is reporting the 
> correct number of
>       >       > degrees.  I think
>       >       >       it's odd that it only happens witin 
> that certain range. 
>       >       >  Has anyone
>       >       >       experienced this?
>       >       >
>       >       >       Michael Bishop
>       >       >
>       >       >
>       >       >
>       > 
> --------------------------------------------------------------------- 
>       >       >       To unsubscribe, e-mail:
>       >       > [EMAIL PROTECTED]
>       
>       > <mailto: 
> [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> >
>       
>       >       >       For additional commands, e-mail:
>       >       > [EMAIL PROTECTED] 
>       >       >
>       >       >
>       >       >
>       >       >
>       >       >
>       >       >
>       >       > --
>       >       > Archie L. Cobbs
>       >       >
>       >       >
>       > 
>       >
>       > 
> ---------------------------------------------------------------------
>       >       To unsubscribe, e-mail:
>       > [EMAIL PROTECTED] 
>       
>       > <mailto:[EMAIL PROTECTED]>
>       
>       >       For additional commands, e-mail: 
>       > [EMAIL PROTECTED]
>       >
>       >
>       >
>       >
>       >
>       >
>       > --
>       > Archie L. Cobbs
>       >
>       >
>       
> 
>       
> ---------------------------------------------------------------------
>       To unsubscribe, e-mail: 
> [EMAIL PROTECTED]
>       For additional commands, e-mail: 
> [EMAIL PROTECTED]
>       
> 
> 
> 
> 
> --
> Archie L. Cobbs
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to