On Wed, 2008-10-01 at 23:48 -0400, DJ Delorie wrote:
> > Also, I've been prodding some stuff with polygons. I noticed rendering
> > benchmarks spent a lot of time in the no holes polygon dicer.

> Yup.

Might be worth giving the cache a go. I've not run without it for a
while, (Ie.. its not completly buggy), and IIRC the speedup was
noticable.

The invalidation in the patch is a bit wonky. I started with it not
being a cache, but a "compute as you go" thing - where it would always
be updated, even if it hadn't hit the screen. This meant I had to be
judicious where to make a recalc without doing it far far too often. Now
its a cache which is updated when the polygon hits the drawing code.

I can probably be more conservative about where the cached value is
marked invalid now - and keep it close to the actual manipulations of
the (PolygonType *)->Clipped polygon it was originally supposed to stay
in sync with.

> > I've changed things such that polygons can take the "CLEARLINE"
> > flag, ("j" on the keyboard bindings), to change if a polygon clears
> > other polygons or not. In the case where it clears, filled rendering
> > is disabled, it just renders an outline, and that polygon plows
> > holes in any other it touches.
> 
> I.e. this can be used to make holes in the ground plane?

Yep ;). It works on screen, but I've yet to try it through an exporter.
Depending on various flags, they can exercise different paths in the
core drawing code. Certainly, we wouldn't want the graphical outline to
be exported for most HIDs. I guess the outline has to stay on screen -
otherwise the polys dissapear without another poly to clear.I'll admit
that it is a little misleading to paint it the layer colour. I need a
new colour.

> > I HATE the fact everything but the big chunk disspears..
> 
> You know about the MorphPolygon() action, right?

Yes, but that leaves all the holes "hard-coded". I'd still need to
suplement it with an island removal step as well.

(Not all cleared pieces of the polygons are islands - due to vias etc..
which can reconnect them).

> > -  for (g = 0; g < MAX_LAYER + 1; g++)
> > +  for (g = 0; g < MAX_LAYER; g++)
> 
> This change is correct, thanks!

I'll push it tomorrow if you don't beat me to it.

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)



_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to