pcb-rnd 3.1.2 (r38156) ~~~~~~~~~~~~~~~~~~~~~~ [acompnet] -Cleanup: replace compat rtree with native [autoplace] -Cleanup: replace compat rtree with native [autoroute] -Cleanup: replace compat rtree with native -Cleanup: remove inline, use portable RND_INLINE instead [build] -Add: ./configure --enable-polybool and --disable-polybool (default for now) to allow testing the new poly lib later on [ch_editpoint] -Cleanup: remove rtree2_compat.h dependency [ch_endpoint] -Cleanup: replace compat rtree with native [ch_onpoint] -Cleanup: replace compat rtree with native [core] -Fix: poly as-drawn frame annotation option also draws cutout contours -Fix: allow padstack convert from selected work in footprint edit mode -Fix: pcb_flag_uninit() should clear all fields (flag bits), not just the unknown-flags part -Fix: do not uninit flags while gui-erasing objects -Fix: no-effect poly clearance change operation wrarning message doesn't refer to obsolete MinClearGap() but offers modern alternatives -Fix: verify number of points in a simplepoly when drawing/decomposing font; skip and warn if there are too many points -Fix: font unlink: when the default (system) font is unlinked, cheat: make a copy and return that; this is required for the font editor because the board struct hosting the default font is soon to be free()'d -Fix: pstk thin draw: don't draw mech layer twice because it will make the object inivisible in xor-draw -Fix: remove padstack mirror optimization: there are cases when ps->y is 0 but we still need to change the coords -Fix: revert should do the same PCB drawing area bbox tuning that normal load does, when pcb is a footprint; this fixes the problem of not updating drawing area of growing footprint on reload-on-change (which is really a revert) -Fix: when subc is moved to buffer (most notably to removelist), rebind subc layers to the buffer after all the objects have been moved; without this, free'ing the subc (e.g. clearing the undo list which clears the removelist which frees all objects there) would leave ghost objects on the rtrees because at subc free the rtree is NULL so child objects are not removed from the rtree but those child objects are freed -Cleanup: rename pcb_flag_erase() to pcb_flag_uninit(), as "erase" is used in the gui redraw sense; the confusing terminology already caused the call to be in the wrong place for all objects -Cleanup: remove inline, use portable RND_INLINE instead -Cleanup: centralzie flag uninit on object free, into obj_common -Cleanup: remove old rtree compat, use native rtree instead -Cleanup: remove unused/unimplemented function proto (pstk clear draw) -Add: more sophisticated thindraw shape selection for drawing from buffer: pick top copper or bottom copper first and fall back to first shape only if those are not found; this avoids picking the mech shape for the main contour [dialogs] -Cleanup: replace compat rtree dir consts with native -Fix: don't crash when help text is NULL (not available) for a parametric library entry -Fix: library parametric window command generator: corner case when there are no optional parameters (force generating all parameters that are not unknown) [distalign] -Cleanup: remove inline, use portable RND_INLINE instead [doc] -Add: document the templating system of the new export_bom plugin -Add: link in export_bom doc -Add: export_bom: document skip_if_empty and skip_if_nonempty templates -Add: export_xy skip_if_nonempty -Add: document outline and cutout mechanism including centerline defined cutouts and slots [draw_fab] -Cleanup: remove rtree compatibility dependency on determining if rtree is empty [export_bom] -Add: rewrite the plugin; switch over from hardwired format to templates (user configurable) [export_openscad] -Fix: min-max value for fs so it can be changed from the GUI -Fix: adjust model placement so it considers top and bottom copper thickness -Cleanup: remove rtree compat dependency -Add: support for --fs to set arc resolution -Add: export options to override default colors -Add: export cutouts & slots -Add: make exporting cutouts optional [export_ps] -Fix: finish previous file before starting a new file (fixes missing showpages) [export_stl] -Fix: switch over to generate all cutouts as an rnd_polyarea_t so that overlapping cutouts wouldn't cause broken export anymore -Cleanup: remove rtree2_compat.h dependency [export_xy] -Update: export_xy doesn't depend on export_bom anymore -Add: skip_if_nonempty template, to control which subcircuits to skip -Add: default templates: skip subcircuits that have the dnp attribute set [exto_std] -Cleanup: replace compat rtree entry with native [fontmode] -Fix: RND_EVENT_DESIGN_SET_CURRENT always requires an argument, even if it is NULL [footprint] -Add: openscad model for all parametric footprints in the default lib -Add: 3d related optional arguments in parametric footprints [gsch2pcb-rnd] -Del: remove the code, replace it with a long explanation on how to substitute it [import_ipcd356] -Cleanup: replace compat rtree with native [import_ttf] -Add: slice up large polygons so the resulting simplepoly always respects simplepoly size limitation [io_altium] -Cleanup: replace compat rtree with native [io_autotrax] -Cleanup: replace compat rtree with native [io_bxl] -Cleanup: replace compat rtree with native [io_eagle] -Cleanup: replace compat rtree with native [io_hyp] -Cleanup: replace compat rtree with native [io_kicad] -Cleanup: replace compat rtree with native [io_lihata] -Cleanup: replace compat rtree with native -Fix: when saving polygon coords in a lihata table, make sure col allocation is also set so table cols are allocated to the proper size, not to 0 size [io_mentor_cell] -Cleanup: replace compat rtree with native [io_pads] -Cleanup: replace compat rtree with native [io_pcb] -Cleanup: replace compat rtree with native [io_tedax] -Cleanup: replace compat rtree with native [jostle] -Cleanup: replace compat rtree with native [lib_bom] -Add: generic, reusable templating for BoM exporters [lib_compat_help] -Cleanup: remove rtree compat dependency from layer compat code [lib_polyhelp] -Cleanup: replace compat rtree with native -Add: API to generate a multi-island rnd_polyarea_t of all cutouts that are within a given contour -Add: topoly_cutout: include mech layer lines and arcs with their true shape so that slots work as expected [libcdtr] -Fix: there is no local genvector in pcb-rnd's src-3rd, use librnd's -Cleanup: remove inline, use portable RND_INLINE instead [millpath] -Cleanup: remove rtree compat dependency from toolpath calculation [oldactions] -Del: MinClearGap() action implementation -Add: MinClearGap() also suggests using polygon side clearance [polycombine] -Fix: set the standard clearpoly flag instead of an unknown-flag (string) on the resulting poly to get it behave as normal polygons do [puller] -Cleanup: replace compat rtree with native [query] -Fix: advanced search dialog: preserve quotes in strings in decompile [report] -Cleanup: replace compat rtree with native [rubberband_orig] -Cleanup: replace compat rtree with native [shape] -Cleanup: replace compat rtree with native [sketch_route] -Cleanup: replace compat rtree with native [teardrops] -Cleanup: replace rtree compat with native [util] -Add: warning about deprecation of the gnet-pcbrndfwd_elem script pcb-rnd 3.1.1 (r37572) ~~~~~~~~~~~~~~~~~~~~~~ [asm] -Fix: ignore subcircuits of extended objects [cam] -Fix: doc_png exports bottom side with flip_y enabled for proper layer ordering -Add: doc_eps job to export colored top and bottom in eps for documentation purposes -Add: doc_ps job, similar to doc_png and doc_eps -Add: doc_ps draws copper faded and silk solid for readability -Add: cam job for Advanced Circuits, as reported by Bdale [ch_endpoint] -Fix: remove endpoint indications (on first subsequent redraw) when tool is switched to a non-indicating one [core] -Fix: pixmap transformation: avoid sign swap in rotation -Fix: scale pixmaps before rotation to keep their aspect if it's not 1.000 -Fix: find.c vs. disjoint padstacks: set all-copper-conn'd for multi-copper padstacks only if the hole that connects them are plated -Fix: find.c vs. disjoint padstacks: don't require plated hole for the single-copper (smd) case -Fix: find.c: skip checking bloated up pstk against polygon for isc if clearance is larger than bloat and there's no thermal connecting them (works around line approximation false positive isc) -Fix: find.c: switch over from geometric rat-end connection find to (more precise) anchor based when rat anchors are avaliable; this means the rat line is connected only to the two objects it was mapped for; fixes the bug when two nointconn lines touch at endpoint from where a rat also starts and by geometry the rat shorts to two nointconn lines making an internal connection against the user's will -Fix: typo: check if rat rtree exists (not padstack rtree) before looking into the rat rtree -Fix: when removing a layer, all layers are renumbered; shift the thermal bits (indexed by layer index) in each padstack so thermals remain on the same layer after the re-indexing -Fix: allow idpath data address of buffer#n to end in / -Fix: idpath data address lookup: boundary check on the buffer array -Fix: pcb_idpath2obj_in() should be able to return object from buffer if the path refers to a buffer; provide an _only() variant that excludes the buffer -Fix: draw code used the wrong field for applying gui xform, causing conditional jump on uninitialized value -Fix: when converting string to thermal bits, accept NULL as empty string -Add: initialize new conf node rc.path.dotdir so users can refer to their own config easier -Add: hid_cam: support for global opt flip_x and flip_y so that bottom side layer order can be rendered correctly -Add: low level cam support for force_nonepty (creates output file even if layer group is empty, overriding the export plugins normal decision, in case the plugin cooperates) [dialogs] -Fix: reapply filter after a refresh to avoid gui inconsistency between the filter entry and the tree displayed -Fix: library window: refresh button shouldn't crash when filter entry is empty -Fix: library window on parametric edit: when the parametric footprint fails to produce a valid help text, don't override the filter with NULL string (causes segf) -Fix: typo in load file name filter name (should be rp, not rs) -Fix: Save() syntax should mention the extra, optional path argument where it is available -Add: library window: refine filter text tooltip: mention regex and case-insensitive -Add: padstack dialog instance tab displays logical layer id (for reference and to ease debugging) -Add: open dialog: file name filtering widget when opening a board [doc] -Add: gtk4 and sch-rnd formats in datasheet -Add: document new openscad export features -Add: mention gmail is not supported -Add: link in route-rnd -Add: FAQ item about high DPI screen icon_scale -Add: document cam's global option flip_x and flip_y and force_nonempty option -Add: sch-rnd on the bridges drawing and Ringdove listing -Add: install resources/ when installing doc -Update: conf tree docs generated with the centralzied tool (removing excess pcb-rnd from titles) -Update: dotdir node in conf tree doc -Update: user manual: prefer sch-rnd over gschem -Update: use nlnet logo for the link [export_bom] -Fix: ignore subcircuits of extended objects [export_fidocadj] -Fix: ignore subcircuits of extended objects [export_gerber] -Add: let cam override "layer group is empty" decision [export_ipdcd356] -Fix: ignore subcircuits of extended objects [export_oldconn] -Fix: ignore subcircuits of extended objects [export_openscad] -Fix: don't hardwire pcb_ prefix in generated scad script, read it from a global var so later it can be changed -Add: export option 'prefix' to change module names to allow multiple exports to be used in a single large project -Add: do not hardwire board thickness 1.6mm but use the standard thickness query between top and bottom copper -Add: support for openscad-origin (object attribute) to set 0;0 of the board on the x;y plane [export_ps] -Fix: restore config after the export so that forced conf sets (like flips) are reverted -Add: set librnd's ps_faded before rendering a layer, depending on xform->layer_faded -Add: let cam override "layer group is empty" decision in both ps end eps -Add: --enable-flip in eps to respect flip_x and flip_y [export_stl] -Fix: ignore subcircuits of extended objects -Fix: initialize triangulation pool large enough to host cutout coords as well -Fix: use rtree search for cutout objects so that ones from subcircuits are picked up as well -Fix: remove temporary cutout polygons before uninitializing the cutout poly vector -Fix: separate export options into per format arrays so file names and other settings are remembered separately when exporting from the GUI [export_xy] -Fix: ignore subcircuits of extended objects -Fix: get the format enum initialized when called from the export() action -Add: make enum values (format template names) available for --help [exprot_png] -Fix: don't override onsolder-rendering in cam mode, let the cam rule decide [footprint] -Add: openscad: 1008, 1210, 1806, 1825, 2706 SMD model -Add: openscad: SOT143, SOT223, SOT25, SOT26, SOT323, SOT232D SMD model -Add: openscad: SOT325, SOT325, SOT23, SOT89, SC90, SOD110, SOD80, SOD87 SMD model -Add: openscad: SC70_3 uses SOT323 package model -Add: openscad: SC70-4 3D model -Add: openscad: SOD80 3D model compatible with minimelf -Add: openscad: SOD106A, MPAK 3D model -Add: openscad: 3 and 5 mm LEDs, TO92, TO39(-3), TO18, OSC14_8 -Add: openscad: HC49*, HC51, TO220*, TO126, TO251, TO247, TO264 -Add: openscad: MULTIWATT*, HEPTAWATT, PENTAWATT -Add: openscad: 3D model for 6x6 mm tactile switch -Add: openscad: BNC, DC power jack, DSUB connectors [menu] -Add: hotkey {f f s} for import (fetch) schematics [oldactions] -Fix: ignore subcircuits of extended objects when listing rotations [propedit] -Fix: relative set on geo fields is not mistaken for absolute set -Add: pressing enter in the value input of the "new attribute" dialog should be the same as clicking on ok -Add: propset(rename/a/oldname, newname) renames the attribute (in an undoable way) keeping its value [query] -Fix: query() action syntax includes the optional scope argument [renumber] -Fix: ignore subcircuits of extended objects [tests] -Fix: filter out pup soft uninit warning to reduce noise -Fix: strflags: wront printf format for unsigned long int in hex -Fix: uniq_name: wrong array index integer width for printf %d -Fix: cam refs: 0 is written as 0.000 in current code -Add: test board for different disjoint padstack-padstack touches for find.c [tool_std] -Fix: arrow tool timer drops current click timing if the board got unloaded (or switched) meanwhile, to avoid operating on invalid or background board pcb-rnd 3.1.0 (r37222) ~~~~~~~~~~~~~~~~~~~~~~ [asm] -Cleanup: rename row[] to cell[] (tree code naming convention) [build] -Cleanup: missing #include (exposed by hid.h not always included) -Cleanup: simplify util Makefiles using vars defined in librnd.mak -Fix: use detected CFLAGS for compiling utils and tests -Change: switch over to librnd4 installation [cam] -Fix: pass on action design as the design-to-be-exported from the cam action (the code doesn't rely on PCB anymore) [core] -Del: remove 'reverted' parameter of pcb_board_replaced() - long unused, incompatible with the GUI moved out to librnd -Del: config node rc/have_regex: was hardwired 1 for many many years because of genregex -Fix: do not export heavy terminal marking (overlay) when when export is done from the GUI -Fix: netlist: do not make 0-sized allocation on subnet mapping -Fix: crosshair shouldn't register new tools before the GUI is up -Fix: respect render-above/render-below setting of the GFX object when searching overlapping objects by location -Fix: gfx rotate operations should generate new pixel content -Fix: mark the drc flag "omit from list" in flag_str so that the propedit gets to display exportsel which shares the same bit -Fix: inhibit menu merges while creating a new board so there's no invalid menu handling by a menu update between the old board already free'd and the new board not yet created -Fix: do notdraw pixmap 'X' on missing pxm render if target is an exporter, not a GUI (at the moment the default should be that we are not exporting pixmaps) -Change: switch over to librnd's font -Change: mark conf setting editor.beep_when_finished obsolete [dialogs] -Del: preferences dialog, library tab: no need to free tree-table cells, librnd4 will do that -Fix: use the right config node path for setting CLI history size in preferences general tab -Fix: set expose context ->design before calling main expose -Fix: generic view dialog should activate global flip on preview so that the views follow board flips -Fix: preferences lib tab: memleak on excess strdup() for 'path expanded' label -Fix: preferences dialog, library tab: used the wrong context pointer in the help button implementation -Fix: uninitialized variable caused save-as format options showing up randomly -Fix: strdup() cell value for cell modification, librnd4 API requires that [doc] -Fix: list menu keys for all plugins as well -Fix: pass on LIBRND_LIBDIR to datasheet.sh when run from Makefile to avoid error on gnuism -Update: menu key list: new format, list all plugins, include source -Update: key tree svg and txt -Add: wishlist items (2023-01 wishlist thread) [export_c_draw] -Fix: don't use global design when it is available from argument -Fix: set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_debug] -Fix: don't use global design when it is available from argument -Del: don't define set_crosshair, use hid_nogui fallback [export_dxf] -Fix: don't use global design when it is available from argument -Del: don't define set_crosshair, use hid_nogui fallback [export_excellon] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_gerber] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_oldconn] -Del: don't beep when finishing the export [export_openems] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_openscad] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_png] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose -Del: don't define set_crosshair, use hid_nogui fallback [export_ps] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose [export_svg] -Fix: don't use global design when it is available from argument; set expose context ->design before calling main expose [find.c] -Fix: gfx object should return explicit "no intersection" instead of assert so an accidental {c f} over a pixmap won't cause problems [footprint] -Fix: parametric common: do not generate square pad smaller than 4 nanometer to avoid polygon corner cases -Fix: parametric common: minimum thickness for smd pads so there's no invalid poly -Fix: common_subc: subc_proto_create_pad_rect() passed the wrong argument to paste and mask offset calculator -Fix: common_subc: subc_proto_create_pad_rect() called the wrong function for mask offset calculation (so it used paste defaults when mask was not specified) -Fix: common_subc: if paste/mask ratio is empty string, don't use it as a value but fall back on defaults [gsch2pcb-rnd] -Add: set up exec prefix [import_sch2] -Fix: don't crash in path resolver when there's no design path [io_hyp] -Cleanup: decide what to do with parser debug, remove hint on unsupported action arg [librnd4] -Update: follow librnd4 API changes [millpath] -Fix: don't call text object decompose with NULL transformation in toolpath calculation, that'd lead to a segfault [oldaction] -Del: Bell() doesn't beep but throws an error [query] -Fix: net_len shouldn't crash on boards without any padstack (don't search NULL padstack tree) [report] -Fix: allow net length (hotkey: {n l o}) searches originating from subc parts (e.g. a terminal) as a fallback [tests] -Fix: propedit test needs to use locally defined ASSERT(), can't depend on assert() being accessible (it's turned off in production) [tool_std] -Del: rat line draw doesn't beep when object clicked is not a terminal (this beep was really a no-op in many cases) -Fix: allow GFX (pixmap) objects to be locked/unlocked by the lock tool [util] -Fix: bxl2txt needs to have an extra -I calculated for librnd4 -Fix: bxl2txt: use the CFLAGS as detected (-O3 and -DNDEBUG for production) -Del: deblist.sh - not used by anything anymore -Del: devhelper's 404.sh: it's enough to keep one copy in librnd -Del: chglog scripts - use the one in librnd -Del: include, comment and copyright source crawler scripts - use the one in librnd -Del: rename scripts - use the ones in librnd -Del: "TODO grep" scripts - use the one in librnd -Del: local implementation of awk_on_formats - use librnd's -Move: html dialogs generator from doc to util to be shared with other apps later -Cleanup: list_dialogs doesn't get dialogs exrta from a file but from a shell var to make the system more modular and easier to reuse