Hi Dmitri, I did indeed look into this (sorry the main discussion
ended up in the java-dev list at Apple but I will CC the relevant
portions here. The problem is that with a large number of objects
(i.e. 1000) the time to draw is well over 2 seconds. With a number of
objects close to what I anticipate (100) the drawing is on average 257
miliseconds per frame. Only in the 10 object case was the time to draw
a reasonable 37ms. Since I have to update the clipping area every
frame as multiple RR2Ds can be moving at a time, this approach quickly
becomes to slow.


On Sun, 5 Sep 2004 21:40:37 -0700, Dmitri Trembovetski
<[EMAIL PROTECTED]> wrote:
>
>   Hi Gregory,
>
>   please see my comments below.
>
> On Fri, Sep 03, 2004 at 09:52:59PM -0400, Gregory Pierce wrote:
>  > Okay here is the scenario (and I'm hoping there is something in the
>  > API that permits this because at this point I haven't found anything).
>  >
>  > What I have are two RoundRectangle2Ds that have an alpha of 50
>  > percent. I want to draw a line connecting the centers of both of these
>  > RoundRectangle2Ds.
>  >
>  > A----B
>  >
>  > If the RR2Ds were opaque I wouldn't have a problem, I would just draw
>  > all of the links first and then draw all of the RR2Ds. Piece of cake.
>  > However since the RR2Ds allow you to see through them, this clearly
>  > won't work.
>  >
>  > I've looked at using Graphics2D.setClip(), but this will only allow me
>  > to clip the line against one of the shapes. I also looked into solving
>  > the problem using CAG, but Area doesn't work with lines (though I will
>  > try to adapt my pathing algorithms to use rectangles if that solves my
>  > drawing problem (here's hoping).
>  >
>  > It would be nice if there was a way to do a Graphics2D.addClip(Shape)
>  > so that I could clip the graphics region by a near infinite number of
>  > shapes. Same for intersect() and the like.
>
>   I may be missing something, but why can't you construct a clip Area
>   by subtracting (Area.subtract) the two RR2Ds you have from a rectangular
>   clip, and set that area as the clip?
>
>   Something along the lines of
>   Area clipA = new Area(new Rectangle2D.Float(0, 0, winWidth, winHeight));
>   clipA.subtract(new Area(rr2d_1)); // cut out rr2d_1, which is the first RoundRect2D
>   clipA.subtract(new Area(rr2d_2)); // ... the second ...
>   g2d.setClip(clipA);
>
>   g2d.drawLine(...)
>
>   Or take a look at demo/jfc/Java2D/src/java2d/demos/Clipping..
>
>   Thanks,
>     Dmitri
>
>
>
>
>  >
>  > Would be nice to see the OpenGL statemachine style of rendering start
>  > bubbling up to Java2D. Now that you're accelerating it via OpenGL,
>  > expect to see a lot of requests :)
>  >
>  > ===========================================================================
>  > To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>  > of the message "signoff JAVA2D-INTEREST".  For general help, send email to
>  > [EMAIL PROTECTED] and include in the body of the message "help".
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to