Index: trunk/Changelog =================================================================== --- trunk/Changelog (revision 17163) +++ trunk/Changelog (nonexistent) @@ -1,1740 +0,0 @@ -pcb-rnd 1.2.8 (r15478) -~~~~~~~~~~~~~~~~~~~~~~ - - Change: switch over all plugins and core to the new data model - - [padstack] - -Fix: selection bug: if a padstack is a hole only, it's near to the selection box even if no shape is near (because it has no shapes) - -Fix: no-shape hole corner case: xor-draw shouldn't try to draw the first shape when there's no shape - -Fix: point-in-padstack: check hole even if there's no shape - -Fix: don't crash on padstack special case: hole-only padstack - -Fix: corner case: don't crash on hole-only padstack - -Fix: padstack conversion from object list: when giving an early error on too many objects being converter (compared to available layers), the count shoudl include layer objects only, not the via/padstack that is to donate the hole - -Fix: when converting padstack from via or existing padstack, preserve mask layer with LYC_AUTO - -Fix: when converting padstack from an existing padstack, also copy the paste layer - -Fix: when converting paste or mask objects into a padstack, make sure to use LYC_AUTO - by definition, all padstack mask/paste objects are AUTO - -Fix: when drawing a subc pinout preview, figure padstack shape and color by a layer mask, not by an actual layer group (fixes: subc lib preview missing padstacks) - -Fix: buffer rotation rotates padstacks as well - -Fix: when sending a padstack to the other side, do not invert the rotation angle - side swap does that automatically - -Change: place padstacks instead of vias by default - remove the associated brave bit - -Add: when drawing a subc preview, also draw padstack holes - all holes except for BB - -Add: existing padstack can be source object for a padstack conversion - -Add: make the padstack mark (cross) geometry configurable - -Add: padstack hash - -Add: padstack editor: tooltip on local clearance - -Add: padstack editor: short label explaining the difference between instance and prototype setting scope - - [subc] - -Fix: don't warn for unbindable virtual layers (e.g. aux) on undo deletion - -Fix: when importing subcircuits using the ElementList(Need), initialize the crosshair so that subc mirroring doesn't catapult the buffer to negative y on placement - -Fix: aux layer creation: create it when special point is added even if it is before the normal aux vector creation (suppresses warnings about missing subc-aux layers) - -Fix: smash buffer subc detaches the shared rtrees first so buffer rtrees are not double free'd on buffer data destroy - -Fix: when moving a subc between buffer to board, set the parent of global objects properly - -Fix: when creating aux layer base vectors, take rotation angle in degree - -Fix: when sending subc to the other side, also mirror the stack_offs of layers so that inner layers end up mirrored in the stack too - -Fix: the buffer tool can replace subc with subc using shift click, saving/preserving all attributes of the original board subc - -Fix: safely return the old refdes in subcop_rename so the undo code doesn't get confused - -Fix: dyntext corner case: when dyntext evaluates to empty string, return so that no invisible text is produced - -Fix: proper object and polygon-clear-polygon clear/restore poly administration when subc is copied from/to the board - -Fix: (floater text) remove undo: prepare the remove undo/redo code for subc layers - -Fix: prepare the text object buffer move function for subc layers - -Fix: spread the 'floater text' subc-part move buffer layer code to arc, line and polygon - -Fix: do not allow pasting a second subcircuit in the footprint edit mode - -Fix: don't use the crosshair GC hardwired when drawing subc marks (also fixes color bug) - -Change: default config: prefer best lihata format over mainline format for footprint save - -Add: is-empty call - -Add: pcb_subc_new() for orthogonality; same as alloc() but also sets the ID - -Add: helper functions to add points on the aux layer and query them - -Add: create aux takes an argument for creating the aux layer on the bottom, indicating that the whole subc is on the bottom side - -Add: template based subc ID print on the subcircuits overlay layer - -Add: hash and eq functions for text, polygon, padstack, subc layers (for use in subc hash) - -Add: structure to centralize the reverse transformations of x and y coords for hashing - -Add: hide floaters shall supress drawing any object with the floater flag set - - [layer] - -Fix: don't call invalidate_all on layer change notification if we are exporting - -Fix: layer creation do/undo - need to store 3 layer indices to be able to inser tbakc the layer at the right place - -Fix: when UI layers are free'd, free all layer objects - -Fix: layer_is_empty() should consider all subcircuit layers, recursively - -Fix: do not treat paste layers specially when deciding whether a layer group is empty: pins and pads are no special case any more - -Add: helper function to create missing (internal) substrate layer groups between adjacent copper groups - -Add: call for removing a specific UI layer directly, not all layers by cookie - - [core] - -Fix: ignore empty flags when flag lists are loded from string (io_pcb corner case) - -Fix: proper error message when registering a hotkey fails - -Fix: allow arc delta to be changed to 360, inclusive in the op code - -Fix: when a main_action fails, pcb-rnd should return non-zero - -Fix: typo in subc rotation code: rotate90 should not do generic rotate but should do rotate90 recursively - -Fix: pcb_polyop_change_clear_size() should work on polygons with the clearpolypoly flag - -Fix: pcb_polyop_change_clear_size() uses the normal message mechanism to give a warning instead of a show-only-once-popup - -Fix: connection loop uses signed integer type so it doesn't go out of bounds if a net contains only 1 or 0 connections - -Fix: selection bug: select only on layers that are visible - -Fix: issue a layers changed event before layer vis reset on board creation so that the layer selector is not reading into already free'd memory - -Fix: When merging new lines, set the search radius to 1 so that existing lines can be found. - -Fix: layer-is-empty-pure: in some special cases there's no rtree but list objects, in which case the layer can be non-empty while rtrees seem to be empty - -Fix: polygon clearance corner case: a subc may not have a buffer or board parent (lib) - -Fix: data-is-empty: if there's at least one padstack or subcircuit, it's not empty - -Fix: pcb-printf %mH heuristics for negative values - -Fix: don't create layer group name with space in the name (fallback global outline name) - -Fix: default board has no space in the name of the global outline layer and the layer is not marked as internal - -Fix: don't abort or crash on invalid GC while xor-drawing text with missing symbols (e.g. binary junk) - -Fix: drc: proper line vs. padstack polygon intersect (considers Bloat) - -Fix: search object by location prefers same-side floater over layer objects - -Fix: rotate rounding error (caused subcircuits to lose precision when reverse engineering the rotation angle) - -Fix: when loading a footprint, remove the selected and found flags - -Fix: when searching for padstack by location, prefer the padstacks that have a shape on the current layer - -Fix: CLI: do not depend on order of arguments: the filename can be inserted between any two arguments - -Fix: heavy terminal thermal clearance size doubling bug - -Fix: polygon insert point was not adjusted correctly with 'all-direction lines' disabled - -Fix: disperse "elements" typo ruined the grid for subcircuits - -Fix: disperse "elements": remove flicker by using the snapped coords for incrementing the cursor - -Fix: double free in conf error message - -Fix: ratline operation: pass on the main pointer (deleting ratline using the remove tool shouldn't crash) - -Fix: typo in multiple file name error message - -Add: give a hint if the config dump action fails - -Add: --version prints svn revision as well - -Add: handle the is_footprint special case in data/layer loops - -Add: configuration node: editor/auto_via to disable automatic via placing globally - -Add: XORDrawSubc now draws lines and arcs as outlines instead of thin lines. - -Add: XOR draw the current 'pen' when in line/arc/text tool mode - -Add: keyboard handling workaround: when US layout is not enabled try to guess from the translated - -Add: allow polygons to be rotated by the rotate tool - -Add: inhibit poly clipping during buffer operation - clip only once, at the end - -Add: utility function that determines whether an object is in the subtree of a data_t - -Add: emit board-meta-changed event if the board's Changed flag changes so the GUI can always update - -Add: recursive data flag change utility function - -Add: infrastructure for tracking files loaded so they can be printed for user's info (PrintFiles() action) - -Add: disperse "elements": do not lose objects beyond board extends, ratehr warn the user and restart dispersion on top - overlapping objects are better than lost objects - -Add: action PasteBuffer(ToLayout) uses the crosshair coords if "crosshair" is passed as second argument instead of numeric coords - -Add: DRC: be able to start network bloat search from subc terminals as well - -Add: system() action for testing te lihata pers save table bug - - [autocrop] - -Fix: do polygon clipping only once, after all moves, so poly-poly clearances are rendered properly (also the clipping will take less time) - -Fix: do not directly modify the pcb width/height field, use the central call for side effects like crosshair range update - -Cleanup: remove doxygen - - [autoplace] - -Add: manual redraw at each end-of-stage for visual feedback - -Add: progress bar, so the operation can be cancelled - - [autoroute] - -Fix: remove the clearance value from padstack bounding box while adding them in the routing box set so padstacks with overlapping clearances don't get merged - -Fix: off-by-one on route style allocation - -Fix: relax the assert()s to allow +-2 nanometer of rounding error on via boundaries - -Cleanup: rename structs and typedefs to follow pcb-rnd naming conventions - -Change: pretend that terms are manhatten-aligned, otherwise the autorouter asserts - -Add: prepare for the generic polygon-is-terminal case - -Add: obstacle mapping recurses to subc - - [conf] - -Fix: conf(set,) should update/render the final value even if it was set as native - -Fix: command line -c += and ^= should create and manipulate the right policy subtree, not the first "overwrite" - - [diag] - -Add: integrity checks: subc refdes validity - -Add: integrity check for terminal name characters - -Add: integrity check: subcircuits outside of board extents - -Add: data dump action to ease debugging the DRC - -Add: DumpLayers(all) prints a complete map and cross-checks - - [doc] - -Fix: don't use absolute url for embedding a local image - -Fix: bridges: legacy io_kicad is write, not read - -Del: features/ - moved to the pool - -Del: gtk3 devel docs: adoc, old plans and file listings, css cruft, ToC - -Update: rebuild action reference table with latest version of pcb-rnd and more complete buildin config - -Update: developer data model for layers and padstacks - -Update: data model drawing and data.html with more struct names - -Update: importer code docs for the new data model - -Update: plugin creation doc lists all new pup fields - -Update: obj func naming concentions for element removal - -Change: rewrite the model chapter for the new data model - -Add: knowledge pool link from the main page - -Add: list OpenBSD as supported platform - -Add: link in the mailing list archives - -Add: --help in the manual page - -Add: developer data model: rtree vs. lists - -Add: indent(1) patch for function decl and comment unalignment - -Add: make install handles doc/ properly - -Add: generate OS package list; package descriptions and metapackage - -Add: plugin naming conventions: lib_ plugins - -Add: packaging.txt mentions recommends the default package splitup - - [export_bboard] - -Fix: build: explicit dependency on cairo - - [export_gerber] - -Fix: hackvana naming style needs the drill file named .cnc not .drl (reported by Erich) - - [export_ipcd356] - -Change: plugin state: requires full rewrite - - [export_nelma] - -Change: do not compile nelma by default, mark it deprecated - - [export_openscad] - -Add: proper rotation and mirroring for 3d models when placed as subcircuit - -Add: incompatibility warnings if padstack hole or subc orientation can not be determined - - [export_ps] - -Fix: always draw with erase color on mask - the ps exporter doesn't support real compositing anyway (fixes missing padstack masks) - - [export_svg] - -Tune: poly bloat value minimized - mostly covers the thin lines missing because of the slicing but does not make noticable difference in size - - [export_xy] - -Fix: use 1 and 2 for Macrofab SMD and PTH (celem says so) - -Add: respect the pnp-origin mark of the subcircuit if it exists - -Add: macrofab: fill in the last two (optional) columns using subcircuit attributes macrofab::DNP and macrofab::MPN - - [fontmode] - -Fix: make font layer visible by default - - [fp_fs] - -Add: save the output of a parametric footprint gen in a temp file because it will need to be loaded multiple times and rewind() is called on it (because of the multiple file formats) - -Add: temporary hack for allowing kicad modules to be loaded from the lib - [fp_wget] - -Fix: work around wget's buggy error return on succesful non-updating -c - - [gerber] - -Add: when 'copy outline to layer...' is enabled, do not consider affected target layers empty even if their group is empty, because of the copied outline; note: the outline is never empty (implicit board extent outline!) - - [gtk] - -Fix: preview expose area scaling bug: have to tune the expose extents to the actual widget extents else objects beyond the original extent but still within widget pixels won't be drawn - -Fix: when picking the default format for fp save, pick the first match, not the last match - -Fix: invalidate after propedit val changes so the changes are drawn immediately - -Fix: attribute dialog: detect if input is partial or conversion fails and don't change the value to avoid overwriting valid values with invalid values - -Fix: do not change DAD widget values if the new value matches the old value, to avoid unnecessary cursor jumps - -Fix: allow the lib_gtk_hid plugin to compile as dynamic linked plugin (CFLAGS was set too late) - -Fix: handle non-existent/deleted UI layers in the wt selector - -Fix: library window: arrow key navigation shouldn't auto-activate levels and parametrics, only static footprints - -Fix: library window: page up, page down, home and end are also "arrow keys" and should activate footpritns - -Fix: library: untangle ctrl+c from igoring unhandled keys and arrow keys - -Fix: library window: accept keypad enter as well for row selection - -Fix: help text: invocation lists all known gtk plugins - -Fix: config window: don't duplicate the window close mechanism; all signals should call the same code and that code should be prepared for multiple calls (fixes: closing preferences from the window manager then reopening crashed) - -Fix: GetXY() presents the query string in the status line - -Fix: do not create multiple instances of the command window, just raise the existing instance if needed - -Fix: gl: Check for NULL name when setting colour. If NULL, print a warning message and set colour to magenta instead of crashing. - -Add: DAD dialog TABBED implementation - -Add: gl: draw UI layers - -Change: instead of pins/pads and vias, the layer selector has an entry for controlling holes - -Change: increase the wait time between param dialog modification and text entry refresh, to allow more time for the user to complete her edits. - - [lesstif] - -Fix: allow drawing UI layers - -Fix: duplicate shift+d hotkey in the default menu file - -Fix: normal handling of silk, paste and mask layers in the layer selection/visibility mechanism - -Fix: present the query string in GetXY - -Del: old special case layer selector menus - -Add: implement tabbed widget for DAD - -Add: attribute dialog should have minimal width and height enforced - -Add: apply the central layer alpha setting on rendering - -Add: redraw after color conf changed - - [import_sch] - -Fix: debug messages should not be printed to stdout but logged properly, if the new verbose config permits - -Add: default value of verbose is false - - [io] - -Fix: when loading element, check for the plugin's element load capability, not pcb load - -Change: API CHANGE: test_parse_pcb -> test_parse that gets the expected type of the file instead of a dummy board ptr - -Change: footprint load API contains an optional format parameter (just like the board load API does) - -Add: API for reporting save incompatibilities - -Add: do a test_parse before attemting to parse a footprint - -Add: LoadFrom() action respects the optional format parameter when loading an element - - [io_eagle] - -Fix: version parsing now deals with absent '.Z' in X.Y.Z version string more gracefully - -Fix: not being able to place a component is not a warnign but an error, as it almost surely breaks the board - -Fix: elem text set (which is really just subc attribute set) - -Fix: don't add subc instances twice in rtree - -Fix: bin: another hole type ID found in the wild, v 5.12 - -Fix: bin: can now read new hole type with mask 0xFF53 "hole" - -Fix: bin: binary layout hole features now have diameter, drill doubled to get correct size - -Fix: bin: inhibit group updates until all groups are read to avoid invalid/missing silk layer problem - -Fix: bin: read pad block half_drill, half_diameter as unsigned bitfield too. - -Fix: bin: read bitfield as T_UBF not T_INT - -Fix: bin: SMD rotation RXXX was not being parsed properly prior to padstack creation - -Add: bin: preliminary support for free text block storage in egb_ctx struct - - [io_hyp] - -Fix: write implicit board outline if there's an outline layer but it is empty - -Del: old element silk screen draw code - subcircuits don't need silk outline on screen - -Change: generated test: get the oblong padstack asymmetric to make it different from the round pad - -Add: load padstacks as padstacks, with considering all metal layers described in the file - -Add: make sure layer group names are unique on save - - [io_kicad] - -Fix: don't assume the order of the layer stack, different versions of kicad use different order - -Fix: don't guess layer type by ID - -Fix: do not fake host to pcbnew - write pcb-rnd version info in header - -Fix: do not center the drawing in the page (this will be an optional feature later) - -Fix: get smd pad and thru-hole pin rotation angle right - -Cleanup: major simplification in the internal API of the pad creation code - make the pin code reusable for via - -Cleanup: code simplification: now that tally is back in the central pad code, it won't ever be NULL - -Cleanup: split paper size heuristics from pcb write function - -Change: write.c layer model rewrite - use data tables instead of code hardwirings - -Add: generate implicit outline - -Add: io compatibility wanrings for term attributes on padstacks - -Add: auto layer allocation for the case when footprints are loaded - - [io_lihata] - -Fix: invalid memory write on loading rats (post-id-assignment) - -Fix: don't crash on padstack corner case: hole with no shape - -Fix: remove trailing \n from error report strings - -Fix: do not crash with sparse padstack proto array (using IDs) - -Move: automatic p&p and origin code into a common helper function - io_pcb will use this too - -Add: support prio: lihata is the native format for footprints - -Add: inhibit poly clip while loading a design, apply the clip once at the end - - [io_pcb] - -Fix: when creating a new subc on a data, make sure padstack rtrees are linked - -Fix: save may change the logical layer ordering - to keep the GUI in sync, generate a layer change event - -Fix: reuse paste and mask layers, by name, to avoid ever-growing number of layes on round trips - -Fix: do not export flags that are unknown to mainline - -Fix: do not merge element lines on load-to-subc - the loader should not change the data - -Fix: don't crash on saving a footprint even if refdes is not set - -Fix: insert missing substrate layers after loading the board to get consistent output - -Fix: when mirroring a padstack while loading, use pcb_pstk_data_hack, because PCB is not necessarily pointing to where we are loading the padstack into (fixes the 'import .pcb into paste buffer and get bottom side padstacks on the top side') - -Workaround: when loading an old fp file, there's no unit format information - use the preferreed hman readable variant over centimils for now - -Add: try to guess save unit format variant from the unit styles seen in the file - -Add: create explicit paste and mask layers - drawing on implicit layers is not supported by subc/padstack - -Add: incompatibility error when saving non-empty mask or paste layer - -Add: create the usual subc layer groups and layer bindings when loading an old fp for editing - -Add: reverse engineer rotation of subcircuits when converted from element on load - -Add: when loading old elements, also mark the pnp point unless the origin should be used - -Add: io incompatibility error on save if there are no styles (geda/pcb tends to crash on such files) - - [io_tedax] - -Add: IO plugin registration, bindings for loading and saving footprints - -Add: parse pcb hooks for loading footprints from the CLI - - [libuhpgl] - -Add: ignore esc sequences - -Add: support for the pen speed (VS) command - - [polygon] - -Fix: increase line endpoint epsilon comparison (see knowledge pool node 'polybug1') - -Fix: clearance is generally considered to be part of the bbox for all objects, make it so with polygons too - -Add: more detailed error reporting on polygon contour check fail - -Add: when self intersection debug is drawn, redraw the offending lines with bright red - -Add: line-polyline intersection optionally returns the point of intersection - -Add: code that will later on fix the most trivial self intersection polygon cases - -Add: delayed poly clipping with dirty flags; poly clip all (forced all-poly reclip) - - [propedit] - -Fix: absolute values for padstack rotation - -Fix: padstack map: global clearance value halving is not needed - -Fix: padstack clearance set doesn't need to *2 the value - -Add: edit polygon properties: clearance - - [report] - -Fix: NetLength works even if there are no elements - -Add: report(NetLengthTo) - -Add: when printing rat line endpoint groups, print their names too - -Add: print parent subc - - [menu] - -Del: nonetlist flag set menu: it was element-only, and there is now a generic flag editor that includes this flag too - -Add: 'free rotate selected' menu in the popup - - [rtree] - -Add: switch over to using genrtree instead of the local implementation - -Del: remove 'manage' from the API - callers should arrange freeing the tree nodes; a full tree must be dynamic or static, mixed trees are not supported - - [rubberband_orig] - -Fix: rubberband ratlines connected to subcircuits/padstacks - -Change: Remove the copper-only constraint; rubberband is an editor feature that should work on any layer - - [scconfig] - -Fix: when building libminuid, expect spaces in CLFAGS and LDFLAGS passed down - -Fix: build libminuid using $(MAKE) - -Fix: explicit rules to build genlist objects for gsch2pcb-rnd - -Fix: add repeat report warning if libxml2 is missing - -Fix: make clean (and distclean) removes ojects in libminuid and uundo - -Fix: missing dependency for building all genlist objects for gsch2pcb-rnd (workaround for excess smartness of GNU make) - -Add: ./configure --profile generates profiling code with gcc (-pg and -no-pie to work around a gcc bug) - - [teardrops] - -Fix: use the central distance calculator instead of a local, non-coord-type-safe copy; also avoid sqrt() - -Cleanup: remove doxygen from copyright and remove some dead code - -Add: handle padstacks (arbitrary poly shaped pad handling is very limited) - - [util] - -Fix: fp2subc: force saving as lihata v4 so the result is always a subc - -Fix: gsch2pcb-rnd: don't embed Install_root in the executable - -Fix: gsch2pcb-rnd: typo in LIBDIR_INSTALLED made gsch2pcb-rnd check for the gnetlist backend always fail - -Add: script to list 404 pages on the official home page - -Add: fp2subc -d (or --debug) option to wrap pcb-rnd in a debugger (e.g. valgrind) - -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 - - -### NOTE: changelog for previous versions can be found in Changelog.* ### Index: trunk/Changelog.1.2.x.gz =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/Changelog.1.2.x.gz =================================================================== --- trunk/Changelog.1.2.x.gz (nonexistent) +++ trunk/Changelog.1.2.x.gz (revision 17164) Property changes on: trunk/Changelog.1.2.x.gz ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property