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