X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com Date: Mon, 1 May 2017 14:38:48 +0200 (CEST) X-X-Sender: igor2 AT igor2priv To: geda-user AT delorie DOT com X-Debug: to=geda-user AT delorie DOT com from="gedau AT igor2 DOT repo DOT hu" From: gedau AT igor2 DOT repo DOT hu Subject: [geda-user] [pcb-rnd] videos: new layer selector, erasable silk Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Reply-To: geda-user AT delorie DOT com Hi all, I've finished another round of the layer rewrite, please check out the demonstration video (~3 minutes): https://archive.org/details/editlayer2 We already had editable paste and mask layers since last week; there are three new features. 1. Composite silk The silk layer group is composite, which means it is possible to define subtractive silk layers and erase silk drawn manually or generated by elements. This also allows writing inverse text: text on a negative layer on top of a polygon on a positive layer. If the silk group has only one positive auto layer, the old drawing mechanism is used instead of compositing; this is because some fabs may not like the geber produced by the composite silk (it uses gerber layers to erase). This means using the gerber export is still safe with traditional boards; if you start erasing silk, you should check with your fab. I will get the gerber exporter to emit a warning about this when compositing silk is generated. 2. New layer selector widget on gtk We had to fully rewrite the layer selector widget: the original implementation hardwired too many assumptions and spent too much code on gtk/OOP administration instead of the actual task. The new widget shows the layers in a structure that closely follows the layer stack (only the substrate/insulator layers are omitted). Layers are grouped, group names are written on the left. Groups can be collapsed and expanded, as demonstrated in the following short video: https://archive.org/details/layersel The new widget also supports context-sensitive popups for non-virtual layers and groups. The popup menus are specified in the menu file. The new code is more generic and is much smaller. When it supported about as much features as the old code, it was ~30% of the size of the old code. Now that it does a lot more, it's still about 42% of the original layer selector's code. So this is also a cleanup, making the source more compact and easier to maintain. 3. Layer order concepts The rewrite of the widget also allowed us to simplify the concept of layer orders. The original code (and gEDA/PCB) presents the layers in a custom order that represents how layers are stored internally in the memory. Moving a layer up or down moves the layer in this internal list. However, this internal list has no connection with the physical world: the concept of layer groups is orthogonal to this. In the new system the user doesn't need to know that there's such an internal layer list and order: layers are presented per physical group and up/down means changing the order of layers within the group. In-group order matters only for compisit groups: additions and subtractions are executed in this order. As a fortunate side effect: adding new layers and moving existing layers will not change the color of any layer. Furhter plans: - more I/O plugins and bugfixes in the next 4 weeks - release pcb-rnd 1.2.3 around end ot May, featuring an improved plugin system and editable layers - next target from June: more generic footprints (a.k.a. subcircuits) that can contain any type of objects and can refer to any layer - another feature with decade old pending requests. Testing is welcome - feel free to visit us on IRC (repo.hu:6667, #pcb-rnd), we have some sort of activity there ~16 hours a day, every day. Best regards, Igor2 P.S. Special thanks to my fellow programmers and users/testers. This improvement would not have been possible without real team work of a constantly growing, contructive community.