pcb-rnd 1.2.7 (r13656) ~~~~~~~~~~~~~~~~~~~~~~ [padstack] -Add: pad stacks: generic object for pins, pads , vias and holes [core] -Fix: when a new file is created by a save and there's no format preference of the board, the "by file name extension" heuristics should pick the matching plugin with the highest save_preference_prio value instead of picking the first available (fixes the bug that new boards were saved as lihata v1 instead of lihata v4) -Fix: conf: mkdir ~/.pcb-rnd if does not exist so user config can be saved on request -Fix: Display(ToggleGrid) action now sets the grid relative to the crosshair, not the mouse cursor position -Fix: Draw buffer lines/arcs as outline instead of thin-draw. Solves problem with zero length lines -Fix: Draw pin/pad labels on top of other layers -Fix: ElementList(): get original-element rotation, offset and side uniformly, both for elem and subc -Fix: Far-side composite silk was being drawn in front-side colour -Fix: SetValue() text scale change with the wrong increment -Fix: buffer is not bound to a board, not even after a board is loaded into the buffer; buffers should be board-neutral -Fix: buffer paste layer binding bug: if the buffer has no layers only globals, don't bother copying layer objects -Fix: check if layer is not null (fixes polygon undo bug) -Fix: data model bug: when deleting an object, it is copied to the list of removed objects; do not clear the parent field after the deletion, but leave it to point to the data of that list -Fix: don't clamp arc angles between 0 and +360 but -360 and +360 - this lets the user explicitly set start angle or delta angle to -90 -Fix: don't select locked objects -Fix: draw padstack holes after padstack shapes (some exporters, like ps, depends on overwriting pixels with holes so holes need to be drawn last) -Fix: import board to buffer layer mixup: the code shall convert all imported layers to dangling bound layers first, then do the binding to the current board -Fix: memory leak: buffer uninit: don't do layer binding right before all data is free'd -Fix: memory leak: default layer names in pcb_data_t destroy -Fix: memory leak: design path and real file name of the board to be loaded in case the load fails -Fix: memory leak: hid color cache destroy should free the names allocated by the lib -Fix: memory leak: on footprint plugin root path -Fix: memory leak: on plugin dir builds -Fix: pcb_loop_layers() doesn't depend on global PCB -Fix: pin/via in box macro: true only if the whole pin/via is in, ring incldued, not if the center is in -Fix: quoted-string printf handles empty string properly -Fix: remove buggy optimization: do not rotate the bounding box on 90 deg rotation, but recalculate - because of our open/closed boxes, rotation breaks the optimization -Fix: remove dangerous pcb_get_num() from the API -Fix: rounding error: repeated 't' and 'T' text value changes won't get the text scale drifting by a few percent -Fix: selection box bug: semi-negative selection failed on lines and arcs -Fix: text draw doesn't blindly trust that the layer is a real layer -Fix: when drawing an object preview, temporary switch off flips -Fix: when drawing objects on bound layers (e.g. a subcircuit for a preview window), use a more advanced color logics: objects on top copper and silk layer should have board colors, the rest should have far-side color -Fix: when importing a board into the paste buffer, do not add the current board's layer stack on the buffer before the load - let the loaded board decide about its layers -Fix: when picking the color for drawing an object on a bound layer, pick the real color right from the config, not the layer's color - layer's color is 'infected' by side flips -Change: rewrite pcb_select_block() with rtrees so it can consider floaters -Cleanup: API in headers shall contain parameter names; remove useless doxygen comments and add shorter, but more useful plain C comments -Cleanup: disperse objects call doesn't rely on PCB -Cleanup: remove PCB-> references from data.[ch]] and from layer rename -Cleanup: remove code duplication in layer rename low and hight level -Del: get rid of vtptr in favor of stock genvector vtp0 -Del: retire free_atexit() - rather depend on uninit functions -Update: Enable cycledrag in rubberband mode -Add: API for properly destroying a HID color cache (to let exporters plug memory leaks) -Add: Backup() action to force a backup - useful for testing dangerous actions -Add: HID config option for enforcing composite draw - requred by png photo mode -Add: Reset the rubberband before looking-up new rubber lines when cycle-dragging -Add: Support for rubberband when moving arc points -Add: crosshair snap: polygon center if the polygon is a terminal and the center point is within the polygon (center as in: bounding box center) -Add: data helper function that lists terminals within data -Add: data mirror optionally mirrors text (by sending text on the other side) -Add: disperse elements now works on subcircuits as well -Add: extend the menu key handling API to receive both the raw base key and the translated key character from the HID -Add: extend the wireframe line draw API so that it has an argument for square cap lines -Add: free-rotate-at-cursor call -Add: function to list objects by type and mask into a pointer vector -Add: generic, flat data iterator on the children of pcb_data_t -Add: import subc, not only element, when replacing existing elements -Add: loop_all and obj_any should include subc -Add: noclip version of the move operation on the basic object types -Add: operation for pure clipping (clearing or restoring poly) of the basic objects -Add: pass a flag to search-by-location to handle floaters; search code can pick floaters over subc -Add: pcb_data_bbox() can ignore floaters -Add: portable fileno() wrapper -Add: portable milisecond sleep API -Add: standard operation: free rotate (on all existing object types of the new model) -Add: text "flip side" is really a latent mirror - give it the usual y_offs so it works properly in subc mirroring -Add: when moving floaters, draw a xor-line back to the origin of the parent subc (emulates moving name of an element) -Add: optional per object color override [layer] -Fix: wrong pcb printf args on layer edit attributes window title build -Fix: when setting up all-layer bindings to a board, do only as many layers as the board really has and remember this number in new data -Fix: layer type lookup shouldn't crash on UI layers -Cleanup: remove global var PCB dependency -Cleanup: remove redundant bound/real .name fields, use a common .name field - both have names and the two fields used to be one the same address anyway -Cleanup: move grp to under meta.real - bound layers are not in groups -Del: old macro to determine if a layer is bound, using indirect data - depend on direct data -Add: copper layer group list cache for fast bbvia lookup -Add: central layer stack free function -Add: function to convert all layers of a pcb_data_t * to dangling bound layers using a reference layer stack [subc] -Fix: LoadFootprint() accepts subc as a footprint -Fix: always display the refdes in the top-left corner of the dashed subc outline, even if the view is flipped -Fix: crosshair object snap: subc origin should be snapped to -Fix: don't draw at every subc op, that slows down rat find -Fix: dup(): copy subc metadata (e.g. attributes) before copying layer data; some layer data, like text bounding box, does depend on this metadata -Fix: include the name of the layer in the error message when a subc layer can not be bound -Fix: instead of direct move, use 3 stage move: restore polys, move, clear polys (fixes Ade's and JG's bugreport about small smd resistor clipping bug) -Fix: keep track of whether a buffer is loaded from the outside or is from the board; when loaded from the outside, subc pasting is affected by current side, else side is kept (this fixes a decade old bg about element having to be put on solder or component side on the moment of load, not on the moment of paste) -Fix: poerply dup the name of layers on creating new subc layers when converting from buffer -Fix: subc load to buffer: list type correctness (subc list instead of element list) -Fix: swap side needs to modify the subc pointer (creating a new subc) -Fix: terminal rendering: use pixel based terminal layer mark size -Fix: update dyntext texts when parent subc attribute changes so that the new bbox is calculated -Fix: when a subc/term poly is copied, it should create its clearance -Fix: when find.c removes flags, it should recurse to subcircuits as subcircuits parts may be found too -Fix: when placing a subc on the solder side, the other-side part of the operation shall not be undoable, it's just part of the placement -Add: DRC silk min width considers arc -Add: Flip() on selected objects includes subcircuits -Add: action ElementList() can replace element to subc -Add: call to determine if a subc is on top or on bottom, using the aux layer -Add: call to send all selected subcircuits to the back side -Add: free rotate operation -Add: free rotate subc when rotating a buffer -Add: helper function for 90 deg subc rotation -Add: high level move() call -Add: implement DRC minimal silk width check for subcircuits -Add: implement nonetlist flag set (alt+n) -Add: implement undoable subc removal -Add: minimal silk width DRC violation: also select the offending lines -Add: prepare ElementList(), ElementSetAttr(), ElementList() for subcs -Add: preview draw function -Add: properly draw the xor-outline of the subc while visualising the buffer, even on the bottom side -Add: search subc by ID -Add: support for loose subc (in-place editing, ignoring the 'subc lock' for subc parts) -Add: the floater flag (and concept); buffer->subc conversion creates refdes text as a floater -Add: when loading a footprint as board (footprint editing), enable loose subc [term] -Fix: poly-poly clearance: consider all layers in the same (real) layer group -Fix: delayed label draw: do not draw layer object terminal ID on board if it's on the other side (mimicks the old pad behavior) -Fix: reset delayed label draw array after each succesful batch draw [thermal] -Add: poly thermal calculations -Add: line thermal calculations -Add: arc thermal calculations -Add: padstack thermal calculations [tool] -Split: tool implementtion from random parts of the code regrouped into per tool files -Add: function callback API for tools [doc] -Change: cut ties with gEDA -Add: minimal description of subcircuits in data model -Add: document padstacks and bbvia in data model -Update: current list of keys -Add: a note about explicit refresh in fp_wget -Add: document what's new in lihata v4 -Add: explicit history section for 2016 and 2017 [autocrop] -Add: move padstacks too -Add: move subcircuits [autoplace] -Add: handle subc and padstack and layer object terminals on connection mapping [brave] -Add: brave mode for testing new feautres (with dialog box) -Add: brave mode for "use padstack instead of via" [draw_csect] -Add: editable outline layer group [dsn] -Add: export subcircuits as parts (without terminals) [export_dsn] -Fix: missing layer name quoting -Fix: don't use g_free() on normal strdup()'d padstack strings -Add: export polygon based heavy terminals of subcs -Add: export subc pins [export_png] -Fix: photo mode mask broke because of lack of proper compositing; add basic compositing draw -Fix: force compositing draw in photo mode, as photo mode will try to combine the output layergroup by layergroup and non-compositing may merge multiple groups in a single session -Fix: properly draw darkish shadow for all internal/other-side copper layers in photo mode -Fix: always do the fr4 color bending, not only on 2 layer boards -Fix: free erase and im after finishing the export so that a new export won't inherit a potentially smaller image buffer; this fixes 'mask drawn too small' -Fix: memory leak - free all the large image buffers after finishing the export -Fix: memory leak on colors and brushes -Tune: photo mode mask shadow color [export_ps] -Fix: --ps-color got in a never-running part of the code after the composite layer rewrite -Fix: drawing drill holes -Fix: overflow in media size [export_svg] -Fix: implement missing fill_poly_offs - required for exporting padstacks [extedit] -Add: new plugin for external edit of subcircuits [fp_fs] -Fix: silently ignore .lht and .subc.lht suffix when matching unsuffixed footprint names so subcircuits are found [fp_wget] -Fix: broken string end comparison -Fix: if wget fails, remove the partial/empty download so thet cache doesn't get fooled by the file date [gtk] -Fix: use the proper function to destroy the command dialog. -Fix: proper toggling of plugins/hid_gtk/use_command_window conf. setting -Fix: display/hide the embedded command combo box, in fullscreen too. -Fix: proper management of timer avoids a GLib-CRITICAL -Fix: property editor preview: memcpy from the wrong layer stack -Fix: text scale change should get the status line redrawn -Fix: partial fix for non-US keyboard issue; introduce in the menu files -Cleanup: use a generic status line update instead of many copies of the same function -Change: do not thin silk lines and arcs for element preview: this feature won't be available for subcircuits -Change: don't set termname on pins and pads when making the preview dialog so that later the copy can be avoided -Change: "element" preview upgraded to generic object preview so that it can display subcircuits too -Change: Full Screen button is now a smaller icon button. -Add: implement the attribute dialog widget hide/unhide API -Add: DAD set() can set the label on a button -Add: attempt to explain window geometry save error (after failing on a missing project or read-only user config) [hid] -Fix: in gtk, the only safe way to unwatch a file from a watch callback is using the return value; upgrade the HID API to support this usage of the callback return value; fixes subsequent calls of extedit -Cleanup: remove PCB_HATT_MIXED: we have PCB_HATT_COORD for the common case instead, and the uncommon case should be solved using a HBOX -Add: When drawing lines, treat negative width as pixels instead of world coordinates (marks/labels can be drawn in pixel widths) -Add: DAD boxed and tables are scrolled when the scroll flag is set -Add: new API for drawing a filled polygon with offset -Add: DAD interface for coord edit -Add: api for hiding/unhiding widgets on an attribute dialog -Add: DAD support for REAL fields -Add: DAD support for uninitialized dlg (to be used in structs, for non-modal support) -Add: attr dialog API adds a new argument for dialogs being modal (so that non-modal DAD dialogs are possible) -Add: event callback in the 3-stage DAD API; attribute dialog button event for window close [hid_gtk2_gl] -Fix: Zero length square capped lines were not drawn -Fix: GL HID was drawing far-side silk on top -Add: Draw local grid in GL hid [import_*] -Fix: cancel on import doesn't mean syntax error [import_hpgl] -Fix: use only as many layers as many pens are in use in the file; name the layers by pen number [import_sch] -Fix: proper subst in schematics path [io_eagle] -Fix: correctly parsing larger SMD pad dimensions. -Fix: Rectangle parsing now uses design rule ms_width, reduced code duplication -Fix: parse signal, element, symbol etc name fields as string, not Int -Fix: arc parsing for linetype 127 -Fix: drill and diameter doubled as required for through hole pads/pins -Fix: netlist node names default to pin number if no name string found. -Fix: pathological arcs in binary format with start + delta -Fix: text on layer 51 now created on 21, and invalid element names '-' changed to 'HYPHEN' to fix netlist parsing -Fix: element name substitution if element name is '-' change to 'HYPHEN' -Add: post-processing to fix nested 'signal' nodes; smilie's missing wires are now being parsed. -Add: eagle binary netlist parsing/loading of 'element_name-pin_number' for given net -Add: using binary design rules values for mdWireWire, msWidth, rvPadTop, rvPadInner, rvPadBottom -Add: further clarification of requirements for lib/pkg pin/pad "name" retrieval for nets -Add: reinstate rendering of arcs on tDocu layers within elements, tested in v3 binary -Add: layers 51 (tDocu) and 52 (bDocu) supported as layers in top and bottom silk groups -Add: support for Eagle binary and XML library files (.lbr) -Add: read.c adds description, element given in library file, and NAME, VALUE to footprint generated -Add: support for loading dru parsing [io_kicad] -Fix: correct handling of (at X Y rot) rotation value for footprint padsw! in layouts -Add: support for title_block, and fixed premature module parse termination with unsupported fp_line layers [io_lihata] -Fix: when loading a subc, ignore floaters in bbox calculation -Fix: parse element does the same footprint search procedure as io_pcb does -Fix: don't attempt to close the footprint file when open failed -Fix: when loading polygon points, set X2 and Y2 to 0 to keep compatibility with the poly code assumptions - fixes random-jumping poly corners -Fix: respect the version the user request for saving a subc in, but bump it (and warn) if there are padstacks in the subc -Fix: when loading subc from file, parse the version separately and accept anything from v3 up -Fix: when loading subc as a board, make sure all polygons are clipped -Fix: memory leak: free error message string after load -Fix: memory leak: free() polygon point table cells before overwriting them -Fix: memory leak: macro parameter evaluation side effect caused multiple copies of whole subc subtrees never getting in the final document tree -Del: remove the hackish PCB swap - now that the layer code is PCB-safe -Add: lihata format v4, support for padstacks [lesstif] -Fix: Tool ghost is shown, now. -Add: DAD: implement the attribute dialog widget hide/unhide API, make sure hbox/vbox/table widgets are stored -Add: DAD: set() can set the label on a button -Add: DAD: support for non-modal attribute dialogs -Add: DAD: ok/cancel button callbacks on attribute dialogs [mincut] -Workaround: broken find.c returns rat point as rat line -Add: show a progress bar after 1+ second of mincut hunting; cancel should revert to dumb indication [polygon] -Fix: poly-poly clear and restore shall not run on polygons that are not part of a board (e.g. buffer polys) -Fix: bounding box calculation allows negative coordinates -Fix: recalculate bounding box after 90 deg rotation - simply rotating the box won't work because the box is 'closed' (increased by 1 on the bottom and right) -Fix: coord size assumptions -Fix: poly-poly clear: always execute ppclear and pprestore on a board layer -Fix: poly-clear-poly: if two clearing polys collide, the code shouldn't return error, that'd cause other, legit clearances to be omitted (there's no real poly z order) -Fix: undo/redo clearance asserts: high level poly code should not attempt to clear/restore polygons on pcb_data_t that is not the data of a board -Add: low level function to calculate whether a line interstects with a pline -Add: low level functions to efficiently determine whether a circle is within a polyline or corssing a polyline (or out of the polyline) -Add: helper functions to peek into the vectors for previous/next contour point without bumping the iterator -Add: inline helper function for setting up a polygon iterator on a polyarea -Add: low level polyarea move function [report] -Add: report unclipped poly area (using currently active unit) -Add: search padstacks for holes [rubberband_orig] -Fix: Rubberband lines with pins/pads didn't always work or could crash due to uninitialised variable -Fix: Don't create more than one rubberband object per line when checking polygon connections. -Add: Rubberband support for subc polygons -Add: Rubberband support for subc line terminals -Add: Rubberband support for subc arc terminals [scconfig] -Fix: unportected "." in regex made tool_lock.c look like a _l.c generating broken C compilation rules -Fix: libminuid should be compiled with the CFLAGS and LDFLAGS detected -Fix: map_plugins.sh warns for invalid default -Fix: map_plugins should sort deps for reproducible output -Fix: instead of guessing where to include opengl from, rely on the include prefix detected by scconfig -Add: define PCB_INLINE to simplify the code for static inline functions -Add: proper detection of fileno() - it's _fileno() on windows -Add: detect GLU if hid_gtk2_gl is to be compiled -Add: detect GLU and generate opengl.h accordingly [select] -Fix: missing case for box-near-check for element-text (made unselecting refdes hard) [shape] -Add: shape generator, with dialog box support [smartdisperse] -Fix: don't cast coord to long - coord may be wider -Add: handle subcircuits -Add: mark non-selected-visited should work on subc as well [undo] -Fix: a totally empty undo buffer is not an error, not even if serial==0 in this case -Fix: pcb_undo return value was not consistent, now it returns -1 on error and 0 on success [util] -Fix: keylist cleans up strings in the key column so "/" is properly displayed -Update: teach keylist to recognize in key bindings -Update: gsch2pcb-rnd help text to reflect the new way the import works -Add: install fp2subc pcb-rnd 1.2.6 (r11992) ~~~~~~~~~~~~~~~~~~~~~~ [core] -API CHANGE: the attribute system requires unique keys per attribte list; this will keep things concistent as the code used to silently ignore redundant attributes -Fix: don't merge lines (when drawing extension of an existing line) if their clearance differs -Fix: pcb-printf: %mk really prints decimil and not some random "sane" unit -Fix: Mode(escape) should undo Note as well, so if the mouse button is still pressed there won't be a selection box after the release -Fix: select polygon only if the negative selection box really touches it -Fix: function pcb_is_arc_in_rectangle besides crossing, now checks if a whole arc is inside a rectangle -Fix: select arc only if the negative selection box really touches it -Fix: remove duplicate lists of "what flags this object type can have" - rather have a function that calculates it from the flag_str table and cache it -Fix: data bbox shouldn't improvize per object type but should depend on each object's bbox calculation function -Fix: don't change the ID when text is put on a layer - instead, invent the ID when the text is created (to prevent unintentional ID changes, e.g. on lihata load) -Fix: rotate line point relative to the passed rotation axis, not the line endpoint (fixes undo rotate bug) -Move: flag help text from doxygen comments to the struct so the code can use them -Add: attribute post value changed callback -Add: copy-back API in attrib that minimizes changes (helper for HIDs) -Add: new interpretation of clearance=0: same as if the clearline flag is not set -Add: Wireframe draw mode -Add: marker snap depends on config -Add: normalize() action for normalizing (clipping and moving into drawing area) data or the board -Add: pcb_subst_strdup() option for interpreting backslash sequences -Add: flagedit (accessible from the menu) [data] -Change: switch over from old default.pcb and implicit mask/paste layers to new, lihata based 2 and 4 layer defaults -Update: names in the desktop file, to pcb-rnd [dbus] -Del: retire this old, unused plugin [diag] -Add: integrity check: attribute list length -Add: formatted flag dump with new action dumpflag() [dialogs] -Add: new plugin for moving dialog boxes to -Add: flagedit dialog -Add: layer bindings dialog [doc] -Add: new composite render API documentation -Add: explain paste buffers -Add: refine indent recommendations -Add: alien format description: Koen's documentation on the hyp format -Add: minimal openscad documentation and an example model (for 1206) -Add: vendordrill plugin documentation -Add: document distalign -Add: document autocrop [draw_fontsel] -Add: replace font button [export_dxf] -Del: retire the old dxf code - will be rewritten from scratch -Add: new, lht based template for the base dxf as saved from librecad [export_png] -Change: switch over to the new composite HID API [export_ps] -Change: switch over ps output to the new composite API -Change: switch over eps to the new drawing mode API - eps is incompatible with composite layers (lack of features in the postscript language) -Fix: typo made composite layers empty -Fix: proper max val for calib - let x and y calib take values between 0 and 2 -Fix: don't omit drill rings when drill helper is on -Fix: when drawing outline on a drill layer (forced by user option), turn off global.is_drill temporarily to get the right colors [export_svg] -Change: switch over to the new draw mode HID API -Fix: svg_rect() draws clipping properly -Add: disable photo mode for composite (they are incompatible) [font] -Add: be able to replace font in place -Add: be able to replace the default font, font #0 [fp] -Add: accept footprint library search paths starting with '?' - means errors should be ignored -Change: default config won't emit error on missing library path ../pcblib and ~/pcblib [fp_fs] -Fix: don't segfault on tag-looking empty constructs (##) in fp-looking files [hid] -API CHANGE: new hid render API with better support for rendering composite layers groups -API CHANGE: new, Dynamic Attribute Dialog (DAD) API [hid_gtk2_gdk] -Update: Updated the GTK2 GTK HID to use the new HID API -Fix: preview expose saves/restores the base canvas properly so that preview renders don't mix with the main window's -Fix: typo: filled poly should make changes on the clip buffer when in composite draw -Change: replace the mask based composite drawing code with the new composite API -Cleanup: the pixel/clip naming conventions -Cleanup: reorder priv struct members to group available canvases and currently active drawing settings -Workaround: for the flashing subc border caused by xor draw in non-direct mode [hid_gtk2_gl] -Update: Updated the GTK2 GL HID to use the new HID API -Fix: Respect the fullpoly flag when drawing polygons. Draws all poly parts, not just the largest one when the -Fix: Poly islands within holes were not being drawn in fullpoly mode. Reordered the rendering operations so that -Fix: Layer stackup window upside down. The view matrix is now set for each layer group as well as at the [hid_lesstif] -Change: update the mask rendering code for the new composite API -Fix: make sure lesstif cli arg attributes are registered before arg parsing so that CLI args are accepted -Fix: save all pixmaps when drawing dialogs (fixes lesstif dialogs crashes) -Fix: swapped coordinates when panning in dialogs - pan works properly in dialogs even if the board is viewed from the solder side -Fix: set proper background color for preview dialogs -Fix: move blit-to-window code from SHOW_LEAVE to SHOW_DRAW (fixes dialog glitches at mouse events) -Fix: save main_pixmap instead of pixmap (fixes pinout preview dialog) -Fix: don't let scroll go too far from the board - avoids runtime lesstif warnings -Add: support for the new attribute dialog features [import_hpgl] -Add: libuhpgl, a mini-lib for parsing HPGL -Add: plugin to import lines and arcs from HPGL [intconn] -Fix: centralize the element-related so that pin-pad and pad-pin intconn would work too -Fix: short eval code used the wrong check for nonetlist flag indicating intconn jumpers with pins shorted -Fix: remove intconn from flags and make it a good old common struct field - for easier access and cleaner data structs; keep file format compatibility with .pcb, and lihata board v1 and v2 -Fix: do not set ->intconn directly, set the attribute instead and let the attribute post hook set the struct field; this will preserve intconn as an attribute on save [io] -Add: set conf node rc/paths/design to the directory path of the current design; this can be used in paths as substitutions using $() -Fix: don't crash if the preferred IO plugin doesn't offer saving the footprint [io_eagle] -Fix: eagle layer 20 (dimension) [instead of 199 (contour)] now maps to pcb-rnd outline layer -Add: reading in round/square/octagon pin/via flags in binary. Padstacks required for long/rounded. -Add: support for rounded SMD pads. Pads now either square, or round. No roundrects possible yet [io_lihata] -Change: bump the priority of lihata v3 so it's the default save format now -Fix: dummy node should be created with the name the caller requested, not hardwired "attributes" -Fix: make sure to parse attributes after flags - attributes may effect flags -Fix: don't attempt to save attributes of bound layers - they have none -Fix: load the layer combination flag before doing the layer binding -Fix: persistent save shouldn't crash if an in-memory text node has NULL value, it should inhibit saving that node instead -Fix: always save layer's obejcts list, even if empty, so the persister can merge the lists -Add: be able to load a subc as a footprint for editing -Add: from version 3 save and load polygon clearance field -Add: write_element hook in the v3 format - save subcircuits [layer] -Change: default layer group names should contain _ instead of space because group names potentially end up in file names and we don't like space in file name -Change: default visibility turns off mask and paste layers - they are distractive 99% of the time -Fix: loading a pcb into the buffer should convert real layers to bound layers - that's the only way a buffer can work -Fix: update layer color cache on config change -Fix: single negative silk renders properly -Fix: don't consider a copper layer empty if it has only via/pin rings on it -Add: attribute edition of the current layer in the layer popup menu -Add: menu for buffer layer binding change [lib_polyhelp] -Add: PolyOffs() action that duplicates selected polygons with an offset on their size -Add: ToPoly() action that converts any group of objects to a polygon [mincut] -Fix: corner case segfault (reported by barjac) [openscad] -Del: retire the original openscad exporter; full rewrite follows -Add: rewrite from scratch; support board outline, silk, copper, mask and element models [poly] -Add: poly-poly clearance when CLEARPOLYPOLY is set [propedit] -Fix: display clearance as copper-to-copper gap width -Add: force absoltue numeric value with a # prefix - useful for arc angles, e.g. #-90 means "value -90" instead of "decrease current value by 90" [report] -Fix: use uniform terminology for Clearance and arc width -Add: subcircuit report [tests/rtt] -Fix: don't fail if convert(1) (and ImageMagick in general) is not installed -Fix: make clean removes out/*/* -Fix: when dealing with gerbers, don't ignore the drill (*.cnc) files -Fix: remove all nelma png files - not going to compare them -Move: validation helpers into a separate dir to reduce number of files in main dir -Add: composite silk test input [rubberband] -Update: Lines must be connected exactly by endpoints to other line endpoints to be considered for rubberbanding -Fix: rubber band keeps middle line dir now snaps to grid, undo works and fixed artifacts when moving line -Fix: Don't keep middle-line dir if the middle line is parallel to any of the rubber lines -Fix: keep middle-line dir would access the rubberband lines before it had established that there are at least 2 rubber lines. caused a crash [safe_fs] -Add: safe_fs API for wrapping all file and process access -Add: privisions for regex based rules to deny access -Add: API for opening a file with path substitution -Add: API for searching for a file to open recursively under a directory -Add: pcb_strdup_subst() can replace leading ~ with the user's HOME -Add: leading '?' in a search path means optional (don't throw error if doesn't exist) -Cleanup: unify the support of % and $() replacement in paths [scconfig] -Fix: BadWindow bug of hid_lesstif (force-order -lXm before -lXt) -Add: link-time error for using strcasecmp directly or bypassing safe_fs -Add: --force-all to override developer's decision whether a plugin is broken [subc] -Change: subc parent API change: don't return int but the parent subc - same for comparison, but more universally usable for other purposes -Fix: don't lose layer combining flag when copying subc from buffer to board -Fix: when loading subc into buffer, properly set up buffer offsets so that subc origin is the same as the buffer's origin -Fix: flip subc when placing on the bottom side -Add: subc terminals that interact with netlist -Add: understand the refdes attribute; print refdes on the subc layer -Add: gui action for editing attributes of a subc -Add: teach fp_fs to accept subcircuits as footpritns -Add: subcircuit build the layer binding dialog -Add: lock tool works on subc -Add: a subcircuit file can be open for editing, as a footprit file -Add: make sure element smash -> convert buffer to subc path preserves as many element features as possible -Add: poly-vs-poly clearance infra (required for subc terminals) [tests] -Update: conftest for the new conf_update API [text] -Add: new text flag: dynamic string in text (to permit % substitution) -Add: %a.parent.*% parent attribute subsitution [undo] -Cleanup: move undo action related call prototypes in a separate header to match the separate .c -Clenaup: move out slot field free code from the slot allocation code (slot allocation will be genealized) -Del: remove local undo list implementation, switch over to libuundo -Add: dynamic, variable size payload on allocation [util] -Add: bisect helper script -Add: menu2svg: draw the menu system using graphviz -Add: fp2subc: convert footprint from the old pcb format to subcircuit [vendordrill] -Fix: missing else made the loader think /drillmap is not a list -Fix: broken printout units; use %ml for mil instead of manual conversion -Fix: replace all %f with %ml for coordinate prints pcb-rnd 1.2.5b (r10635+bakcports) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Fix: import pcb into paste buffer layer binding bug - Fix: gerber drill file units - Fix: RTT tests shouldn't fail if ImageMagick is not installed - Fix: execution bug fix (do not let action scripts load from board files) pcb-rnd 1.2.4 (r10635) ~~~~~~~~~~~~~~~~~~~~~~ [subc] -Fix: saving buffer elements shouldn't ever save layer data; introduce an explicit flag for indicating the element-only intention to the io_ plugins so they don't have to guess from buffer layer names -Fix: poly plow: don't attempt to plow thermal if we are not on a board (but in a buffer - because of dynamic layer bindings) -Fix: find.c lookup code works in line->poly, arc->poly and poly->poly directions -Fix: autoroute should look at the rtree, not at the lists, to determine (recursively) if a layer is empty -Fix: bboard uses rtree instead of list for determining if a layer is to be exported, because of subc -Fix: don't check buffer validity in core before save, but check it in each io plugin because validity depends on the format -Fix: RemoveList of undo shouldn't set data->parent to PCB, as it is really independent of the PCB -Add: subcircuit object -Add: data model: consistent implementation of parent object, for all existing data -Add: integrity() checks for global object direct parents (via, element) -Add: pcb_text_dup() for pasting subcircuit text -Add: pcb_poly_dup() so that subcircuit paste can copy polygons -Add: poly dup_at() -Add: dup_at() for atomic objects -Add: missing Rotate90 operation for polygons - required for canonical operations on subc -Add: dup() functions for vias -Split: move text's XORDraw out from crosshair.c so that it can be reused in subc drawing -Update: menu files: save buffer is elements or subcircuits; load element/subcircuit in file/import [core] -Fix: break up buffer elements used the same copper layer for both top and bottom pads (bisecting thanks to: miloh) -Fix: limit thermal flag value to the supported range -Fix: don't run export on an empty board: it's probably an user mistake and some of the exporters would crash anyway (reported by miloh) -Fix: line mirror should update bbox and rtree -Fix: pinvia mirror should update rtree and bbox -Fix: arc, line, pinvia and poly mirror won't segfault if rtree is NULL (typical for buffer) -Fix: remaining rats or finishing the rats is no warning, but info -Fix: pcb_trace() should use pcb_printf() for the pcb-specific types -Fix: preserve attributes on line/arc/text/poly dup/copy/move -Fix: when split a line/arc because of insert point, copy metadata from the old line segment to the new -Fix: don't lose via name, number and attributes on copy/move -Fix: find-by-obj shouldn't ignore pads -Fix: Arc intersection bug -Fix: arc polygon clearance bug: arc conversion to polygon broke if radius was smaller than clearance (resulted in broken end cap and self intersection); implement a more expensive but safe way to construct it from three objects - such small arcs are rare anyway -Fix: Moving cursor with keyboard allows now leaving snapped pin/pad -Fix: actions don't rely on implicit XY coords, run the GetXY() (explicit query for coords); makes a difference when called from many -Fix: draw pins'/pads' names above the silk layer -Fix: toggleview() shouldn't crash on no-arg -Fix: when converting a value with unit to coord, clamp the result to COORD_MAX (instead of overflow) -Fix: mirrored pins/pads numbers after board flip -Fix: clearance for odd shapes on square+octagon -Fix: polygon arc clearance drawing rounding error: make sure the last point of the outer arc approximation is drawn; also make sure end cap starts exactly where contour ends -Fix: proper rounding in arc endpoing calculation -Fix: text line rounding error -Add: PasteBuffer() action for moving selection instead of a copy&erase combo (it should keep the ID) -Add: pcb-printf: %mq support (generic, configurable quoted strings) -Add: rtree iterator -Add: y_offs option to all low level mirror functions -Add: low level pcb_data_t move function -Add: pcb_data_t normalizer (to fix up board-too-small and negative coords) -Add: DumpPluginDirs() action and --dump-plugindirs command line switch to ease debugging -Add: central UTC date print for the export strftime %c unification -Add: pin/via and pad hashing functions geared for padstacks (ignore coords and names) -Add: help function to make a net connection list starting from an arbitrary object -Add: poly contour coord map function that iterates over all islands and holes -Add: polygon contour loop helpers -Add: helper function to determine if a pline is rectangle or not -Add: configurable backup format -Add: close polygon hole by double click -Cleanup: arc, line, element, pad, pinvia, poly, rat, subc, text op function names unified [layer] -Fix: don't segfault on resolving a bound layer ID without binding, rather assert -Fix: compositing: the function that decides whether a group is compositing should only care about negative composites -Fix: fake composite draw: optimization that temporarily fixes the composite silk and paste missing select color bug for the most common cases -Fix: do the fake composite layer draw hack optimization only for renderers that explicitly enable it because it interferes with translucency (useful mostly for sw rendering) -Fix: layer group vs. layer confusion made pad->ratline jump in find.c impossible -Add: function to calculate the distance between two groups on the stack -Add: function to count layer groups of a given type stepping through the layer stack in a given direction -Add: when abstracting an intern copper layer, calculate the copper layer offset -Cleanup: rename to pcb_layergrp_* for type naming unification [build] -Update: move genht out of liblihata to get a flat project structure [lib_polyhelp] -Add: function to trace a poly contour, from within the poly, with lines -Add: function to print a pline as an animator script -Add: horizontal and vertical hatching -Add: generic poly contour/hatch action: PolyHatch() [diag] -Add: auto-integrity checks when enabled -Add: check the undo stack integrity as part of the global checks [boardflip] -Fix: make the on-solder toggle flag universal that affects not only elements but text (for mirroring) [dbus] -Change: mark the plugin deprecated [draw_fab] -Fix: drill size units depend on the units setting in gui [report] -Fix: broken tabs [export_xy] -Add: template based output formats -Add: templates for gxyrs, TM220A p&p, macrofab, KiCad .pos -Fix: use the central UTC print function instead of strftime %c -Fix: cookie should not be bom's [export_ps] -Fix: attribute leak on uninit -Fix: arc corner case: don't div with zero if width is 0 -Fix: r=0 arc is a point -Fix: don't use %g for potentially large values, it will break the ps syntax with exponents [export_svg] -Fix: attribute leak on uninit -Fix: detect ellipitcal arcs and refuse to draw them -Fix: warn for elliptical arcs only once per gc (which is similar to once per export) to avoid flood of error messages -Fix: arc endpoint rounding bug; it is more portable and more reproducible to use pcb_round() [export_*, import_*] -Fix: use the central utc print function instead of strftime %c -Fix: import_tinycad memleak: free argc, argv after use by qparse -Fix: export_gerber: use pcb_author() instead of getting the user name directly to allow config override (all other exporters do this) -Fix: export_nelma: attribute leak on uninit -Fix: export_openscad: rounding errors -Fix: export_png: attribute leak on uninit -Add: config setting for default save fp format -Add: io_hyp: write .hyp files [io_eagle] -Fix: bottom side element rotation. -Fix: improved n*90 arc type parsing. non n*90 arcs still need work. -Fix: pad dimensions now being parsed -Add: infrastructure for abstracting the low level tree (xml vs. binary formats) -Add: parse the binary format -Add: "du" decimicron unit to unit.c and unit.h for eagle bin format [io_autotrax] - Add: read Protel autotrax/easytrax board files - Add: write Protel autotrax/easytrax board files [io_kicad] -Fix: ignore objects on unknown or unsupported layers with a bold warning, instead of returnning an error -Add: support for bleeding edge kicad 20170123 and (dimension ...) item on layouts -Add: infra for proper error reporting -Add: save: (descr "description") field to s-expression modules -Add: properly quote strings on save -Add: call the board normalizer after load because kicad accepts negative coords and we don't -Add: workaround for auto-creating In*.Cu layers - kicad seems to do the same [io_lihata] -Fix: when a .pcb backup file would be saved as .lht.lht.pcb, simplify it to .lht.pcb -Fix: starting from v2, save data's number-of-layers, not PCB's - subcircuits typically have less layers -Fix: reset fontkit and default font in parse_fontkit -Fix: remove backup save in .pcb as it has side effects that might change the board _before_ the lht save -Add: format version v3: subcircuits [io_pcb] -Fix: accept whitespace in read-check between pcb and bracket, element and bracket (so valid files are not refused) -Fix: make sure there's a top copper layer and a bottom copper layer when loading an .fp file directly -Fix: creating top and bottom copper should look up the layer group even in non-debug builds -Fix: free default font memory properly when parsing font from file -Fix: font reset mechanism for loading the (optional) font from a .pcb file and for loading a font from a font file; fixes double font load when the default font is changed [draw_csect] -Fix: never draw 0 thick lines, round them up to 1 nm; some exporters hate 0 thickness [font] -Fix: when moving a text without selection, draw the real outline, not the bounding box outline -Fix: generate the font change event after reading the new font, not before, so that the bounding boxes are calculated properly -Fix: generate the font change event with the right font ID -Fix: pcb_font_free() should free polygons and arcs of glyphs and clean the list items for reuse -Fix: don't overwrite valid loaded fonts' ID and don't free them after loading -Add: XORDrawText() draws the real outline of the text, not the bounding box [tests] -Fix: build error in uniq_name (genht moved) -Fix: orig: separate XY and bom testing; the plugin got split long ago -Fix: orig: uniq name for xy tests -Fix: orig: rename gerber3 reference layer file names to match the current stackup -Fix: orig: don't test bottom layer on gerber3: it's empty -Fix: conf and propedit test build: genht relocation -Del: don't set the fab user with a non-standard flag -Add: cli tester for pcb-printf %mq -Add: enable RTT by default [tests/RTT] -Fix: don't consider "can't export empty design" an error -Fix: reset search path for default.pcb so the embedded version is used even if there are others installed (to guarantee persistent IDs) -Fix: use compare(1) for bboard png comparison - different libpngs will result in different binary files -Fix: use explicit TEST author for testing the text drawn on some output -Fix: all-input/all-format test fails at the end if any test fails (but always attempts to run all tests) -Fix: run only those RTTs that have their plugins compiled -Del: remove the breadboard tests for now: these input don't make much sense in that context -Add: make clean removes everything from diff/ and out/ -Add: export test: -v for verbose mode -Add: in verbose mode, print all test names that failed -Update: refs for the new padrot input and rounding error fixes -Update: RTT: gerber refs for drill rounding bug fix and composite layers on mask -Update: RTT: get gerber tests to export the csect [gtk] -Fix: lib_gtk_hid shouldn't use the plugin control of lib_gtk_common (for cflags and ldflags) -Fix: gl: composite layer stenciling -Fix: gl: Disable thin-draw poly filling in the GL gui to match other HIDs -Fix: board-preview sets board extents as drawing size for proper zoom -Fix: undo bug: when gtk needs to run a getxy loop, it shall save the undo serial because the button release event in core is going to restore it -Fix: route style crash on menu: get the menu updated when route styles change -Fix: do not hardwire the .fp extension when saving a footprint, rather use what the io_plugin recommends -Add: create tooltips for the mode buttons -Add: make the DRC dialog reentrant -Add: use the new fp save format conf setting to choose fp format we are going to use -Change: DRC dialog uses the preview widget instead of pixbuf (portability) [doc] -Add: pick and place and xy origin tutorial -Add: implicit outline/origin board example for the xy origin tutorial -Add: design files for via thermals and via shape styles -Add: outline the user facing doc about pcb-rnd data -Add: incomplete intro to the user data doc -Add: initial v1.2.3 action reference appendix page -Add: initial combined pcbfab/pcbCAD/pcb-rnd glossary -Add: initial external resources links page -Add: table of dialog behaviors -Add: developer doc about polygon internals -Update: bridges with 3 new io_; replace graphviz with aagraph -Update: developer/data.html for subcircuits pcb-rnd 1.2.3 (r8962) ~~~~~~~~~~~~~~~~~~~~~ [core] -Cleanup: start remove hardwired global var PCB, make the API take the board pointer as an argument -Del: board color cache - use the conf -Del: no need to set silk layer colors to special, draw.c will handle that -Fix: human readable error message before abort() on unknown hid attrib type on cli-to-attrib conversion -Fix: select element only if its silk layer is visible -Del: show_paste is not a config setting anymore - normal layer group visibility should apply -Fix: ElementList() shouldn't crash on empty footprint description (reported by Evan) -Fix: don't segfault whenloading the buffer fails (e.g. source is non-existing file name) [layer] -Add: compositing layer draw for mask, paste and silk; positive vs. negative, auto vs. manual flags per layer -Cleanup: have a generic, draw-callback based PCB_LYT_DIALOG instead of a layer dedicated for fontsel; this makes it easier to introduce new dialog box layers/previews without having to register new layers -Fix: uninit in layer_vis to remove events registered earlier -Change: new interpretation of the mask draw API in the HID API: it's the generic composite layer draw API -Add: EditLayer() and EditGroup actions for changing layer/group name and properites (+ dialog box) -Add: function to clean up old imports: mark all silk layers auto; used in io_pcb, io_kicad*, io_eagle, io_hyp -Cleanup: get rid of PCB->ElementOn in favor of a layer group based query -Del: remove old config items show_mask and show_paste, use the normal layer visibility mechanism should handle that -Split: split off LAYERVIS_CHANGED from the LAYERS_CHANGED event to provide a cheaper mechanism for the more common case -Add: SelectLayer(): central action -Add: low level group rename functions -Add: low level function to find a group by name -Add: low level group pointer -> ID converter function -Add: low level function to step a layer within a group +1 or -1 slot; insertion of new layers is interpreted in group context,not in logical layer context -Del: old layer move code: logical layer index is insignificant as layers are presented by group orders,no need to move layers on that list -Add: helper function for creating the mandantory silk layers -Add: ToggleView() can expand/collapse and vis/unvis all layers and groups -Add: hid_common function for building a layer menu, at least adding groups and layers -Fix: mark pcb changed when group properties are changed in EditGroup() -Fix: cross section draws "text-with-background" only on the GUI - most exporters won't be able to display this correctly, making the text unreadable [layersel] -Add: new layer selector in the top window; show layers per groups; collapse/expand groups -Add: right-click layer popup (also selects the pointed layer) -Add: layer property inidications similar to cross section view's: hatch for auto, thick border for negative [csect] -Add: properly indicate where the layer would be inserted within the group -Add: add/del/reorder logical layers within a layer group -Add: allow logical layers to be in the paste layer -Fix: allow all layers to show up on the csect drawing, not only copper layers -Add: open popup menu for groups and layers on right click -Add: draw_csect doesn't allow removing the last layer from a silk [eagle] -Fix: make sure both silk layers are set up even if the input file didn't specify them -Add: load and build polygons -Fix: make new lines and arcs clear by default -Add: use md_wire_wire for clearance values on lines and arcs -Fix: put multiple unsupported layers on silk -Add: proper element text placement and rotation [scconfig] -Fix: cquote generates C89-safe long strings using arrays - removes a lot of string-too-long warnings -Fix: use -ansi -pedantic for detections in --debug mode, so the same flags are used for detecting libs and compilation; this should fix the realpath bug reported by Ade -Fix: make sure realpath() gets its _DEFAULT_SOURCE when needed -Fix: -fPIC is optional: many C compilers don't support it [boardflip] -Fix: don't mirror element text unless had to move to the other side [export] -Fix: ps: proper plugin uninit -Fix: stat: don't use read-only string in default attribute val - the gtk gui tends to free() it -Fix: stat: user-input save metadata properly -Fix: stat: use 4-digit year in date, to avoid confusion -Fix: stat: wrong date format, should be iso (reported by Larry) [fp_board] -Add: load board as a footprint library [fp_fs] -Fix: always return error on fp mapping if topdir is not a directory - this how we give other fp_ implementations a chance to map those [gerber] -Fix: board larger than 214.7mm had a coord overflow in drill files with 32 bit coords (reported by Evan) [gtk] -Fix: pinout window size is 0 after opening -Change: propedit preview should use the preview infra instead of pixmap for forward portability -Change: menu: use hbox instead of the accel label hack copied from gschem -Fix: popup menu didn't work since r4248: action didn't consider the extra layer of (private) menu handle -Add: left-click on the layer selector widget pops up the layer popup -Fix: gdk should allow drawing the paste layer -Add: local widget_hide_all() implementation to work around gtk's wise decision to kill off everything that's simple -Fix: don't offer restoring factory default for layers, it's hard to tell what exactly we should do -Add: wt_preview can distinguish right click from pan -Add: esc in command window dialog closes the dialog -Fix: apply Chalres' patch about double command execution on esc -Fix: point-cursor-disappears-if-gpmi-enabled bug; move point_cursor logics from glue to in_mouse, make a permanent override and an explicit "set cursor to mode default" (mode set to -1) that also respects the override -Fix: command entry history upside-down + when number of commands is over the maximum in the history, properly delete the oldest, not the latest -Del: underscore menu mnemonics: no support for that hotkey mechanism in our menus anymore -Add: GL: annoying, bold warning about opengl not supporting composite layers [lesstif] -Fix: non-c89 initialization -Add: be able to show the paste layer -Add: remember both submenu widget and menu button in the lihata node's user_data when creating menus (so that it'll be possible to remove menus later) -Add: implement the remove menu HID call -Fix: remove flags[] entry when a checkbox menu is removed -Add: reuse empty wflags[] slots [io] -Fix: let io_ set Data->loader on pcb load; this gives the plugin a chance to make a decision depending on file content [io_hyp] -Change: enable the plugin by default [io_lihata] -Add: v2 writer makes a layer stack subtree; prefer v2 saver if version is unspecified -Fix: in-place upgrade from lihata board v1 to v2 (bypass the root mismatch error) -Fix: non-lht-board file overwrite: missing or mismatching root error means we need to do a fresh save, not merging but overwriting everything -Fix: when saving v1, make sure the 2 silk layers are at the end of the layer list - old code and the old format requires that [io_pcb] -Fix: when loading a footprint file, properly set up the mostly empty layer stack -Workaround: the total lack of reentrancy... assume fp fopen() may call Parse so initialize globals only after that call -Fix: swap layers so that silks are always at the end (required by old code and the format) [plugin] -Change: use puplug instead of the plugin system mostly inherited from mainline -Change: switch over from manual plugin listing to semi-automated when generating the tmpasm -Add: runtime plugin dependency handling: when a module is selected to be a plugin, its dependencies should be at least plugin (but don't need to be builtin) [png] -Update: new mask draw API; properly draw both positive and negative combinations -Fix: export non-axis-aligned square pads properly (numeric conversion bug turned those into random sized rectangles) -Add: photo-mask-colour options similar to mainline's. -Fix: draw mask layer in 'as shown' only if it's visible [polygon] -Fix: enable DEBUGP() in --debug so we get more detailed error messages -Fix: print animator script with proper coords on stderr instead of old pcb format lines when polygon asserts [ps] -Add: remember last set mask mode -Update: new layer mask API [route] -Add: Allow line-points to be moved using the route code which implements 45/90 mode. Disabled by default with config setting move_linepoint_uses_route -Fix: The 45/90 route rules were disabled if the rat layer was selected but editing other layers. -Fix: original line end point move should manage undo in the new code when route is turned off (bisecting credits: miloh & evan) -Fix: When moving a line-point would result in a 0 length line, the move operation was not applied. [rubberband] -Fix: Draw rat lines directly when rubberbanding to avoid 45/90 rules. -Fix: Rubberband with 45/90 route code failed if both ends of the line moved. -Fix: plugin uninit should remove events registered on init [svg] -Add: preparing for the new mask API: and sections for the mask -Update: new mask layer API: mask set/clear overrides color -Fix: use the "configured" mask color instead of hardwired red -Fix: missing else made the silk use copper color -Tune: "inner" layer shadow has no "3d" depth -Fix: mask rendering logics: always visible in photo mode, group visibility controls it in normal mode [util] -Del: gsch2pcb-rnd: method_pcb - please use method_import instead [tests] -Update: simple gsch2pcb-rnd test: switch from -m pcb to -m import -Update: pcbflags: there's no more showmask config setting -Fix: missing distance calculation function - link misc_util.o in propedit test [doc] -Update: core plugin howto for r8214 -Fix: refine the 3-state wording in src_plugin's README -Update: mods3; work from pup files, ignore the READMEs -Update: plugin creation tutorial for the new plugin system -Add: explain autoload in the plugin doc -Add: mods3: generate plugin dep graph -Fix: html validation, typos (by Larry) -Update: model doc for layer compositing -Add: missing rosetta Makefile -Add: missing explanation for gpmi rosetta 90_clock -Add: bugreporting howto -Add: io_lihata: lihata board version history pcb-rnd 1.2.2 (r8120) ~~~~~~~~~~~~~~~~~~~~~ [font] -Add: multiple fonts: introduce the font kit concept; allow font objects to have a font id -Add: io_lihata support for multiple fonts -Add: io_lihata support for polygon and arc in font -Add: font selector GUI -Add: edit the current font, not font0, and throw an error if the current font is not accessible for some reason -Add: alternative default font with arcs, Herhey font [export] -Fix: ps: don't export zero-radius arc, it would end up writing "inf" after /0 (thanks to John for the bugreport and test file) -Fix: svg: don't export 0-radius arc -Fix: fidocadj: Fine tuned fidocadj text export angle, dimensions, placement -Add: gerber: exporting the cross section layer is optional [footprints] -Add: fp_wget: offline mode: wget the index only if enabled; GUI for manual update -Add: fp_wget: support for edakrill -Add: API CHANGE: the fp rehash function takes an optional pointer to the subtree to rehash; when NULL, rehash everything (as it did previously) -Change: don't merge all local file system trees into fs, keep them separate for less confusion [layer] -Fix: look up component and solder groups before placing a new rat on the GUI so the groups are placed right -Fix: move action doesn't let the user remove silk layers -Fix: removing a layer group removes all layers, including the second -Fix: obsolete direct PCB ref -Fix: when (re)moving layers, reparent the lists after memmove() to avoid broken parent pointers -Fix: buffer operations (mirror and paste): use the buffer's layer list only if it has one - when copying a simple object within the board, there won't be, use the boards' then -Cleanup: remove redundant pcb_layer_lookup_group() - use pcb_layer_get_group() instead -Del: old API, already unused: pcb_layer_create_old() -Del: macro PCB_LAYER_IS_EMPTY() to get the API simpler - just use the direct call, this also exposes the use of PCB in some calls -Del: macro pcb_max_group() -> not PCB-safe [core] -Fix: netlist add action shouldn't segfault on empty/NULL netname or pin name -Fix: convert buffer to element: buggy layer group handling (made solder-side objects disappear; thanks to Evan for reporting this) -Fix: move-selected undo bug: undo serial has to be increased after the paste -Fix: Don't add a via when switching to/from a non-copper layer during line creation -Fix: don't mess up the undo serial when moving an element to the other side from menu (reported by James) -Change: increase the layer limit to 38 for new io_ plugins -Change: move rectangle pad creation to a central function - more and more code depends on it -Add: export version, revision and main paths so that child processes (e.g. parametric footprints) have a chance to identify the installation [io] -Fix: io_lihata: assign unique ID to each polygon point loaded - fixes poly point move undo bug -Fix: io_kicad: parser now copes with absent gr_line thickness definitions -Fix: io_kicad: save fp in s-expression format -Fix: io_kicad: quote module name, as it may contain () -Fix: io_pcb: do not load empty footprint into the buffer, it'd assert later (fixes: parametric footprint with broken params was leading to an assert in the preview) -Fix: io_pcb: force-rename outline and silk layers because the loader will detect them by name -Fix: io_lihata: accept trailing whitespace in boolean values -Fix: io_lihata: don't complain about fonts under io_err_inhibit -Add: io_kicad: eeschema import -Add: io_kicad: recognize layers Top and Bottom -Add: io_pcb: improvise a minimal usable layer group setup if there's no layer group string on the input (thanks to oskay for reporting this) -Add: tEDAx: netlist import -Add: tEDAx: footprint export -Add: tEDAx: footprint import -Add: mentor: plugin for importing edf netlist from Mentor Graphics Design Capture [rubberband & route] -Add: keep line direction of middle line segments (2 lines connected) in rubber band mode (patch by Luis de Arquer) -Add: Rubberband keep direction: Line being moved is constrained to keep direction on preview -Add: optional curved corners; alt+c and alt+shift+c in menu files to change route arc radius [gtk] -Fix: external command window segfault when reopen after a WM close -Fix: preferences dialog: proper refresh of widgets when changing the unit in top window while the sizes tab is open -Fix: fit in 800x600 -Fix: cancel means NO when prompted for creating a new layout (updated ghid_prompt_for() for r7792) -Fix: don't change the mouse cursor in busy mode if the hid is not initialized (led to crash) -Fix: Display the proper pcb-rnd icon for top level windows. -Fix: preferences window: preserve correct tree view selection after Save. -Add: gl support -Add: optional gtk shift workaround for some broken mac+gtk stack -Add: detect if the user clicked on a parametric footprint and present a dialog box with its parameters -Add: gtk's attribute dialog can notify the caller about changes using an optional callback function -Add: global or selective refresh of libraries using the refresh button [lesstif] - double buffer preview [scconfig] -Fix: make clean removes sccbox.o -Fix: generate all files so that make dep works right even with disabled plugins -Cleanup: move out 60 kilobytes of optional junk from Makefile to Makefile.gendep: we may depend on make -f and variable passing if we already depend on gcc for make dep -Cleanup: move compile templates to scconfig/template -Cleanup: rename globals VERSION, REVISION and PACKAGE to have a PCB_ prefix to avoid name collisions [pcblib] -Add: auto generated --help for all parametrics [djopt] -Fix: uninitialized local vars (reported by miloh) [boardflip] -Change: rewrite the board flip plugin to be generic (flipping around X and/or Y, applying offsets) [pcblib] -Fix: unit conversion supports all suffixes the core supports pcb-rnd 1.2.1 (r6916) ~~~~~~~~~~~~~~~~~~~~~ [layer] -Cleanup: better layer group support; clear separation of physical and logical layers; real and explicit layer stack concept -Fix: remove silk and component and solder assumptuion from crosshair and search -Fix: auto enforce drc only on copper layers, remove silk assumption -Fix: autorouter refuses to route on outline; also remove silk assumptions -Fix: teardrop works only on copper layers -Add: cross-section view: an userfriendly, a common, HID-independent mechanism for layer group edit [random i/o and the ecosystem concept] -Add: export_fidocadj -Rewrite: import_dsn, proper parser -Add: import_ltspice -Add: import_mucs -Add: import_tinycad -Add: import_ltspice: parse a mentor netlist -Workaround: SVG: near-360 degree arcs break some of the rendering engines [core] -Add: accept # comments in action scripts -Add: self contained pcb-rnd executable: embedded font and default.pcb -Fix: Draw the correct pin/via shape when the SQUARE flag is set in thin-draw mode -Fix: NoHolesValid cache bit set bug that made silk polys disappear -Fix: do not attempt to calculate bbox of empty elements - throw an error instead and ignore the element (or even assert, in --debug) -Fix: don't depend on layer name for outline -Fix: don't let negative clearance happen -Fix: layer max assert off-by-1 - really allow 16 layers -Fix: polygon arc rounding error when drawing clearance around a pad -Fix: polygon drawn using the poly tool caused crash on save due to overwriting the list-administration when copying corsshair-poly to newly allocated layer poly -Fix: redraw after pin number/name change to get the change displayed -Fix: refuse to create attribute with NULL or empty name -Fix: remove arc endpoint should remove the arc, just like with lines -Fix: when deriving default file name of the board, don't truncate hardwired .pcb, try all io's file extensions until the first that is there [arc] -Fix: arc-in-box macro uses the real bounding box of arcs so an arc can be selected by a positive selection box just barely embedding it [doc] -Fix: html validation and cleanups [drc] -Add: Draw DRC outline of pads when enabled -Fix: Draw DRC outline when moving lines -Fix: Improve the drawing of the DRC outline around pins and vias -Fix: When moving an Arc, draw the DRC outline if enabled. Draw the Arc as an outline instead of thin -Fix: When moving vias, draw the DRC outline when enabled [dynstyle] -Fix: when a new style is created, the gtk-side cache needs to be regenerated [export_gerber] -Add: copy hackvana extensions from mainline -Fix: eagle file suffix bug made top layer and bottom copper layer clash with top and bottom silk [export_png] -Fix: notice gc color and cap style changes and update the brush -Fix: properly draw corner case: full-circle arcs -Fix: scale rouding bugs -Fix: use gc for zero-length arcs too [gsch2pcb-rnd] -Fix: don't depend on scconfig objects, use pcb_concat() instead of str_concat() -Fix: stop fighting with src/ for compiling the src_3rd/ objects, just call src/ for doing that [hid_gtk] -Split: hid_gtk common parts into a lib (lib_gtk_common) -Fix: arc delta angle > 360 means full curcle, don't modulo -Fix: arc endpoint rounding error when drawing with gdk (reported by Evan) -Fix: don't run the netlist window if gtkhid is not yet active (batch mode) -Fix: set the right layer color when changing layer colors - store the context struct for each layer index separately (more memory leaks...) -Del: unused ghid_dialog_confirm_all() and ghid_dialog_confirm() -Del: utf8 dup string is not even used anywhere -Del: free_glist_and_data() is not in use, get rid of it -Del: dead code: ghid message dialog: we use the log now, that should be the only one way to inform the user -Del: unused abort functions -Del: gui-keyref dialog (outdated, hardwired, unaccessible) -Change: About dialog is more gtkish and uses the pcb-rnd logo -Change: disable mnemonics for main menus because mnemonics lets gtk steal our keyboard input [hid_lesstif] -Fix: arc delta angle > 360 is always a full circle, don't modulo -Fix: don't try to change cursor shape for being busy if the hid is not running -Fix: typo in the menu config for show_mask made solder mask unable to display [io_kicad] -Change: use the new, simpler layer creation API -Fix: refuse to use any negative layer -Fix: residual arc format parsing errors; homeomorphic linear mappings R us. -Fix: empty altium2kicad element definitions now imported with a 1nm line at the module centroid -Fix: fixed non cummutative symmetry operations when importing fp_arc and gr_arc elements -Fix: fixed off by one tree traversal error for polygonal zones -Add: Kicad supports arcs on the Edge.Cut layer, now implemented -Add: accept # comments when reading a KiCad s-expr file -Add: improved handling of SMD layer definitions board [io_lihata] -Fix: default output formatting (indentation bugs) -Fix: properly load the outline layer, even if it appears to be in group -1 -Fix: translate the new, rich layer group table to the old, dummy format for saving v1 [io_pcb] -Fix: don't attempt to save attrib with NULL value -Fix: layer number boundary check bug (the legacy +2) [poly] -Fix: poly clipped out of existence can come back without an assert -Fix: when priting 'cleared out of exitence' message, use mm for coords [res] -Add: all new importes in the import menu -Change: default file menu rearranged, import options grouped in a submenu to keep things simpler [rubberband] -Add: Support rubberbanding of lines attached to an arc -Fix: Allow both ends of a line to be included in a rubberband move [scconfig] -Add: detect and use -std=c99 if available, some versions of gcc doesn't go for that by default - we also want to avoid accidentally using extensions in C99 code -Add: detect cairo for the breadboard exporter -Fix: allow parallel build -Fix: mod CLEANFILES takes effect now -Fix: when compiling with --debug, display debug symbols as implicit-enabled in the summary [toporouter] -Del: remove toporouter and gts - we have better alternatives now pcb-rnd 1.2.0 (r5967) ~~~~~~~~~~~~~~~~~~~~~ [unravel] - Cleanup: reorganize the code around object types instead of the old, action-oriented approach - Cleanup: prefix almost all core symbols with pcb_ or PCB_ so the code can be reused as a lib later [doc] -Add: start writing a new user doc [arc] -Fix: broken is-point-on-arc check for large angles (thanks Evan for the bugreport) -Add: angle/radius edit UI [conf] -Fix: don't crash on empty project file -Fix: when creating a new project file root, use the geda project file hash, not the pcb-rnd-config node - the project file is shared among programs [gerber] -Fix: emulate 0 long arc with a 0 long line to work around a gerbv bug -Fix: simpler "do we print this layer?" logics, without caching -Workaround: split >180 deg arcs because some viewers (e.g. gerbv) have hard time interpreting them [gtk] -Fix: route style logics: start out with the copy of style 0; after a deletion inherit the sizes from the deleted style -Fix: don't reuse the static conf chg binding struct of fullscreen with solder side swap - it'll probably ruin both -Fix: update bottom status line after flipping the board [mods] -Move: drill.[ch] to the report plugin -Move: original rubberband code into a feature plugin -Cleanup: convert some GUI HID actions to events so that multiple GUIs can bind to them -Add: plugin frame for import_hyp -Add: remote plugin (HID-level remote control over sockets) -Add: draw_fab plugin behind a stub, move draw fab code from core to the new plugin -Add: new export plugin: export_stat (board statistics) [io] -Add: an extra flag bit to allow non-fatal loads; make sure missing default.pcb doesn't generate an error message -Add: proper handling of multiple file formats and file name extensions -Fix: add new test parse call - fixes false alarm parser error messages -Fix: don't change format on backup and tmp saves -Fix: don't throw the "no font" warnign after loading a footprint because footprints are expected not to have font embedded [io_kicad] - Save and load in the kicad s-expression format [io_lihata] -Fix: don't save invalid nodes in the canonical format (backup saves) -Add: (somewhat selectively) save and load the config subtree -Add: one more emergency save on lihata merge failure and verbose error message with instructions [layer] -Cleanup: convert magic number macros to enum -Cleanup: introduce layer id and layer group id types -Cleanup: more explicit virtual layers -Cleanup: remove the old layer API, including all the SL_ macros -Cleanup: renames and refactoring to make the logical layer vs. physical layer concept more clear -Split: move layer visibility (stack) functions out of layer.c -Rename: mask layer names: use top/bottom instead of component/solder for consistency -Add: UI layers (dynamic allocated debug layers with permanent objects) -Add: new layer name generator, based on flags and virtual layer names [pcblib-param] -Fix: don't lose pad thickness unit when calculating new defaults for qf() -Change: center pad of qf() is generated with no-paste (requested by John G) -Add: qf() center pad paste matrix option (requested by John G) -Add: qf() central pad mask option with cpad_mask; when not set, calculate it from pad geometry -Add: qf() got a new rpad_round boolean; when manually set to true, generates round pads [svg] -Fix: arc support: use the large and sweep flags of svg path arc to get true PCB arcs -Workaround: full circle arcs - the two endpoints should differ -Workaround: make endpoints differ in a 0 deg long arc [tests] -Cleanup: update and enable most of the tests, unified output, central make test [util] -Add: prj2lht: script to convert old projects to new -Fix: install the import schematics scm script in our own LIBDIR, because it's not reliable to find the gschem installation, rather use -L for gnetlist [scconfig] -Change: use $(MAKE) instead of make - this allows GNU make to run recursive parallel compilations (reported by Dima) -Change: disable bison by default; use --enable-bison for developing the grammar -Change: do not use gts for anything if toporouter is not configured -Add: extra error if explicitly requested things differ from the results we got -Add: make clean/distclean removes more scconfig related leftovers -Add: optional support for DESTDIR for Debian [core] -Fix: C89: do not depend on or strcasecmp, implement our own -Fix: HID API bug: invalidate_lr needs pcb_coord_t instead of int -Fix: action Netlist() subcommand add modifies the INPUT netlist, not the EDITED because this is used bu import_sch -Fix: attribute deletion by index didn't move all items properly (affects mainline as well) -Fix: disable cycledrag when rubberband is enabled (they are incompatible) -Fix: don't close a polygon twice on normal finish (fixes the excess need 3-point error message) -Fix: don't crash when a pin/pad number is NULL -Fix: don't warn for second hit on a plugin already loaded as long as the hash is the same -Fix: get rid of pointerlist in favor of vtptr -Fix: incorrect flag struct comparison; may have caused unpredictable undo bugs -Fix: line-line intersect code detects and handles the corner case of parallel lines properly (checking wheter endpoints of lines are on the other line) -Fix: make data bounding box function reentrant -Fix: make move macros safer with the standard do { } while(0) wrapping -Fix: make text, arc, line, pad, pin/via move macro safe: don't evaluate arguments twice, wrap in do {} while -Fix: move an object by 0 pixels shouldn't inhibit all subsequent redraw -Fix: negative selection box: limit box coord orders to two canonical forms, one positive, and one negative (fixes north-east to south-west selection on component-side view) -Fix: pin move is really the same thing as via move, use the same macro -Fix: polygon mirror should update the rtree (reported by Chad) -Fix: rename old, gui-hid-defined Export() actions to ExportGUI (matching the ImportGUI()) - Export() is the name of the builtin, core action -Fix: text rtree handling bug: EraseText should NOT have the side effect of removing the text from the rtree but the callers should do all rtree manipulation as needed -Fix: undo text flag bug: add text join undo as text flag change, not as line flag change -Fix: update rtree when mirroring arc in buffer -Fix: use COORD_MAX for large coord values, don't assume coords will be 32 bits -Fix: use the hid name passed with --gui, even if --gui is not the first argument; also allow using --hid instead of --gui (less confusing) -Fix: when snap off, don't crash when action helper is trying to figure the endpoint of an arc -Cleanup: classify all messages to be warnings, errors or info - no more PCB_MSG_DEFAULT -Cleanup: remove unsafe (non-reentrant) arc ends query -Add: --dump-plugins --dump-plugindirs CLI commands and DumpPlugins() and DumpPluginDirs() actions -Add: central Export() action instead of gui-specific ones - this works without a GUI HID -Add: conf setting to disable negative-box selection -Add: conf setting to make negative-box selection symmetric (ignore Y coord sign) -Add: support route style attributes pcb-rnd 1.1.4 ~~~~~~~~~~~~~ (1.1.4 is really an 1.1.3 with some bugfixes backported from 1.2.0) [gsch2pcb-rnd] -Add: method infrastructure -Add: a method that uses the same mechanism as import_sch -Add: a method that uses import_sch's gnetlist backend for elements but a the usual PCB backend for the netlist [import_sch] -Fix: install and use the .scm script from our own directory instead of guessing gnetlist's installation [debian] -Del: remove debian/ to ease official packaging pcb-rnd 1.1.3 (r4479) ~~~~~~~~~~~~~~~~~~~~~ [mods] -Fix: the IO system remembers which format (plugin) a file is loaded or last saved with and uses that on a 'save' instead of the default one, unless a different format is explicitly requested ('save as') -Fix: load plugins from /usr/lib/pcb-rnd/plugins instead of /usr/lib/pcb/plugins -Fix: macro argument bug in fontmode (thanks Chad!) -Fix: import_sch: rename the gschem forward-annotation script so that it doesn't collide with mainline's -Cleanup: rename legacy_func to lib_legacy_func as part of the plugin lib cleanup -Add: io_kicad: load and save kicad s-expression board layout files -Add: io_kicad_legacy: save boards and/or modules in the old kicad format -Add: io_lihata: preserve formatting and numeric format on load/save -Add: io_lihata: custom indentation rules for boards (more compact, easier to read) -Add: in export_xy: code from mainline to support IPC-7351 on element rotation guesses -Import: autocrop original code -Import: boardflip -Import: distalign -Import: distaligntext -Import: jostle -Import: polycombine -Import: polystich -Import: renumberblock (as part of the renumber plugin) -Import: smartdisperse -Import: teardrops -Import: bboard exporter from git -Import: dsn exporter from git -Import: dxf exporter -Import: ipcd356 exporter from git -Import: openscad exporter from git [query] -Add: query language - select/unselect objects using expressions -Add: advanced search dialog box frontend for the query language in the GTK HID [core] -Cleanup: const correctness on net creation: style is read-only -Cleanup: move generic find-net-for-pin function from rats_patch to netlist -Fix: changing grid should not only change it in PCB but also in the conf tree - this will deliver the conf change event that will trigger the update in gtk -Fix: const correctness in hid_flags, pin-to-net lookups -Fix: coord conversion rounding errors -Fix: deselect not incrementing undo serial number (from Charles Parker); caused undo panic upon undoing a deselection -Fix: invalid function ptr to data ptr casts -Fix: move global netlist states from global variables to PCB struct fields (on the way to a proper lib...) -Fix: rubber band: when move didn't happen, flags were left behind -Fix: undo element text size bug -Fix: plug_io file load: when multiple formats matched an explicit load format description, try them all, until one worked -Split: generalize format-string-like variable substitution so it's easier to build custom file names (and other strings) from config templates; supports %F (file name), %N (board name), %T (UNIX time), %B (basename) and %D (dirname) -Add: remove_menu concept in HID API -Add: generic flag change macro that can set, clear or toggle the flag depending on an argument -Add: hid export option to draw holes after all copper, silk and mask layers has been drawn so that holes punch through everything -Add: layer creation and rename helper functions -Add: obj_any - a generic type+union struct (and a list of that) for holding pcb objects of any kind -Import: LookupConnectionByPin from mainline -Import: clear flags by object type from mainline (import and port) [debian] -Change: redo the whole script for a modular packaging of plugins [util] -Add: devhelper script for testing round trips -Add: pcb-strip (remove attributes and/or symbols from a .pcb) [gtk] -Add: full screen button in the scroll-bar corner -Fix: call the checkbox menu update function from conf change callback installed at menus, instead of assuming checkbox states are changed only from within the GUI and calling the updater directly [propedit] -Add: text set applies on element texts too [res] -Add: RemoveMenu() action -Add: gtk can remove menus -Add: update_on field - bind checkbox updating to a config var [scconfig] -Fix: when generating dependency generator rules, use -MT for src_3rd targets or else gcc will ruin the target object names; this means proper dependencies in src_3rd -Cleanup: use bison/flex output file name CLI arguments instead of the tmp/mv hacks - the code depended on bison anyway -Add: --symbols to enable debug symbols without the extra asserts and -O0 pcb-rnd 1.1.2 (r3773) ~~~~~~~~~~~~~~~~~~~~~ [cleanup] - ANSI/C89 compliance - char * const correctness [mods] -Fix: io_pcb: do not convert measure through int (Chris' mm grid bug) -Fix: import_sch: generate proper error messages if there's no make or gnetlist program configured -Fix: io: qsort cmp function API bug - wrong format preference -Fix: io: make sure the PCBChanged action is ran on revert so that route styles and other properties are updated -Fix: fontmode broken coord-to-cell conversion rendered the font editor useless -Cleanup: export_bom and export_xy are separate plugins; export_xy depends on export_bom because of the name escaping function -Rename: debug plugin to diag plugin to avoid confision with --debug in ./configure command line -Add: diag: layer dump action -Add: diag: evalconf() action to evaluate the configuration situation of a path -Add: io_kicad_legacy: first steps for PCB layout implemented. Mildly broken module exported. -Add: propedit: object property editor (with gtk support) -Add: io_lihata: initial implementation without object ordering -Add: io_pcb: 3 different flavors of the original format (using different numeric formats) -Add: import_sch: make and gnetlist programs configured in the default config [lesstif] -Fix: compile and link even if xrender is not found -Fix: print angle as %f in the status line as it's a floating point value [gtk] -Fix: library selection window switches to arrow mode before replacing the buffer, so that the outline drawing code doesn't get confused -Fix: library path file chooser should be a "folder chooser" not a "file chooser" -Fix: display the correct $(path) syntax in the library window help -Fix: when file name changes, update window title -Fix: do not allow to zoom out so much that Coord can't handle it anymore and overflows -Fix: work around the control bug on some mac systems -Fix: do not draw global grid beyond board edges -Fix: shift+tab: translate left-tab back to tab, shift is handled by the core -Fix: when popping up the log window for a Message(), don't raise it so focus is not stolen (especially if it's already up) -Fix: when the main window is closed while the command entry main loop is running, quit the CLI main loop first, so the Quit action can execute and break the outer main loop of the GUI -Fix: mark the PCB changed when the route style changes so it's saved -Add: a delete option to the route style selector -Add: explicit route style (pen style) for sizes diverged from any known style -Add: finish gtk preferences dialog's "Config PoV" subtree -Add: "save as" dialog with file format widget -Add: remember preferences tree expansion and other states when the dialog box needs to be rebooted -Add: implement fullscreen mode -Add: local grid implementation: optionally draw grid only in a small radius around the crosshair instead of on the whole screen (speeds up sw rendering on large screen) -Add: global grid can be sparse (drawing every Nth grid point only); min distance is a configuration item -Change: match gtk status line style with elegant lesstif status line [scconfig] -Fix: use generic code for plugin vs. plugin dependencies, deps are coded as data -Fix: various portability fixes for a working IRIX port -Add: revtest and revision stamps - this tool will let Makefile automatically request the user to reconfigure -Add: central distclean cleans src_3rd/ -Add: --workaround-* system, with a gtk-ctrl workaround -Add: new cli arg for mass-enabling/disabling all plugins: --all=* [core] -Fix: hid input mouse scroll mixup: up and down were for scroll but left and right were for buttons. Prefix all scroll names with "scroll" (fixes macos pan-zoom-select bug) -Fix: cancel on "new pcb" makes sure PCB never ends up NULL; worst case it tries to create an empty PCB to fall back on or exits with a fatal error if even that fails -Fix: funchash should be case-insensitive (case insensitive actions and params) -Fix: introduce pcb_cardinal_t instead of redeclaring X's Cardinal -Fix: cursor position is Coord, not long - long won't work on 64 bit coords -Fix: initialize builtins before loading plugins so later buildin <-> plugin collision can be resolved by not loading the plugin -Fix: full-polygons are sensitive when clicked on the "clipped away" part -Fix: non-refactored line drc enforcement -Fix: qsort cmp function return value bug - wrong ordering of sources for the merge -Add: RouteStyle() action accepts style name, not only index -Add: action, change and undo code for chaning arc radii (width and height really) and start/delta angles -Add: new, future-proof layer API, phasing out the old API -Add: close polygon if the user clicks twice on the same point ('doubleclick'; like with the line tool; thanks to hzeller) -Add: message log entries have severity levels; user can configure color and whether the message log should pop up for each severity -Add: pcb-printf %mH prints human readable metric or imperial coords -Add: inhibit draw counter: when moving an element with all rubber bands (e.g. netlists) attached, inhibit redraw them individually, redraw only once, at the end -Add: reenable signals as detected by scconfig so that emergency save can run on crash -Change: attribute list in all object types -Split: layer.[ch] from misc.[ch]; the layer code is large and complex enough to get an own module; it's also in-line with the module-per-object-type idea [util] -Add: workaround script to comment out #warnings in a source file (for real C89 targets) -Add: gsch2pcb-rnd: warn for old config overriding pcb-rnd search paths -Add: install gnet pcb forward backend so that import_sch works out of the box pcb-rnd 1.1.1 (r2683) ~~~~~~~~~~~~~ [io_kicad_legacy] - Add: save paste buffer elements to kicad (legacy) .mod as native format [scconfig] -Change: remove config.manul.h (use scconfig CLI args instead), rename config.auto.h to config.h -Change: coord type, the corresponding MAX value and abs() function should not be set manually in config.manual.h; ./configure --coord=32 or --coord=64 sets these all, 32 being the default value for now -Change: move the dot_pcb_rnd setting from manual config header to scconfig (CLI arg) -Fix: don't attempt to use -rdynamic for compilation, only for linking -Fix: accept that IS_LNK may not be set (using conditional variable reference) -Fix: working cross-compilation: proper separation of host and target tools (cp, ln, ar and friends are part of the build system, use the host version) -Add: ./configure --enable-dmalloc detects dmalloc -Add: detect dbus and compile the plugin if enabled -Add: windows port: detect LoadLibrary(), _getcwd()/getwd(), _spawnvp, getpwuid, realpath, rint(), mkdtemp and mkdir/_mkdir -Cleanup: split up config.auto.h.in: move dbus related item to dbus and gl related items to gtkhid-gl to keep central part plugin-neutral -Cleanup: stop using HAVE_WHATEVER_H, rahter generate the #includes per function [core] -API change: rtree returns success and optionally sets the number of objects found - this allows the caller to avoid long jumps to stop the search at the first hit -Fix: action names are case-insensitive again -Fix: don't crash if select-by-text gets empty name or cancel -Fix: undo crashes/asserts for updating NULL rtree with selected element text -Split: huge find.c in smaller files, per topic -Change: use genregex minilib instead of POSIX regex, for better portability -Cleanup: remove find.c dead code -Cleanup: rtree API names return values instead of using 0..1 -Cleanup: const correctness in EvaluateFileName -Cleanup: introduce pcb_rnd(), which is a wrapper around rand() (or optionally, random()). rand() is portable, but on some very old system may be weak. -Cleanup: introduce pcb_strdup() and pcb_strndup() and avoid using non-C89 libc calls -Cleanup: always provide pcb_mkdir() as a portability wrapper around mkdir; all code should use this instead of mkdir() -Cleanup: remove #ifdef wrapping of standard C89 header #includes - it's reasonable to assume/require proper C89 support more than 25 years after the standard came out -Cleanup: a set of unused/obsolete #includes -Cleanup: convert const.h #defines into enums (for the type, namespace and debugging); also proper name prefixing -Cleanup: move route-style specific function from action-oriented set.c to object-oriented route-style.c -Cleanup: rename SwapBuffers to pcb_swap_buffers for proper prefixing (win32 API name collision) -Add: central function for looking up a routing style using a sparse list of properties [gtk] -Fix: gtk gdk background image drawing: clip for negative pan to avoid artifacts and segfault -Fix: remember Messages() that are written before the message window is set up and append them in the window when it is already constructed -Fix: do not crash if there is no route style defined, just go with an empty style section and let the user create new styles -Fix: rework the win32-workarounds for corss-compiling -Fix: always update bottom style printout when the style changes, even if there's no matching stock style (thanks to miloh for reporting this) -Add: a mandatory route style to indicate non-matching types (hidden in the menu) -Add: optional file format combo box on the save as dialog -Change: use round radio buttons instead of rectangular toggle buttons for the layer preferences table - on some setups gtk theme made the buttons unreadable [mods] -Add: import plugin API -Add: new features in the I/O API to support user-selected output format and listing available formats -Split: move out netlist read from the io plug code to a separate import plugin -Cleanup: remove edif stub, convert edif to an import plugin -Cleanup: do not attempt to extract password entries manually in random plugins, use the central user name retrival function - easier to port, heuristics not duplicated -Cleanup: ps export: get rid of non-portable alloca() - polygrid is used rarely, performance penalty of malloc() should not be a problem -Cleanup: pcb I/O: do not use non-portable bzero, prefer memset() -Fix: dbus: if there's no GUI by the time dbus is uninitialized, don't call it [doc-rnd] -Split: move out developer docs from doc-rnd/ to doc-rnd/hacking -Add: windows cross-compilation notes -Add: hacking doc for writing importers (incldues a description of the main pcb data structures) [conf] -Fix: gtk gui preferences saves editor/auto_place in the config file -Fix: gtk preferences' general tab should also save editor/save_in_tmp [w32] -Add: minipack: recipe for pkg-config -Fix: minipack: calculate output filename for wget so that ?download suffix can be truncated -Fix: minipack: don't attempt to build pcb-rnd from minipack (policy: minipack builds all deps then we crosscompile pcb-rnd) -Update: minipack: gd and tiff recipes for newer versions pcb-rnd 1.1.0 ~~~~~~~~~~~~~ [conf] - full rewrite of the config settings subsystem - Del: settings, color files, preferences - everything is in the conf system from now - Add: config settings are stored in structured lihata files on different levels - Add: all config setting are equal - they can be stored in system, user, project or design file [core] - cleanup -Fix: editing text should properly update the rtree -Fix: Display(PinOrPadName) doesn't use crosshair directly, without checking validity, but uses getxy which asks the user in turn, if the crosshair is invalid -Fix: ortho draw lines, polys and poly holes did not update last drawn point and generally did not work -Cleanup: remove a bunch of excess #includes to reduce the amount of deps -Cleanup: rename keepaway to clearance; terminology: clearance is copper vs. copper spacing; keepaway is any other spacing -Cleanup: generic dead-code and compiler warning removal -Change: menus: make a new Maintenance submenu in the File menu, move printer calibration and library rescan there [poly] - bugfix -Fix: don't xor-overdraw the first line of a poly rubber band while drawing the second line so it doesn't cancel itself out -Fix: first click of the poly hole is also the first point of the hole -Fix: reset attached object state after finishing a poly hole so that the second hole doesn't start in invalid state (caused poly duplication) -Fix: don't let the user start drawing a poly hole if first click is not a poly -Add: draw assumed closing rubber band line dashed [dynstyle] -Fix: number of styles is not limited anymore (styles is a dynamic vector) [res] -Fix: dynamic menu insertion bug: don't add new level if it is already added [mods] -Fix: report doesn't crash if there's nothing to report -Add: debug plugin to host core debugging actions so that they can be removed from core -Add: debug plugin to tmpasm lists -Add: io_* hooks - native file formats are plugins now -Change: turn .pcb (.fp) file IO code into plugin io_pcb -Add: io_pcb can save (CFR_DESIGN) config in the design as attributes -Add: central infrastructure for per plugin help (usage), plus the help text in each plugin -Add: fp_rehash() action to trigger a rehash [gtk] -Fix: double-zoom GUI lockup, pan+scroll wheel lockup -Fix: shift+mouse click should work -Fix: preferences window now easily fit in 800x600 -Fix: don't destroy the tooptip timer when it destroys itself - fixes the famous tooltip glib warning -Fix: gtk warning/assert introduced by r1439: toolbar can not be a vbox, the parent vbox needs to be tracket separately -Fix: abs() handling with non-int types - more proper handling of coords on corner cases like tiny objects (contributed by Chris Smith) -Cleanup: dialog titles should be pcb-rnd, not PCB -Add: properly remember window positions and sizes, save and reload them if the user enabled the feature [scconfig] -Fix: really compile if there's no glib installed and no glib-dependent plugin selected -Fix: remove m4 bin from config.h template - no code uses this anymore; do not even detect m4, it's not needed anywhere -Fix: reorder link command for the main executable so that libs end up at the end of the link list (some linkers are sensitive to this) -Fix: various random fixes for a mac port -Del: hid.conf: not needed anymore, hid types are managed differently -Cleanup: C89 always has atexit() and there's no on_exit -Add: --debug (that shoudl enable asserts and -g) and a tmpasm script to set cflags accordingly -Add: detect gettext if intl is requested -Add: detect bison/flex (with an option to disable it) pcb-rnd 1.0.10 ~~~~~~~~~~~~~~ [res] - resource->lihata conversion -Add: new action: CreateMenu() -Add: centralized hid keyboard handling API -Add: optional: a gtk-clone multi-key capable menu file that copies gschem's hotkeys mostly -Change: remove res parser, use lihata instead; affected plugins: hid_gtk, hid_lesstif, vendordrill -API CHANGE: dynamic create menu call API takes a string path, not an already splitted array -Update: keylist html generator util works from lihata and handles multikey -Fix: remove hardwired layer selection key bindings, use configured hotkeys (alternative menu files may want to use the same keys differently, hardwired keys are bad) [library_t] - library data structure cleanup/rewrite - Change: replace MenuEntry and related code to a library_t - Add: allow a generic tree representation in footprint library [reduce] - reduce code size without losing actual functionality -Del: extern "C": pcb is a pure C project, if someone wants to include headers from whatever other language, he should take care of it on that side -API CHANGE: rewrite action_funchash to not use custom local hash but genht and to offer cookie based namespaces for modules -Cleanup: rename action_funclist to funchash_core_list to decouple functions from actions [scconfig] -Fix: scconfig/build doesnt' fail even if lesstif is not installed -Fix: do not attempt to detect libgtk is the gtk hid is disabled -Fix: don't detect gd if it's not needed; disable exporters that depend on GD if required parts are not available -Fix: relax gcode/nelma png requirements: print a warning about reduced functionality but let them compile if there's no png but gd is present -Fix: get the dep file sorted by target; this should avoid unintended changes introduced by unordered lists -Change: split up the tmpasm list of modules so that it's easier to get gsch2pcb link again using whatever backend plugins -Cleanup: move strflags test code to regression/ -Change: portability, realpath are compat_*; compat.[ch] split to _dl and _misc -Move: remove Makefile.in.mod, move module tmpasm files to src_plugins/ -Add: detect libstroke and compile with the right cflags and ldflags -Add: tool to quote files into C strings; generate compiled-in, C versions of the new lht menu files, per hid [mods] -Add: API to remove functions by cookie -Add: print warning if a module leaves anything in the func hash at exit -Add: infrastructure for switching from one gui to another -Add: fp_wget: web based footprint implementation, gedasymbols.org integration -Move: command.[ch] to a shorthand command plugin (shand_cmd) -Move: report to a feature plugin -Move: fp_fs plugin: separate footprint code from file.[ch] -Move: move debug actions from lesstif to comomn "oldactions" as they are not GUI-dependant and might be generally useful -Move: hid/common/ to core hid_*, split up large, random collections of functions by purpose -Move: split and rename action.[ch] to make room for hid-common actions.[ch] in core and avoid confusion in names; rename actions.h to hid_actions.h for naming consistency -Move: HIDs to plugins, removing the hid/ directory -Move: hidgl to a separate plugin (to be compiled later) -Fix: event unbind shouldn't segfault if multiple adjacent events are free'd -Fix: event_bind() takes cookie as const char *, not as void * to comform the convention -Fix: hids install and uninstall actions, flags and attributes only around their do_export main loop so they don't conflict [leak] - cleaning up memory leaks -Add: hid attribute remove by cookie -Fix: lesstif and gtk hids remove their attributes -Fix: vendordrill free()s all cache memory used when the cache is discarded [gtk] -Fix: make sure menubar is always wide enough to expose all buttons (using a hidden invisible hbox of calculated size) -Add: copy accel key menuitems from gschem and take over keyboard handling; hid_gtk now supports multi-key hotkeys -Add: set tooltip on menu items -Add: include all hotkeys in the tooltip for submenus [lesstif] -Del: remove dumpkeys action/code: this info should be extracted from the lihata file -Fix: there should be no global variable named 'n' in lesstif; make the stdarg thing a bit more robust and reusable -Add: reenable code to set set menu font and color [core] -Fix: draw_pad() used uninitialized pad color -Add: SwitchHID action to change the HID module on the fly (works partially) [png] -Fix: png max dpi should be 10k - modern printers easily do 2400 but some models are said to do 9600 DPI in one direction [gpmi] -Fix: auto-copy .so files to src's plugin dir on compile so that running from source always has the latest .so files pcb-rnd 1.0.9 ~~~~~~~~~~~~~ [unglib] -Fix: replace glib with minilibs in core and util/ -Del: remove local dynamic string implementation in favor of genvector -Move: vector.[ch] is used only by the autorouter, move it there [scconfig] -Add: print warnings if glib is not found and selected components need to be left out -Add: repeate some of the critical messages below the summary -Fix: compiler warnings -Fix: instead of two booleans, implement a 3-state "/controls" node with values disable, buildin, plugin for the plugins -Change: better module summary printout at the end of ./configure -Fix: use -fPIC on x86_64 to make sure plugins link -Fix: gpmi plugin installation bugs -Fix: src/plugin is cleaned on make clean [leak] -API CHANGE: plugin init should return a pointer to the plugin uninit function -Fix: a bunch of random memory leaks -Fix: a bunch of potential buffer overruns -Add: central infrastructure for uninit'ing GUI hids -Fix: missing closedir() -Add: uninit paste buffers -Add: actions, flags and attributes are registered with a cookie so they an be deleted by cookie -Fix: uninit plugins before hids so they have a chance to clean up registrations -Fix: don't use dynamic strings where printing quoted string directly to a file would work [mods] -Change: convert the ps and lpr exporters into configurable exporter plugins -Rename: edif plugin to import_edif for consistency -Change: move gcode and nelma from hid to plugin -Move: gerber, bom and png to expoter plugins -Cleanup: move old/unused/legacy functions to a new plugin called legacy_func -Change: move fontmode to a separate plugin [core] -Change: use a hash for flag storage - faster and simpler code [gpmi] -Add: expotert hid callback for filled pad exporting pcb-rnd 1.0.8 ~~~~~~~~~~~~~ [doc-rnd] -Add: djopt examples [mods] -Cleanup: split up action.c and spread the code in core and plugins -Move: action pscalib() to the ps hid code -Move: autoplace to a core plugin -Move: autoroute to a core plugin -Move: dbus to a defunct core plugin -Move: djopt to a core plugin -Move: edif to a core plugin -Move: gpmi to a core plugin -Move: import_sch to a core plugin -Move: mincut to a core plugin -Move: oldactions to a core plugin -Move: puller to a core plugin -Move: renumber to a core plugin -Move: stroke to a core plugin -Move: toporouter to a core plugin -Move: vendordrill to a core plugin [ba] -Add: when applying patches to the edited netlist, create missing nets (new connections may implicitly define new nets) -Fix: get the renumber action() fixed -Fix: enable net(add,net,pin) action again and make it operate on the edited netlist for the back annotation to take notes of the changes made [libstroke] -Add: menu in the gtk hid's res to toggle stroke enable -Fix: osolete calls in libstroke action - libstroke support compiles now -Fix: get the gtk gui call the central crosshair move event handler instead of reproducing its code locally (... without libstroke) [util] -Add: make clean -Fix: compiler warnings, mostly unused vars in gsch2pcb -Cleanup: indentation in gsch2pcb pcb-rnd 1.0.7 ~~~~~~~~~~~~~ -Cleanup: src/ should compile in c89 - no more // comments and variables declared in for() -Cleanup: const correctness in src/ -Cleanup: missing #includes in src/ -Cleanup: unified, tab based indentation all over src/ -Cleanup: move dmalloc include to central config.h -Cleanup: move gts to src/3rd -Cleanup: remove old/obsolete files inherited from the fork -Cleanup: rename doc/ to doc-orig/ to avoid confusion and make it compile -Fix: poly pin bounding box calculation adds clearance as rtree expects ([square]) -Fix: loading default.pcb shouldn't override cursor pos and board sizes and shoudln't cause file date to be changed in the gui hids since it is loading a "misc" file -Add: README in each main directory to explain what the directory is for pcb-rnd 1.0.6 ~~~~~~~~~~~~~ [cycdrag] -Add: "negative sized" selection selects anything that touches -Add: cycle drag object action [scconfig] -Fix: toporouter Makefile module adds its own action registration code, so the central Makefile is independent of toporouter -Add: --disable-toporouter -Fix: use cc/cc for c compiler (so that it can be overridden) -Fix: remove -std=gnu99: -std=c99 breaks with new gcc and -std is not really portable -Fix: include genht before glib.h because glib.h ruins inline [pinnum] -Add: action and key binding for changing pin numbers in a footprint [gpmi] -Fix: typo in hotkey name for manage plugins (reported by Bert Timmerman) [util] -Fix: keylist: tolerate whitepsace in key sequences -Fix: keylist resets locale to avoid broken table when gawk tries to be too clever pcb-rnd 1.0.5 ~~~~~~~~~~~~~ [onpoint] -Add: Robert Drehmel's on-point patch adapted for pcb-rnd [scconfig] -Fix: properly configure and build and install even if there's space in the source path (thanks to Jason White) -Fix: take genht from the local copy, don't depend it being installed pcb-rnd 1.0.4 ~~~~~~~~~~~~~ [ba] -Add: back annotation [core] -Fix: suppress no-font error message while loading default.pcb - the actual font is coming from the default font file [pcblib-param] -Add: screw(), low level -Fix: typo in the help of rcy() [mincut] -Fix: solve debug works again -Fix: make debug pngs during load optional -Fix: don't use function-in-function - that's a gcc-specific feature -Fix: don't use alloca(), use malloc() (C99) -Add: Makefile to test against known refs [pcb-fp] -Fix: gtk lib window tag print doesn't segfault if there are no tags for a footprint -Del: local hash and library search implementation for footprint names in buffer.c - libpcb_fp should handle this pcb-rnd 1.0.3 ~~~~~~~~~~~~~ [gpmi] -Add: GPMI plugin/buildin for scripiting (import of project pcb-gpmi) [tostyle] -Add: new feature to adjust the sizes of object(s) to the values of the current routing style [pcb-fp] -Add: support for parsing and caching footprint tags (file elements) -Add: the gtk HID displays tags -Add: the gtk HID can filter for tags [pcblib-param] -Add: bga() -Add: generic qf() generator -Add: qfn() - based on qf() -Add: qfp() - based on qf() -Add: plcc() - based on qf() -Add: qsop() - based on so() -Add: silkmark: accept multiple values -Add: silkmark: can be external -Add: silkmark: new styles exteranl45, dot, circle, and arc -Add: connector() has a sequence option to change pin numbering -Add: some tunings for connector sequence=zigzag to do something usable with etrunc=1 [hid] -Add: dynamic menus: create_menu(), menu paths, runtime insertion of menus in core -Add: dynamic menus in gtk -Add: dynamic menus in lesstif -Fix: more const correctness in dialog box code [scconfig] -Add: ./configure --help -Add: print configuration summary at the end -Add: autodetect HOST (use sys/sysid) -Add: src/3rd for central hosting of 3rd party software libs -Add: support "buildins": plugins built into the code -Change: move genht to src/3rd; policy: prefer genht over glib hash -Fix: tests try to run pcb-rnd, not pcb -Fix: central LDFLAGS and CFLAGS should contain the ldflags/cflags detected for generic use [pcb-mincut] -Merge: pcb-mincut is imported in pcb-rnd, the extern repo will be removed [core] -Add: event subsystem -Add: gui_init event -Add: generic plugin support: track plugins loaded, have a menu for managing them -Add: more accessors to query unit details - for the gpmi scripts -Add: pcb-printf %mI prints coordinate in internal coord format -Add: calls for removing actions -Add: calls for removing a hid (useful for removing exporter hids registered by scripts) -Add: path resolution: support ~ in paths -Add: real regex search and real string list search (in search by name actions) -Change: switch over actions from bsearch() to a genht hash - simpler code, potentially also faster -Fix: don't allow the registration of an action with a name that's already registered [fp2anim] -Add: optional dimension lines -Add: more fine grained annotation control -Change: switch over to vector fonts for better scaling -Fix: draw rounded pads (new pad syntax only) -Fix: make sure to generate sane arcs [doc-rnd] -Add: official central key list pcb-rnd 1.0.2 ~~~~~~~~~~~~~ [pcblib-param] -Fix: central bool handling (connector() etrunc), values: on/off, true/false, 1/0 -Fix: typo in so() parameter descriptions -Fix: connector() typo in error() -Add: more elaborate help syntax: easier to read with scripts [fp2anim] -Fix: read multiline directives properly - a newline after each directive is still needed, tho -Fix: allow whitepsace between directive name and opening bracket -Fix: create all layers in advance - this fixes the case when the fp doesn't draw on some layers (the macro still exists) -Fix: rline() is extended by width/2 if there are no rounding; it seems this how pcb defines lines -Fix: leave extra margin in photo mode for the 3d edges -Add: support for old-style pad() -Add: support for Mark() (relocate the diamond) -Add: options to turn off the grid and annotation - useful for thumbnails [scconfig] -Fix: always have config.h, don't ifdef it -Fix: glib is a core dependency that should be added even if the gtk hid is not used -Fix: make clean removes pcb-rnd, not pcb (executable file name typo) -Add: make clean in util/ -Add: options to disable gd and/or jpeg or png or gif -Add: be able to detect and configure lesstif -Add: --disable-gtk and --disable-lesstif; --disable-xinerama and --disable-xrender for lesstif -Add: use detected -rdynamic so that plugins can link against the executable -Change: detect both gtk and lesstif as optional dependencies -Cleanup: generate hidlist.h from tmpasm instead of shell to remove shell dependency -Del: a bunch of obsolete #defines inherited from auto* [core] -Add: --gui explicitly selects a gui hid -Add: don't leave preferred order of GUIs to the chance, make it explicit pcb-rnd 1.0.1 ~~~~~~~~~~~~~ [core] -Fix: don't read beyond the common part of the struct in IsPointInPad (since it's called for lines too, and those have much less fields) -Fix: where stdarg is avaialble, also print messages to stderr - useful if things go wrong before a GUI is working [gtk] -Fix: don't crash but write error message and exit if gpcb-menu.res is empty [square] -Fix: 90 deg rotation rotates shape style -Add: action.c and change.c code to get shaped vias -Fix: don't change pin shape for square and octagon in rotation [mincut] -Add: command line setting --enable-mincut (0 or 1) as mincut can be slow it is a global disbale setting and make a local, per pcb setting for enabling mincut; also add a per pcb setting/flag -Fix: disable debug draw by default -Fix: fall back to the old short warn method when mincut fails -Fix: avoid segfaults by detecting broken graph early -Workaround: if mincut sees a graph with multiple unconnected components, doesn't try to solve but falls back to randomly highlight something [intconn] -Workaround: find intconn pads only on the same layer [nonetlist] -Workaround: ignore nonetlist pads even if the flag is in the element name [scconfig] -Add: scconfig/ - switch over from autotools to scconfig [pcblib] -Cleanup: new, trimmed back pcblib/ with essential footprints only [pcblib-param] -Add: new parametric footprints - no more m4-hardwiring, use your preferred language! -Add: acy(), alf(), rcy(), connector(), dip() -Add: so(), tssop(), msop(), ssop() [pcb-fp] -Add: central lib for footprint search and load in pcb and gsch2pcb [util] -Add: gsch2pcb fork to support [nonetlist] and [pcblib-param] [fp2anim] -Add: fp to animator script for fast preview [polygrid] -Add: ps output: draw grid in polys instead of fill (doesn't fully work) -Fix: set proper max value so the control is enabled [debian] -Update: build the package with scconfig and footprint changes pcb-rnd 1.0.0 ~~~~~~~~~~~~~ [square] -Add: initial implementation [intconn] -Add: initial implementation [nonetlist] -Add: initial implementation [flagcomp] -Add: initial implementation [mincut] -Add: initial implementation