Index: Changelog =================================================================== --- Changelog (revision 34710) +++ Changelog (revision 34711) @@ -1,1439 +1,4 @@ -pcb-rnd 2.4.0 (r34705/r32627) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +pcb-rnd 3.0.0 (rxxxxx) +~~~~~~~~~~~~~~~~~~~~~~ +(last: r34705) -pcb-rnd part: - - [ar_cpcb] - -Cleanup: use pen via padstack proto instead of old via diameters - -Fix: don't use old via hole diameter, extract this from pen's via padstack proto - - [autoplace] - -Cleanup: remove local vector implementation, use genvector for list of boxes - - [autoroute] - -Fix: copy and validate route style via padstack proto instead of diameters - -Change: switch over to using route style via padstack proto instead of diameters - - [build] - -Fix: byaccic make rule: use full relative paths to all files instead of cd'ing into the plugin's dir - this way generated #line will have full path too which may be less confusing to some weaker C compiler implementation - - [cam] - -Update: default file name derivation for new librnd export options vs. attributes API - -Cleanup: const correcntess for the new librnd export options API - - [core] - -Fix: implicit func declaration - -Fix: c89 violations (empty declarators) - -Fix: make Connection(find) result message more clear, especially when no object is found - -Fix: moving selected objects to current layer uses the move object call that has the bugfix for moving floaters - -Fix: padstack conversion shouldn't crash when it fails early, while counting layers - -Fix: obj_line unreg: do not unreg endpoint objects, they were not registered in the first place - -Del: old ring/hole diameter from the route style API - -Del: remove internal, legacy board via hole/pad diameter setter functions - -Del: box-box intersection code -> moved to librnd - -Cleanup: pcb_board_set_via_drilling_hole() shouldn't check for code hardwired minimal/maximal hole size (it was overriden using force anyway) - -Cleanup: pcb_board_set_via_size() shouldn't check for hardwired minimal/maximal via size (it was overridden by force anyway) - -Cleanup: remove PCB_MIN_PINORVIAHOLE (hardwired minimum size) - -Cleanup: remove PCB_MIN_PINORVIASIZE (hardwired size limitation, not in use) - -Cleanup: remove PCB_MIN_GRID (hardwired size limit not in use) - -Cleanup: remove PCB_MIN_PINORVIACOPPER (hardwired size not used in core) - -Cleanup: remove pcb_custom_route_style - not used by anything, not reentrant; leftover from a pre-conf time - -Cleanup: RouteStyle() action uses the central route-style-to-pen set function instead of trying to invent a local implementation - -Cleanup: remove pcb_board_set_line_width() and pcb_board_set_text_scale() from the public API - trivial short functions used by only one caller - -Cleanup: move undo serial management out from low level ApplyPen call so operation on selected will be a single undo serial - -Cleanup: UI layers do have a non-NULL, valid data parent, a dedicated (pcb_data_t *) within pcb_board_t; this makes ui layers less of a special case and is one step toward being reentrant - -Cleanup: registering a new UI layer requires a pcb_board_t * because UI layers are really under a board - -Cleanup: change the internal API of ListBlock so whether selection should be done is an extra explicit argument - fixes the unwanted subc selection on show netnames - -Cleanup: list_block_cb should never select; make object selection side effect an explicit argument in the basic list block call - -Add: font ID field in the route style struct - -Add: API CHANGE: undoable pcb_route_style_change() argument list extended with font id - -Add: RouteStyle() can set the font property - -Add: apply route style's font ID on pen when switching route style - -Add: new conf node: pen property for via padstack prototype ID - -Add: if a style has a via proto, selecting that style should set pen proto - -Add: SetSame() can pick up via style with via pstk proto - -Add: RouteStyle() can get and set the via-proto field - -Add: helper function to return pen via bbox larger side (useful for constructing via site search boxes) - -Add: ApplyPen() action on object, for lines and arcs - -Add: text object: undoable any-field change (low level) - -Add: ApplyPen() for text objects - -Add: ApplyPen for padstacks - -Add: ApplyPen(selected) to complement ApplyPen(Object) - -Add: public poly point preallocation API so loaders can save on reallocs - -Split: padstack bbox calculation so that a prototype's bbox can be calculated too - -Update: convert the default boards to lihata v8 - use explicit padstack vias and text scale in routing style - - [dialogs] - -Fix: don't fancy executing an infinite loop when grid is set to zero in padstack library preview - -Del: remove printer calibration dialog, print the url of the manual process instead - -Update: librnd API change on export options ->value removal: use hid->argument_array instead - -Add: padstack lib dialog: padstack prototype copy & paste using system clipboard - -Add: action pstklib(board, retid) lets the user select a prototype from the board's list and returns the pid as long - -Add: optional presel argument in pcb_dlg_pstklib() so it can select a padstack proto from the list on open - -Add: pstklib() action: optional presel argument - - [djopt] - -Cleanup: create local menu file so djopt entries can be removed from the central menu file - - [doc] - -Add: help page for printer calibration removal - -Add: note on ldconfig and non-standard-path installation vs. .so files - -Add: mention Solaris as a supported UNIX system - -Add: drc_query: document the stock rules - -Add: PasteBuffer()'s Push and Pop - - [draw] - -Fix: explicit transformation enable_silk_invis_clr to enable the old "draw other-side silk with invisible object color" hack; on by default for the gui, off by default for export plugins - -Fix: restore NULL info after drawing padstacks and misc virtual layers, before drawing UI layers to ensure proper UI layer display - - [drc_query] - -Fix: default config: overlapping holes test: consider padstacks with hole > 0 only - - [export_lpr] - -Fix: load default values for ps inherited fields as well while initializing the export - -Del: remove calibration code that cross-called the ps exporter for the test page - -Add: optional plugin configuration for printer calibration default value in X and Y directions - - [export_openems] - -Fix: do not crash if excitation is not set (to_hz conversion returns error on input NULL) - - [export_png] - -Fix: do allow exporting mask and bottom silk in CAM mode - -Fix: in CAM mode render bottom side silk with invisible color if --as-shown is set - - [export_ps] - -Cleanup: do not rely on PCB_MIN_PINORVIAHOLE for drill helper minimum setting, just specify a small-enough number - PCB_MIN_PINORVIAHOLE is going to be removed from the API - -Fix: eps export: if CAM is active, do not omit the bottom silk when explicitly requested - -Fix: eps export: when exporting the bottom silk with CAM, --as-shown applies far-side invisible-color - -Del: pscalib() action; also remove the calibration test page generator and calibration value guess code - - [export_stl] - -Fix: detect broken outline and cutout and throw an error instead of crashing - - [export_svg] - -Fix: --as-shown enables the far-side silk invisible-color on the bottom silk - - [exto_std] - -Change: line-of-vias: switch over to padstack proto in route style - - [fontsel] - -Add: extend the core and action APIs for modal selection of font ID without changing the font ID of a specific text object or the pen - -Add: FontSel(fontid) sets fungw result, typed long, to the selected font id (unless the user cancelled) - - [fp_fs] - -Fix: configurable prefix filter bug required full match, not prefix match - - [gui_act] - -Add: SetSame() works on text scale, thickness and font - - [import_mucs] - -Change: switch over to using via pstk proto instead of diameters - - [import_sch2] - -Fix: detect broken/unfinished import setup and invoke the dialog instead of reimport - - [io_bxl] - -Update: use full relative path in byaccic generated files - - [io_lihata] - -Fix: more graceful handling of invalid via hole dia problems (than assert) - -Fix: write text scale and clearance dummies without creating empty nodes; also fixes typos in scale_x/scale_y dummies - -Cleanup: remove route style old via diameters from internal API - -Add: concept of route style unset font id, for compatibility with old boards - -Add: v8 saves and loads route style fid (font ID) if it's not -1 - -Add: when saving diameters converter from io_pcb to lib_compat_help as it will need to be reused in io_lihata for pre-v8 - - [lib_hid_pcbui] - -Fix: find best fitting route style instead of first fit - because of wildcard text settings - -Fix: update pen by reselecting the current routing style after a routing style modification from the dialog - -Update: status line prints via prototype ID instead of diameters - -Add: route style dialog: font id button (invokes the font selector) - -Add: route style dialog: concept of unset font id, for compatibility with old boards - -Add: route style dialog: padstack proto selection button instead of obsolete via hole/dia (run the prototype selection dialog when clicked) - - [menu] - -Del: printer calibration menu item - no such feature anymore - -Add: ApplyPen menu items for object and for selected - -Add: menu binding for interactive custom grid setting - - [millpath] - -Fix: the plugin depends on ddraft for intersection calculation - - [plugins] - -Fix: typo in various import plugins ("schamtics" -> "schematics") - -Cleanup: make sure all export plugins have their options as static const - it's private and should never change - -Cleanup: create local menu file for the puller plugin so its menus from the central menu file can be removed - -Update: librnd API change on export options ->value removal: update export plugins on librnd calls - -Update: export plugins: new way of loading default values for librnd API change - -Del: remove clibration hook from all export plugins - API is going to be removed from librnd - - [puller] - -Add: local menu file - - [qparse] - -Fix: in non-function syntax stray whitespace at the end shouldn't induce an extra empty argument at the end of argv[] - -Fix: update 'consumed' output to skip over closing parenthesis for function syntax or terminating semicolon - - [scconfig] - -Del: special buildin-hack for lib_compat_help: core doesn't depend on it anymore - - [teardrops] - -Fix: exto: set up intern copper layer offset when converting line into teardrop exto so that the new object won't change layer - -Fix: exto: accept only copper layers for edit object - - [tests] - -Update: vendordrill test res for the new pen terminology in info messages - -Update: cam test refs for black bottom silk color (svg without --as-shown doesn't do the gray invis color anymore) - - [tool_std] - -Fix: don't allow drag&drop cut&paste to even start if the rat layer is active - if we'd allow that, cut would remove objects but the subsequent paste would fail because the buffer tool can not be activated - -Cleanup: use pen via padstack proto bbox size for searches instead of the old diameters - -Add: place via from style proto - -Add: render via xor-draw using real via geometry (from proto) - -Add: xor-draw a clearance approximation when clearance indication is enabled - -Add: cache via and text tool IDs - - [util] - -Fix: sign verify typo: --print on crl should use the file name passed on command line - -Update: repo.hu crl for another year - - [vendor] - -Cleanup: remove PCB_MIN_PINORVIACOPPER, rather depend on conf node design/min_wid for fixing up invalid route styles - -Cleanup: remove DRC section from the example - DRC in vendor files are not supported - -Change: switch over from tuning the .Hole field of the routing style struct to deal with via padstack prototypes - -Del: remove via pad diameter tuning - vendor drill is about changing drill sizes only, finding thin copper is up to the DRC - -librnd part: - - [build] - -Fix: make sure the local .so symlink is always updated so it never points to a previous, lower versioned .so build - matters for non-installed, from-source app compilation - - [core] - -Fix: wrong action description for SetGrid() - -Split: export option (default val) to attrib copy code to a separate function for reuse - -Split: code that loads all export attributes/values from the options table for a hid into a public function so export plugin init code can call it - -Import: cleaned-up box-box intersection code from pcb-rnd - -Del: box list type: not generic enough plus no user left - -Add: Grid(ask) for setting custom grids - - [dad] - -Add: macro to set up an export option using an external hid_attr value - - [gtk] - -Fix: do not lose the "mouse entered drawing area" event after closing a popup when the command line is open; fixes the "command line -> popup -> scroll -> scroll-lockup" bug - -Fix: menu errors in message log should end in \n for a readable log - -Fix: color conversion: 1 LSB got lost on a color conversion round trip half of the cases - -Fix: win32 glue: wrong arguments to rnd_system() killed cache update on win32 - -Fix: accept 'ungrab' type of drawing area entering as enter event to fix a pan lockup on mid mouse button 'dragged' from outside to inside the drawing area - -Fix: don't crash on setting mouse cursor when no tool is loaded - - [hid] - -Cleanup: API CHANGE: remove ->value field from export options; export options should be const and current values should be maintained in hid->argument_array; this will fix a bug caused by unknown sizeof(enum) vs. void * - -Cleanup: API CHANGE: read-only export option split: function callback option needs to get the value as well - -Fix: const correctness in handling export/hid options: they are read-only - -Fix: const correctness in taking hid options (read-only) - -Fix: const correctness: store export options only in const - -Fix: const correctness for the new API in hid_nogui - -Fix: const correctness on export options in all core HIDs - -Fix: const correctness in the older export option registration call - -Fix: const correctness in DAD around read-only export options - -Del: API CHANGE: remove the old, NULL hid option registration call - it won't work with the read-only option table - -Del: remove the old ->value field of export options; since this struct is read-only in all export/hid plugins by now, it can not be written and the split _values[] array shall be used - -Del: API CHANGE: RND_DAD_DUP_EXPOPT() - unsafe for read-only option tables - -Del: the printer calibration hook, ->calibrate(): should be done outside of ringdove apps - - [hid_lesstif] - -Update: export options ->value removal - - [lesstif] - -Cleanup: argument handling; option table is read-only, follow the new API of split values - -Cleanup: remove old, commented out pcb_width and pcb_height - the code uses hidlib struct for long enough not to need to remind us - - [loghid] - -Cleanup: switch over to read-only command line option table to follow librnd API change - -Cleanup: excess initialization of export opt ->value - - [util] - -Add: sign verify: --print for human readable output - -Update: sign: repo.hu crl for another year - - -pcb-rnd 2.3.2 (r34276/r32586) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -pcb-rnd part: - - [act_draw] - -Add: UILayer() to create and remove UI layers from scripts - -Add: InvalidateAll() action for scripting - - [act_read] - -Add: ReadBoard() action to retrieve board size in scripts - - [ar_cpcb] - -Cleanup: use the safe_fs variant of pclose() to avoid implicit declaration - - [ar_extern] - -Add: missing comment on describing the process of export-run-import - - [brave] - -Change: invert PCB_BRAVE_ENFORCE_CLR_MOVE as it seems safe - -Del: PCB_BRAVE_NOCLIPBATCH: clip batch is default on for almost a year now with no bugreport on it, so it's time to make it permanent - -Cleanup: remove unused brave.h includes - -Add: brave mode for developing lihata v8 - - [build] - -Fix: pcb-rnd-src: OSX has a different env var for LD_LIBRARY_PATH - -Fix: use static librnd linking on windows cross compilation, because of dll-can't-ref-host-app-symbol problem - -Workaround: apple -framework workaround, same as librnd r32534 - - [cam] - -Fix: export unplated, plated slot layer to gerber mech layer for seeed CAM, tested with seeed viewer - - [core] - -Del: struct fields for explicit, layer ID based binding: layer IDs are not stable, the dialog uses reverse engineering for figuring the binding from a specific layer anyway - -Cleanup: const correctness in obj_text - -Cleanup: poly text plow doesn't depend on global PCB but resolves pcb from Data - -Cleanup: remove conf_core workaround leftover once used in win32 config dirs - -Fix: set color, thickness and cap before calling RND_EVENT_GUI_DRAW_OVERLAY_XOR - -Fix: wrong calculation of tight_clearance text line width + clearance on lines and arcs - -Fix: poly clearance value around tight_clearance text with polyon glyphs ignored poly-side clearance enforce - -Fix: poly heavy terminal: in concave case place marks only within the polygon area - -Fix: text placement by bbox: proper rounding of base X and Y coords - -Fix: text string fetch doesn't crash if text object has no parent - -Fix: ui layers: set up a dummy pcb_data_t for being the parent of all UI layers temporarily so the object id based search works - -Fix: do not register line endpoints in the id2obj hash: line endpoints are not compatible with pcb_any_obj_t - -Fix: when registering a line on an UI layer, make sure it is not attempted to register in the board id hash - -Fix: conf_core needs to include hidlib init for the windows compilation (windows specific path hack) - -Split: text minimum thickness on a specific layer to a separate, public function so that the poly clearance code can use it too - -Add: text change-clear-size (standard change operation) - -Add: when copying/dupping text objects, also copy the clearance field - -Add: configure default anyload persistent dir to be ~/.pcb-rnd/anyload/ - -Add: config node for setting the 'black color' for the 'black current group' feature - -Add: LayerXform action for changing per layer transformations - -Add: introduce a separate gui-only layer transformation so it won't interfere with export - -Add: new undo action commands: Undo(FreezeAdd) and Undo(UnfreezeAdd) - -Add: helper function to decide if a layer is an UI layer - -Add: idpath support for ui layers - - [dialogs] - -Fix: layer binding dialog: when binding is changed using the right side layer selector, rename the left side layer; thsi is required so that if there are multiple layers in the target group, the right layer is picked (assuming unique layer names) - - [doc] - -Fix: missing style node from the pre-v8 input netlist - -Fix: lihata format doc: the input netlist had the wrong node name - -Update: plugin developer doc: plugin conf registration simplified - -Update: vendordrill user manual: remove unusable fields of the drc subtree and mention the deprecation - -Add: explain how to use pcb-rnd-src for setting up LD_LIBRARY_PATH - -Add: render script syntax - -Add: lihata format doc: v8 text clearance - -Add: text clearance field in the data model manual - -Add: vendordrill user manual: document the extended skip features - -Add: vendordrill user manual: document "pure" loading - -Add: appendix action doc: vendordrill pure loading - -Add: vendordrill user manual: include 'down' rounding - -Add: document lihata v8 changes so far - -Add: vendor drill transition help - -Add: OSX compilation results and pcre comment from rom - -Add: query: document the obj_by_idpath function - -Add: query: document the poly_is_valid() function - -Add: win32 limitation on window maximization - - [draw] - -Change: switch over to scriptable rendering - -Change: default script: draw invisible only in GUI mode and far-side doc/silk in export mode - -Split: other-side silk setup from draw-everything (to make scripting possible) - -Split: copper layer from draw-everything (to make scripting possible) - -Split: other-side silk draw from draw-everything (to make scripting possible) - -Split: other-side padstack and mask draw from draw-everything (to make scripting possible) - -Split: draw holes from draw-everything (to make scripting possible) - -Split: draw paste from draw-everything (to make scripting possible) - -Split: draw xor marks from draw-everything (to make scripting possible) - -Split: draw-everything functions into a separate .c file as they are getting big (and will get even bigger with scripting) - -Split: draw_everythin() into a generic init/uninit section and the logic that tries script rendering first and falls back to the original hardwired C code when that fails - -Cleanup: code simplification: merge draw_everything_holes() in its parent - -Cleanup: unify visible/invisible side flag handling - -Cleanup: unify render script function naming and calling conventions - -Cleanup: simplify drawing the 'invisible'/'far side' doc/silk layers for the render script - -Cleanup: disable code for excess GUI flushes after drawing the "invisible" (far side) objects in GUI mode - - [draw_fontsel] - -Fix: use "element" color (default silk) for black and mark color for red: users who change their background color will likely to change these too to keep them visible - - [drc_query] - -Split: lihata rule loader from lht parser so a subtree from any lihata document can be loaded - -Add: anyload hook for embedded lihata drc rules - -Add: anyload support for external files (both lihata and tEDAx drc rules) - -Add: check for invalid (self-intersecting) polygons - - [export_c_draw] - -Add: plugin infra and minimal implementation with gc, lines and arcs - - [export_png] - -Add: as_shown preserves GUI xform flags - - [export_ps] - -Add: as_shown preserves GUI xform flags - - [export_svg] - -Add: as_shown preserves GUI xform flags - - [export_xy] - -Fix: proper unit array boundary check - - [extedit] - -Cleanup: use the safe_fs variant of pclose() to avoid implicit delaration - - [extobj] - -Fix: buffer to board copy: separate keep_ids from udpate extobj parameter; keep_ids is temporarily disabled but we still need to execute extobj updates - -Fix: buffer to board copy: update all floaters to get it recalculated (for the current board state after placement) - -Fix: dimension: don't crash on all-floater update - -Fix: increase undo serial after conversion so each conversion can be undone separately - - [fp_wget] - -Fix: fp_wget shall work from the converted lihata version instead of the converted fp version because the fp format is too limited - - [io_autotrax] - -Add: io incompatibility error on saving text with clearance != 0 - -Add: io incompatibility warning for text rotated not in 90 degree steps - - [io_eagle] - -Cleanup: wrong return type and unused vars - -Fix: proper rounding of coords and sizes for bbox based text placement - - [io_kicad] - -Fix: alternate name for solder_paste_ratio seems to be solder_paste_margin_ratio - -Fix: typo in location name - -Fix: rounding errors in text-by-bbox import - -Fix: change the order of operations when creating a subc for a module being loaded: there's no guarantee there would be an (at) still the subc shall be created - -Cleanup: make subc and pad creation errors easier to distinguish - -Add: io compatibility error on saving text with clearance != 0 - - [io_kicad_legacy] - -Add: io compatibility error on saving text with clearance != 0 - - [io_lihata] - -Cleanup: simplify per version io registration code by removing dups - -Add: denoise config/save-as option to omit saving volatile flags (select/warn/found) - -Add: denoise: do not save rats in denoise mode - -Add: v8: brave-mode-enabled experimental lihata board v8 - -Add: v8: do not save dedicated style field in netlist, it is enough to have the style attribute - -Add: v8: introduce subcircuit v8 because of text clearance - -Change: rearrange save-as dialog options so they took less screen space - - [io_pcb] - -Add: io compatibility error on saving text with clearance != 0 - -Add: read support for 4.3.0 pad center description in footprints - -Add: comment on why the optional extra layer type should be ignored on read: geda/pcb code is totally broken and writes the _wrong_ layer type so it would even ruin outline layers while at the moment (4.3.0) it won't really let the user have editable mask or paste layer - - [io_tedax] - -Add: io compatibility error on saving text with clearance != 0 - - [lib_hid_pcbui] - -Fix: do not create menu names for outing styles and layers with '/' in them, that interferes with menu path addressing and breaks the menu system on merge - -Fix: pcb_act_DescribeLocation(): do not depend on uninitialized ptr2 for rats - -Add: layer selector: mark layers that have non-zero xform flags - - [libcdtr] - -Fix: tester: load bbox parameters as floating point numbers for portability - -Fix: tester should print coords as doubles always, that's the only portable way for different coord units - -Fix: compile time option to round point coords to avoid the "points too close" bug and floating point number instability - -Split: debug functions to a separate debug.[ch] - -Add: optional trace and replay functionality for debugging how a specific run of triangulation is going wrong - -Add: dump triangles with their IDs printed in the center (by Wojciecj) - -Add: dump_triangles_anim command in the tester and adjacent triangle dump in the lib (by Wojciech) - - [librnd] - -Change: link librnd using the .so files, with -l, instead of static linking (next step of librnd separation) - -Fix: order of -l's does matter; link librnd first as in a semi-static setup libs like -lgtk need to come after librnd - -Cleanup: remove workaround that was needed when librnd was static linked - -Add: pcb-rnd-src helper script to set up LD_LIBRARY_PATH for source local execution - -Update: use the new conf API option for simpler plugin intern config registration - - [menu] - -Add: import anyload menu - -Add: layer context popup: menu items for toggling wireframe and thindraw xforms - - [pcblib] - -Fix: parametric footprint default param list for msop, qsop, ssop and tssop: don't use newlines, that's incompatible with original-awk (OSX) - - [propedit] - -Add: event binding and internal hook that triggers for propedit dialogs showing objects when the board got edited - -Add: refresh the propedit dialog from the board edited hook - -Add: make p/text/clearance available - -Add: help preview: thickness and clearance - -Add: help preview: p/text/scale - -Add: help preview: text rot, scale_x, scale_y, thickness - -Add: help preview: arc angles and radius - -Add: help preview: textual help for flags - -Add: help preview: padstack fields - -Add: help preview: p/text/clearance - - [query] - -Add: support for text clearance - -Add: query(count) for scripting - -Add: user function to convert an object ID to an object - -Add: poly_is_valid() function that checks and returns if a polygon is valid, without asserting - - [report] - -Fix: reports shouldn't try to open a dialog box in batch mode, just print to stdout - -Fix: typo in report name may cause rnd_printf to resolve argument not passed (%P) - - [scconfig] - -Add: half-working -static for ./configure - some libs still need to be added manually - - [shape] - -Fix: round rect poly: maximum rounding radius depends on number of square corners so rounding can go beyond half of a side - -Add: the GUI shape generator prints an error message in the log about how exactly the round rect generation failed - -Cleanup: const correctness on error report - - [show_netnames] - -Add: netname label cache; invalidate the cache on netlist or board change - -Add: invalidate the label cache on font change - -Add: scale text to 80% of line thickness, using the cached text bbox - -Add: config option for omitting labels - -Add: omit labels by netname regex list - -Add: if pcb-rnd::show_netname attribute on a net is "off", "no" or "false", do not display that netname - - [teardrops] - -Split: arc calculations for line-padstack from the r-search callback - -Split: padstack shape size capture from the search code - -Cleanup: make the code reentrant - -Cleanup: don't use global PCB directly - -Cleanup: use %mm trace prints for coords instead of unitless %f - -Fix: don't convert doubles to int for drawing the arc - do proper rounding and convert to rnd_coord_t (so it works in 64 bit coords setup) - -Add: teardrop extended object with a curved < mark on the exto 'E' mark - - [tests] - -Add: automated tests for vendordrill skips - -Add: vendordrill tests for all different rounding methods and pure loading - -Fix: vendordrill tests: remove installation-specific full paths from the output - - [util] - -Fix: pcb-rnd-svg: wrong return value on test-all - -Fix: pcb-rnd-svg: be able to run pcb-rnd from source - -Add: gsch2pcb-rnd needs to define rnd_app_package for anyload to compile - -Add: sign: ./verify --print prints the crl or ca in human readable form - - [vendordrill] - -Del: processing of the drc subtree (rather print an error with an URL to details on the anyload transition) - -Del: do not load vendor name - it is not used for anything - -Fix: use <> #include for librnd - -Cleanup: use enum instead of macros for rounding rule names - -Cleanup: use switch instead of long if()s for sorting out rounding rules - -Cleanup: code terminology: use "nearest" instead of "closest" to match argument name - -Cleanup: rewrite the slow, inflexible, local-vector-implementation skip list as a faster vector-in-hash implementation using genht and genvector - -Add: round down optionx - -Add: syntax to allow skipping by aritrary attribute - -Add: "pure" mode in loading to allow multiple files to be loaded incrementally - -Add: errors and warnings for the obsolete drc subtree - -Add: parse the subtree for anyload - -librnd part: - - [anyload] - -Add: basic reg/unreg infra, action, loader, - -Add: before loading external files, make sure path is under the directory tree the anyload file is in - use "realpath" to figure symlinks and .. references - -Add: support for menu patches - -Add: support for conf subtrees - -Add: anyload() without arguments should pop up a file selection dialog - - [build] - -Fix: enable the mkdtemp forward decl workaround for non-debug builds - on OSX feature macros disable the mkdtemp prototype - -Fix: missing ptrdiff and other type detections required for libporty_net on some systems - -Fix: detect ioctl and fionbio for libporty_net - -Fix: cross compilation: build puplug objects in separate files for host and target instead of running make clean and risking a race condition - -Fix: don't append NULL to CFLAGS when there's no -pedantic available - -Workaround: apple uses multiple -framework words in the LDFLAGS - we need to patch the list before running uniq so they are all kept - -Add: Makefile rules for symlinking local .so and .so.2 libs in the source dir, for pcb-rnd's temporary from-source execution - -Add: option for static linking librnd (windows needs this because of broken dynamic link: dlls can't reference host app symbols without some extra magic) - - [conf] - -Change: load any .conf file from pcb-rnd conf dir, for plugin confs, instead of hardwired conf file names from plugins - - [core] - -Fix: local realpath implementation shall return NULL when path not found (security...) - -Fix: don't crash if a deregistered menu left NULL action in the key tree - -Add: grid(get) - returns current grid size (for scripting) - -Add: CreateMenu: an optional argument for setting the accel (key binding) on the new menu - - [gtk] - -Cleanup: disable more theme setting code that fell out of usage - -Fix: do not lose the "mouse entered drawing area" event after closing a popup when the command line is open; fixes the "command line -> popup -> scroll -> scroll-lockup" bug - - [hid] - -Cleanup: const correctness: passing on a pixmap for HID draw can not be const, because the HID will want to load ->user_data for caching - - [hid_gtk2_gdk] - -Fix: negative gc width always means size in pixels - -Fix: don't crash on invalidate request before the GUI is fully initialized, just ignore it - -Fix: gdk render optimization bug on zero-length lines - - [lib_gtk_common] - -Fix: do not query xy on pan stop (middle button release): results in gray GUI lockup - -Fix: inactivate pan mode when opening context popup (works around a gtk misfeature: the popup takes focus and mouse button release is not delivered) - - [menu] - -Fix: menu patch: removing a whole menu tree should first remove submenus, by the actual submenu nodes not by other lihata nodes - - [poly] - -Fix: pline embrace circle: accurate hline-line intersection calculation so the code doesn't get confused on near misses - - [script] - -Workaround: manually register the languages provided by the fawk binding so they are found even if there is no system installed fungw - -Fix: printing uninitialized string in error message when script fails to load - -Fix: guess lang for the builtin case needs .pup ending because the rest of the code will want to remove it - -Fix: remember hidlib context for timers so it is possible to execute actions from timers - -Fix: live script stop should call script preunload() to give the script a chance to clean up - -Fix: when live script dialog is closed, call script's preunload when unloading - -Add: live scripting hotkey: {p s l} (for plugin, scripts, live) - -Add: math helper actions: pcb_rand() and pcb_srand() - - [win32] - -Fix: use rnd_system() instead of system() for the gtk startup hack on windows - - - -pcb-rnd 2.3.1 (r33837/r32524) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -pcb-rnd part: - - [core] - -Fix: CAM API: derive export file name: if option value is available, overwrite that instead of the default value - -Fix: padstack term ID draw: remember whether a padstack shape is drawn in the current rendering effort using stamps and draw the terminal label only if the padstack was visible; this fixes 'label visible on inivisible padstack', i.e. turning off all layers a padstack spans will make the label disappear too - -Fix: stub csect/fontsel error message draw shall not pass info==NULL to the rendering code, that wouldd lead to a crash - -Fix: when manipulating existing objects using DRC show, use the object's clearance, not style clearance - -Fix: enforce clearance on line endpoint move: set up start point for the drc enforcer - -Fix: when enforcing clearance on line endpoint move, use the line object's thickness+clearance value, not the style's (for consistency) - -Fix: textop rotation: normalize the resulting text rot field - -Fix: when subc is copied from buffer to board, layer objects should do (batched) poly clipping (also fixes "ext obj doesn't clip when placed from buffer" bug) - -Cleanup: code formatting (fix up old style comments in undo_old) - -Add: more Undo() action commands, required for the live scripting undo API - -Add: xor draw label event passes on draw info as an event arg so the event handlers know which region is drawn - -Add: screen search list block variant that limits layer type - -Add: brave setting for the upcoming clearance enforce upgrade - -Add: brave-enabled clearance enforce on line/line-point move - -Add: line endpoint move clr enforce: do a 'find' before grabbing the line endpoint, so that the enforcer will ignore the same-net objects - -Add: central config node for controlling alien formats to load polygon-side clearance - -Add: layer group change inhibit call so timed updaters can be blocked - - [data] - -Del: get rid of old geda/pcb icons and old .desktop - -Del: x-*desptkop: mime type registration is done centrally for files that are shared between applications - -Import: Debian's .desktop - -Add: magic(5) for file(1) containing a pattern for common pcb-rnd data files - -Add: comment explaining how to use file(1) patterns - - [diag] - -Change: make the plugin buildin by default because the conf test depends on it - - [dialogs] - -Fix: window geometry save calls: obsolete, non-reentrant API calls to librnd (broke the save 'now' buttons) - -Add: make library dialog refresh rate configurable - - [doc] - -Cleanup: rename per system installation details to have INSTALL prefix and reference them from the central INSTALL file - -Update: revise INSTALL, tune details - -Update: key tree for {s k} - -Del: developer/hid_remote: should be documented in librnd - -Del: the #warning removal script from UNIX installation - we do not use #warnings anymore - -Add: pin svn externs to rev of the release - -Add: document the new Undo() action commands (intended for scripting) - -Add: pcb-rnd runs on AIX, plus provision for systems not older than 25 years; notes on AIX+gtk2 compilation - -Add: mention new config file in packager's changelog - -Add: conf tree: cross_grid setting - -Add: plugin package version match requirement mentioned in packager's changelog - -Add: data model doc: short description on the subcircuit uid - -Add: conf subtree doc for import alien format - - [drc_query] - -Fix: don't mix code with declarations (c89) - -Fix: wrong conf change callback prototype - -Add: conf change infra to update the definitions GUI when a def value changes - - [export_bom] - -Update: use the new export HID API to avoid overwriting option default values - - [export_dsn] - -Update: use the new export HID API to avoid overwriting option default values - - [export_dxf] - -Update: use the new export HID API to avoid overwriting option default values - - [export_excellon] - -Update: use the new export HID API to avoid overwriting option default values - - [export_fidocadj] - -Update: use the new export HID API to avoid overwriting option default values - - [export_gcode] - -Update: use the new export HID API to avoid overwriting option default values - - [export_gerber] - -Update: use the new export HID API to avoid overwriting option default values - - [export_ipcd356] - -Update: use the new export HID API to avoid overwriting option default values - - [export_lpr] - -Fix: set 'lpr' as default print command - -Update: use the new export HID API to avoid overwriting option default values - - [export_openems] - -Update: use the new export HID API to avoid overwriting option default values - - [export_openscad] - -Cleanup: use the central arc approximation instead of the local implementation - -Cleanup: const correcntess (padstack mech cache might get updated, can't be const) - -Update: use the new export HID API to avoid overwriting option default values - -Add: export padstack mech shapes (slots) - - [export_png] - -Update: use the new export HID API to avoid overwriting option default values - - [export_ps] - -Update: use the new export HID API to avoid overwriting option default values - - [export_stat] - -Update: use the new export HID API to avoid overwriting option default values - - [export_stl] - -Update: use the new export HID API to avoid overwriting option default values - - [export_svg] - -Update: use the new export HID API to avoid overwriting option default values - - [export_vfs_mc] - -Update: use the new export HID API to avoid overwriting option default values - - [export_xy] - -Update: use the new export HID API to avoid overwriting option default values - - [footprint] - -Cleanup: remove vtlib, use vtp0 and floating allocations instead so that parents don't need to be updated on array growth - -Cleanup: const correctness in sort comparison - -Fix: properly free footprint lib entry allocations - - [import_gnetlist] - -Fix: assume action script only with gnetlist, use tedax with other backends - -Add: support for lepton-netlist - - [io_autotrax] - -Fix: sort out board and keepout layer groups on load - -Fix: don't exit padstack load leaving broken parse state - -Cleanup: dead code in text import: no need to check for empty strings - -Add: comment about file format limitation on text rotation - - [io_bxl] - -Fix: lex invalid pcb_strdup() references - -Fix: old gcc #include code gets confused by the #line macros - don't rely on ./ include in grammar/lexical code - - [io_eagle] - -Fix: remove hardwired layer ID for subcircuit text placement (fixes: value text ending up on the wrong side) - -Fix: subc non-90-degree rotation on the back side - -Fix: text rotation in subc backside non-90-degree cases - -Fix: tDocu and bDocu layers are really assembly layers, not silks - -Fix: bin: signal flattening postproc should pass through the newly added nodes to make it "recursive" - -Cleanup: bin: split the signal postproc call to make the code more readable - -Add: data based layer creation for non-copper layers - -Add: paste and mask layers in the layer tab - -Add: match layertab entry purpose to existing layer group purpose and create missing groups - -Add: layer tab for all known non-copper eagle layers - -Add: load polygon-side clearance when centrally enabled - -Add: comment on how the poly-side clearance load works - -Add: bin: explain how "recursive" flattening of singals/signal* is achieved without actual recursion - - [io_hyp] - -Fix: old gcc #include code gets confused by the #line macros - don't rely on ./ include in grammar/lexical code - - [io_kicad] - -Fix: don't crash when loading board with too many layers - -Fix: custom shaped pad primitives shall be offset by the "at" subtree of "custom" - -Add: fill in layer group purposes in the layer tab - -Add: kicad5 seems to have gr_poly in global scope - -Add: load polyon side clearance (zone/connect_pads/clearance) when centrally enabled - - [io_pcb] - -Fix: don't crash on missing attribute value - - [io_tedax] - -Add: netlist import: load nettag and comptag lines - - [lib_hid_pcbui] - -Fix: when the status line is a single line, insert a space as separator between the two segments - -Fix: don't try to update the layer menu during layer group update inhibit - - [libcdtr] - -Fix: allow inserting points on constrained edges by splitting them - -Fix: don't use assert on point coord out of range, rather return NULL - -Fix: constrained edge split: save old user poitner after the _pre event callback, which may choose to change this field - -Fix: inserting a point on a boundary edge - -Fix: animator dump shouldn't assume coords are integers - -Add: rewrite the tester to be command line based; remove hardwired C code tests except for the random test which is invoked using the 'auto' command - -Add: regression tests - -Add: animator dump call into a FILE * (instead of stdout) - -Add: event infra, "split constrained edge" event - -Add: example script with 2 out of 3 points out of range - -Add: lib function and tester command for dumping a cdt in cdt_test script format - -Add: an option for compiling the lib and tester with double coords - -Add: minimal stadnard doc: README, AUTHOR, COPYING - - [librnd] (on pcb-rnd side) - -Fix: util should depend on the librnd-local extern instead of the old extern path - -Fix: wrong include path for the new librnd-local extern in bxl2txt - -Fix: scconfig hook: reset pup lists between librnd and pcb-rnd generation to avoid librnd plugins leaking into pcb-rnd - -Fix: genlist and genvector object deps for gsch2pcb-rnd: use librnd-3rd or link them from under librnd-local for now - -Fix: tests build against local librnd - -Fix: central configure should make dummy revtest in librnd executable - -Fix: link order while linking pcb-rnd executable: librnd needs to come before gtk and other dependencies of librnd - -Fix: don't attempt to compile puplug for the host, let librnd do that - -Fix: dynamic link plugin template: path to librnd's local templates changed - -Fix: static link order: librnd-hid needs to come after librnd-poly because poly depends on core - -Fix: no need to manually create librnd .so symlinks on install, librnd's make install takes care of that - -Fix: separate install, linstall and uninstall rules for the local librnd because $(HOW) can not be passed - -Fix: dummy usage of some static linked librnd functions and variables that are then accessed from plugins, to ensure they are linked in from the .a files - -Cleanup: scconfig variable for path to librnd so the local checkout doesn't need to be hardwired in Makefiles - -Cleanup: remove redundant svn externs on 3rd lib, depend more on librnd - -Cleanup: remove local puplug and sphash externs, use the ones offered by librnd - -Cleanup: don't copy files manually, call librnd to install itself - -Cleanup: remove local plugin build hack that used to build hidlib plugins before we switched to call librnd's native build - -Cleanup: remove pcb-rnd-local gen_conf.sh, always use the one in librnd - -Del: stop compiling and installing librnd (static lib, dynamic lib) from pcb-rnd src/ - -Del: lihata externs from src_3rd: these libs are available through librnd - -Del: stage 3 init (plugin dir loading) moved to librnd because all ringdove apps will need the same - -Change: switch over from partial extern of librnd to full extern so that a librnd local build can be done later - -Change: switch over scconfig to use the extern from librnd-local extern for now, so redundant scconfig externs can be avoided during the transition - -Change: instead of locally compiling librnd objects, link against the static libs compiled by librnd - -Change: use librnd's 3rd lib instead of locally compiling those libs from src_3rd - -Update: gsch2pcb-rnd for the new externs - -Update: central make clean and distclean for the src_3rd changes - -Update: map_plugins for the temporary librnd-local build - -Workaround: temporary workaround for getting object files that core doesn't need but plugins need linked from librnd*.a - -Add: temporary scconfig generation extras: generate librnd-local config files and Makefiles so librnd can be compiled stand-alone - -Add: go and compile librnd before anything else when local librnd extern is used - -Add: temporarily load librnd plugins from the local extern source tree as well - -Add: compile sccbox for the local librnd as well for the transition - -Add: static link librnd symbol workaround for the script plugin that got moved to librnd - - [menu] - -Add: menu item for listing locked objects (so that they can be manipulated without the lock tool) - -Add: edit properties for selection in the Select menu - - [mincut] - -Fix: don't compile the code that runs popen() to draw the graph if graph debugging is not enabled - - [propedit] - -Fix: pressing enter on a string value should force an update after setting the value - - [query] - -Fix: context uninit resets inited flags to 0 - -Fix: advanced search dialog: remove non-drawing object from object type list (such as RAT and LAYER) as query() won't search those - - [rubberband_orig] - -Update: Use the line clearance instead of route style clearance when drawing line clearance outline. - -Cleanup: remove useless comment - - [scconfig] - -Fix: make distclean should run recursively on util/, not only on util/gsch2pcb-rnd (to remove leftovers from bxl2txt) - -Fix: make distclean recurses to fungw - -Fix: make distclean should remove src/plugins - -Fix: make clean should remove locally installed pup files - -Change: switch over to ureglex common part linked only once, from librnd - - [script] - -Del: move the plugin to librnd so other ringdove apps have the same scripting - - [show_netnames] - -Add: new plugin for displaying netnames on traces when zoom level is high enough - - [tests] - -Fix: use sccbox mktemp instead of system's mktemp which may not exist - -Fix: pcb-printf test links against the whole librnd instead of cherry picking objects (that'd depend on librnd internals) - -Fix: propedit test links against the whole librnd instead of cherry pickign objects (that'd depend on librnd internals) - -Fix: pcb-printf test doesn't need to register conf items - -Fix: use scconfig detected -I to librnd instead of hardwiring the local extern - -Fix: uniq_name links to librnd static libs instead of cherry picking objs (which won't be available when librnd is installed) - -Fix: uniq_name: don't use invalid pointer and don't print with %p (format not guaranteed); use array offset and #%d instead for maximum portability - -Fix: cam: do not depend on tar -zxf being able to unpack tar.gz, that's a GNU extension on tar - -Fix: cam: do not depend on installed pcb-rnd - -Fix: suppress missing standard lib warning and empty lines in cam test - -Fix: cam: layer group export test: can't export @inivisible any more, it's an on-screen-only virtual layer - -Del: remote/ - this should be tested in librnd - -Del: base64 - it's part of librnd, will be tested there - -Del: orig/ - we have better tests in RTT by now - -Del: pcb-printf: it's really rnd_printf and is tested in librnd, where it is implemented - -Cleanup: use space indentation instead of tab indentation in menu/insert for consistency - -Cleanup: remove any effective dependency on librnd-local from conf test - -Workaround: AIX diff -u is not unified format really: inserts an extra space - use diff -w in the final checking to work around that - -Update: pcb-printf for local librnd (for the transition) - -Update: switch over more tests for the local full librnd extern - -Update: conf test for local librnd (for the transition) - -Add: enable the cam test - -Change: replace grep -v "|" with awk, because old grep implementations don't support the | operator - -librnd part: - - [build] - -Fix: scconfig template include path for compiling dynamic link plugins - -Fix: don't uninstall core/config.h twice - -Fix: make clean should remove locally installed pup files - -Fix: make clean and distclean shall remove generated files - -Fix: make distclean should remove src/plugins/ - -Fix: make clean should recurse to genht because of version.h - -Fix: make -ldl optional, some systems (e.g. windows) don't have it - -Fix: set the default value of disable_so to false so the variable always exists - -Fix: hidlib plugins with internal menu file need a different path reference for building the file - -Fix: gen_conf.sh shouldn't try to keep all html files open for the whole time of generating them - some systems will have a lower limit on open fds - -Fix: wrong order of args in svn:externals - -Fix: wrong include path for the main config.h with installation paths - -Fix: don't install non-existing (pcb-rnd) utils - -Fix: make libporty_net optional as some old systems won't have FIONBIO - -Fix: run ranlib on the static .a files - -Fix: use the same ldflags for all 3 .so files - -Cleanup: remove libuundo from src_3rd: not used directly in librnd - -Cleanup: rename and fix up path of installation prefix and lib/share dirs (decoupling them from pcb-rnd) - -Change: plugin search path should always include librnd install dir - any ringdove app will load HIDs from there - -Change: better handling of missing dynamic linking; explicit disbale also disable puplug -ldl detection - -Change: compile ureglex plugins with shared common exec - -Add: compile and install sphash - the build infra provided by librnd depends on it - -Add: --disable-so ./configure option - especially for windows, where .dll is not comparable to .so, and the cross-compilatio uses static linking with librnd anyway - -Add: hidlib install plugins - -Add: require fungw pup installation path to present (required for proper script plugin loading in case of system installed fungw) - -Add: print TODO messages only in debug compilation - -Tune: skip a level of unnecessary indirection when compiling host puplug - - [core] - -Fix: hid uninit sequence: keep hid structs until after pup unload so plugin uninit cals won't address into already free'd memory - -Fix: do not attempt to load plugins from installation libdir if installation path is not available compile time (e.g. on windows) - -Fix: do not register empty path in puplug plugin search path - -Fix: rnd_printf() on %mw shouldn't read an extra coord before fgw_arg - -Fix: do not include non-standard - -Fix: rnd_setenv() implementation in case of only putenv is available caches all the sets and makes sure each variable is stored in memory only once - -Del: do not auto-load all fungw scripting engine plugins - the script plugin will pick the ones needed - -Cleanup: remove useless comment - -Add: HID API: option to initialize export option values and load those with the command line args, instead of overwriting the default value - -Add: HID API: extended export plugin options registration that remembers the hid so that the command line arg parser uses the right backup memory per HID - -Add: init stage 3: automatically load all plugins from all plugin directories available (optional) - -Add: add fungw pupdir to the pup search path so scripting plugins can be loaded - - [DAD] - -Fix: spinboxes respect min/max values set by the DAD macros - - [doc] - -Cleanup: remove pcb-rnd leftover from doc installation - - [HID] - -Add: editor/cross_grid setting to draw 3x3 pixel crosses instead if single pixels for the grid (accessibility) - -Add: cross_grid option in gl local grid - - [hid_gtk2_gl] - -Fix: skip color setting only if xor mode also matches - fixes subc bbox blinks on editopoint highlight - - [lib_gtk_common] - -Fix: zoom-win call updates gtk scales so the view doesn't jump away e.g. in the first zoom after a zoom extent - - [lib_hid_common] - -Add: action API for toolbar init so lib_hid_common doesn't need to be static linked - -Add: rnd_zoom() action to expose the internal zoom mechanism - so that ringdove apps don't need to link lib_hid_common directly - -Add: publish window placement save utility functions that are used by pcb-rnd preferences window - - [libporty_net] - -Fix: try a differen AIX workaround to avoid warnings on Linux - -Cleanup: comment out #warnings, they are not portable - -Workaround: AIX select problem - - [libuirc] - -Fix: pick up actual nickname from the server from the 001 message (this may be different from the nick we wanted to set, due to nick name length constraints) - - [poly] - -Change: increase rtree stack max size for real complex polygons - - [script] - -Change: move the plugin to librnd so other ringdove apps have the same scripting (moved at pcb-rnd r33401) - -Fix: remove local engine name guessing, search fungw engines to figure - -Fix: language listing: strip whitespace from language name - -Fix: script load logic depends on the ext/lang/eng cache instead of all plugins already loaded - -Fix: load fungw language binding plugin from the dir fungw got installed to - -Fix: live scripting language listing works from only fungw pup install dir - -Fix: live scripting: get language list from the $script-ext field of the pup files, not from the $desc (as the desription is not intended to be parsed) - -Fix: pass proper hidlib context to live_run() so that script reload from the GUI doesn't crash - -Fix: use librnd's globalconst instead of pcb-rnd's so the plugin can be moved to librnd later - -Del: pcb_script_pup_paths - librnd places fungw pup install dir on search path - -Del: remove local pup map/parse function from live_script, use puplug's - -Cleanup: c "scripting" API decoupled from pcb symbolism (while keeping backward compatibility for now) - -Cleanup: namespace: switch from pcb_ to rnd_ where possible, to prepare the transition from pcb-rnd to librnd - -Cleanup: const correctness - -Cleanup: publish guess_lang(), it's used from multiple parts of the code - -Cleanup: use the right vector type for the engine cache - -Cleanup: remove unused var - -Update: fungw API change on pup_list_parse_pups() callbacks - -Split: undo calls (used in live script) to a separate glue .c so it will be easier to replace them with action calls plus it will show what actions the host app needs to deliver - -Change: use pup's readdir calls in the language map code as it would be moved to puplug - -Add: when language is unspecified for a script, use fungw engine based guessing - -Add: determine default script file name extension by calling the fungw engine for the currently selected language - -Add: debug action for printing the language list - -Add: guess_lang: parse pup files for the $script-ext lines and prepare for building hashes of those - -Add: guess_lang uses the extension/language/engine cache built from the pup files - -Add: pass on hidlib to script to more calls, especially script loading calls, in preparation of setting "script user call context" during script initialization - -Add: set up "script user call context" during script load/initialization so the action calls made by the script have the right context - -Add: use the action API for arranging undo with the host app instead of hardwiring pcb-rnd undo calls - -Add: more details on script parse failure (which fungw plugin reported the problem) - -Add: corner case: if a lang name is really a fungw engine name (without the fungw_ prefix), accept that too (for cli) - -Add: live scripting: list language aliases too, so bash is found for cli - - [tests] - -Fix: librnd make clean removes all empty dirs and temp fiels generated - -Cleanup: rename pcb-printf/ to rnd_printf/ because that's the name of the call and the API we are testing - -Update: pcb-printf test should link the whole lib instead of cherry picking objects - - [ureglex] - -Import: exec part of r267 - -Add: README with the original url and mention of public domain - - -pcb-rnd 2.3.0 (r33250/r32452) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -pcb-rnd part: - - [act_draw] - -Cleanup: remove global PCB dependency - - [act_read] - -Cleanup: remove global PCB dependency - -Add: idplist(print) - - [asm] - -Add: menu for the feature plugin - - [ch_editpoint] - -Add: plugin to indicate object editpoints and terminal names on hover - - [ch_onpoint] - -Cleanup: don't calculate arc endpoints locally, call the dedicated function - -Cleanup: move onpoint object lists from core/crosshair to ch_onpoint - -Move: onpoint related code from core to plugin ch_onpoint to make core smaller and cleaner - -Fix: don't crash if there's no tool - -Add: allow indication only for tools that can edit geometry - - [core] - -Cleanup: use vtp0 and pcb_any_obj_t for on-point highlight instead of a locally defined type+obj* struct to reduce code size (pcb_any_obj_t has a type field) - -Cleanup: on-point: DrawLineOrArc(): don't need to pass type+obj, pcb_any_obj_t does include the type - -Cleanup: on-point: DrawLineOrArc(): no need to do trickery with the layer argument, lines and arcs do remember their parent layers in pcb_any_obj_t - -Cleanup: on-point: make DrawLineOrArc() static - needed by onpoint only; rename to remove CamelCase - -Cleanup: decouple pcb_board_set_changed_flag() from PCB, adding a pcb_board_t * context pointer first arg - -Cleanup: remove global PCB dependency from padstack actions - -Cleanup: remove global PCB dependency from conf actions - -Cleanup: remove global PCB dependency from font actions - -Cleanup: remove global PCB dependency from file actions - -Cleanup: pcb_xordraw_movecopy() grew too large, split it up to a per object type function - -Cleanup: onpoint indication should be an obj common bit, not a flag - it's temporary data never to be saved - -Fix: get low level text scale X,Y change undoable - -Fix: make ChangePinName() undoable - -Fix: make ChangeNonetlist() undoable - -Fix: padstack undoable change hole shall call the proto updater to keep caches and hashes in sync - -Fix: arc wireframe draw: never call the hid with negative radius (that resulted in artifacts) - -Fix: RouteStyle() action help text did not reflect how the code worked - -Fix: route style: text scale is really an int, not a coord - -Fix: hole diameter change in padstack op shouldn't use old drc setting to limit minimum size; the padstack editor and the property editor already allows the user to set any size, don't do arbitrary limiting here either - -Fix: pcb_text_draw_string_simple() shall set up xform and info to avoid crash - -Fix: don't crash on pcb==NULL in text mirroring in buffer - -Fix: don't use PCB from some actions, that's not available while new board is created - -Fix: move crosshair out to the limit before removing the old board - this should trigger all ch_ plugins to release their old data, to avoid stale pointers - -Fix: drc print: don't print measured or expected value if it is FGW_INVALID - -Fix: when removing/destroying a polygon, remove it from parent subc term list - -Fix: footprint parameter split: find and remove the trailing ')' even if there are spaces after it - -Fix: set rendering to positive before drawing the fab layer (might be the first thing drawn on an empty board) - -Fix: ChangeFlag doesn't have thermal anymore (thermal is not a flag bit) - -Fix: SetThermal() with value non-zero should also turn on thermal - -Fix: update library entry parent after sort or array relocation so it doesn't point to invalid/free'd memory - -Fix: clear_buffer should reset buffer origin as well so it is not inherited between operations - -Fix: new board creation crosshair state mismatch caused sw render HIDs to lose xor draw after creating a new board - -Fix: low level label draw: separate x and y text mirroring is possible now, use it (fixes ctrl+tab text mirror bug) - -Fix: turn off clearance optimization for line/arc/poly vs. poly intersection check if bloat != 0 (it caused shorts missed) - -Fix: make subc flag change undoable (affects the lock tool) - -Fix: SetThermal(): wrong description on the meaning of the numeric style values - -Fix: SetThermal(): allow value 6 as well - -Fix: pcb_net_find_by_obj() shouldn't crash on a terminal whose subc has no refdes attribute - -Update: default boards are of lihata board v7, so plain save will not downgrade new boards to v6 - -Change: use style clearance for 'show drc clearance' instead of bloat - -Change: conf field descriptions of the old DRC fields, which are now either obsolete or repurposed to limiting sizes - -Add: tool infra: flag to mark tools that can edit object geometry - -Add: generic, undoable attribute set function - -Add: generalized subc layer allocation based on copying an existing subc layer - -Add: respect rnd_render's ->override_render so loghid works - -Add: padstack proto update makes a cache in tr[0] about which shapes are connected to the hole or slot - -Add: padstack proto update calculates a cached prototype bit that indicates if all copper shapes are connected by the hole/slot - -Add: RouteStyle(): undoable on set - -Add: RouteStyle(): undoable route style name change (and query) - -Add: RouteStyle(): commands for setting and querying text scale and text thickness - -Add: RouteStyle(): undoable new and del commands - -Add: extend the footprint API with an option for copying tags - -Add: plug_io for saving and loading padstacks - -Add: crosshair code: build a cache for attached object drawing: publish a clean() function that needs to be called before any crosshair attached object change so a cache can be maintained - -Add: if a polygon has the clearpolypoly flag and showing the clearance is enabled, calculate the clearance offset poly and draw it while the poly is being moved or copied - -Add: polygon helper: calculate the clearance polygon of a text object, without subtracting it - -Add: when a text object is being moved, indicate the true clearance when clearance indication is on - -Add: draw the clearance (union on all copper layers) around the padstack when it's being moved - -Add: throw an error if no drc rule got executed - -Add: crosshair: generate an event for updating screen indications when crosshair changed position - -Add: editpoint indication on line, arc, polygon, padstack objects - -Add: layer pointer to ID conversion (helper function) - -Add: in-place subc replacement: keep thermal flags on terminals (map and apply thermals) - -Add: subc in-place replacement: make a map of floaters, attempt to match them up and move/rotate new floaters accordingly - -Add: find.c: publish low level pcb_isc_pstk_line_shp(), lib_polyhelp needs it for hole-on-contour - -Add: find.c: padstack shape to polyarea converter (helper function) - -Add: SetThermal(): support the 'noshape' style - - [dialogs] - -Del: preferences: half of the old DRC sizes - use the new DRC definitions - -Cleanup: rename DRC sizes to limit sizes in the code to reflect change in the code logic - -Fix: flag changes from the flag edit dialog are undoable - -Fix: when the padstack editor changes the hole or local clearance in a prototype, make sure the prototype is updated (for the hash and caches) - -Fix: padstack proto save file name memory leak - -Fix: library dialog, refresh button: print an error message if parent/root can not be found - -Fix: don't crash when library window preview is called with NULL footprint name (may be a result of a broken parametric footprint), just clean the buffer so that nothing is shown in the preview - -Fix: dlg_confval_edit(): uninitialized default value for optional argument 'modal' (may cause crash on drc definition edit) - -Change: merge limiting sizes and misc sizes, by now they are the same as limiting sizes are no longer DRC-related - -Add: padstack lib dialog: load and save buttons for padstack prototypes - -Add: default file name for padtsack save is padstack.lht - -Add: preferences, sizes&drc: print an error message if there is 0 drc plugins available - -Add: convert the manage plugins dialog into a non-modal dialog box that presents an alphabetically sorted list of plugins in a list - -Add: manage plugins: button for unloading plugins - -Add: plugins dialog: print reference count of each plugin (useful for debugging) - -Add: make layer comb flag change undoable - - [doc] - -Fix: packager's doc: grammar about diagnosing (in package desc); missing punctuation in package desc - -Fix: use both pcb-rnd's own plugins and librnd's svn extern'd plugins when mapping for packager's doc - -Fix: plated slots can be represented already - -Update: renumberblock description for subcircuits - -Update: conf tree for the drc "show/enforce" change - -Add: mention imagemagick as soft dependency for running some tests - -Add: clarify what ChangeSize() does to subcircuits - -Add: action doc for RouteStyle(); document 'del' and 'new' - -Add: document the low level ttf import action - -Add: lihata format doc: document the new file format for padstack protos: pcb-rnd-subcircuit-v* - -Add: developer doc: plugin development howto for local, per plugin menu files - -Add: query: document coord(), netlen(), isvoid(), layer_setup(), int(), double() and .net - -Add: query: document user functions - -Add: refine the nonetlist flag sentence explaining the actual effects - -Add: explain how openscad-transformation attribute is not used for subcircuit rotation - -Add: INSTALL references the packaging doc - maybe this will help new packagers figure where to look - -Add: link regex syntax from the appendix and from the feature doc - - [drc_query] - -Fix: invalid drc value is FGW_INVALID, not FGW_VOID - -Fix: action that sets drc def should create the conf node and set the default value even tho the def is created in multiple steps when done in actions - -Fix: make sure definition default value is set only once, not overwriting exisitng value - -Add: refine stock drc rule violation report with expected/measured values - - [export_openscad] - -Fix: respect options set from the GUI - - [export_stl] - -Fix: do not apply holes/slots that fall on the board contour, that'd result in invalid model - -Fix: use clipped contour poly instead of the as-drawn one, so all sort of tweaks (like half-hole cutouts) appear in the output - - [export_test] - -Del: plugin removed in favor of the more generic loghid plugin (in librnd): the actual sequence of calls HID heavily depends on the do_export() implementation of the GUI/export hid chosen, so even if export_test worked, it would not have shown the same sequence as any actual export/screen-render - - [extobj] - -Cleanup: remove code duplication on subc layer object copy - -Cleanup: use the central subc layer allocation helper function instead of a local implementation - -Fix: handle buffer copy/cut/move corner case: make sure the subcircuit is not added to the rtree twice - -Fix: when (all) floaters are selected, also select the parent subc so it can be copied/moved to the buffer - - [find] - -Cleanup: remove direct fctx->mark mark test and sets where it matters: wrap them in inline functions so they can be extended for the multi-component objects - -Fix: don't assume hole/slot connection within a padstack if the hole/slot is not plated; special case: if term ID is set on a padstack with disjoint copper shapes, it should be taken as connected; rationale: each shape has the same terminal ID and we generally assume same-terminal-IDs are connected within the part soldered on - -Add: make the padstack shape vs. padstack shape intersection (geo code) API public, padstack prototype code caching the shape overlaps with holes will need it - -Add: maintain a multimark hash table in find context and allocate it for padstacks when needed (when not all copper shapes are connected) - - [font] - -Fix: when unlinking a font (e.g. for fontedit()), re-link the parent of all symbol arcs and polys to avoid invalid ref - - [fp_fs] - -Add: configurable prefix based file name ignores on lib mapping - -Add: suffix based file name ignore from config (during lib mapping) - - [gsch2pcb-rnd] - -Fix: wrong program name in help text - - [import_accel_net] - -Add: atomic netlist import: undo undoes all at once - - [import_calay] - -Add: atomic netlist import: undo undoes all at once - - [import_fpcb_nl] - -Add: atomic netlist import: undo undoes all at once - - [import_gnetlist] - -Add: atomic netlist import: undo undoes all at once - - [import_ipcd356] - -Add: atomic netlist import: undo undoes all at once - - [import_ltspice] - -Add: atomic netlist import: undo undoes all at once - - [import_mentor_sch] - -Add: atomic netlist import: undo undoes all at once - - [import_net_action] - -Add: atomic netlist import: undo undoes all at once - - [import_net_cmd] - -Fix: don't crash if there's no board file name available - -Add: atomic netlist import: undo undoes all at once - - [import_netlist] - -Add: atomic netlist import: undo undoes all at once - - [import_orcad_net] - -Add: atomic netlist import: undo undoes all at once - - [import_pads_net] - -Add: atomic netlist import: undo undoes all at once - - [import_protel_net] - -Add: atomic netlist import: undo undoes all at once - - [import_pxm_pnm] - -Add: pick up transparent color from custom "transparent pixel:" comment when present - - [import_sch2] - -Add: atomic netlist import: undo undoes all at once (wrapper around any format/method) - - [import_tinycad] - -Add: atomic netlist import: undo undoes all at once - - [import_ttf] - -Add: Erich's patch on cubic - -Add: action, dialog box and menu item for the dialog for interactive glyph import - -Add: handle self-intersecting poly contours - - [io_kicad] - -Fix: segfault on redundant arc removal vs. term attribute set - -Fix: apply poly clipping inhibit around board parse to speed up - - [io_lihata] - -Cleanup: read: group all global states in a struct (reduce global vars) - -Cleanup: read: do not depend on a global variable for the context, pass the read context struct down in every call that needs it - -Fix: do not accept negative arc radius on load, change it to 0 and throw an error - -Fix: buffer load shall set read version from the header, else padstacks won't work (as they did not exist in v1) - -Update: make v7 the default format to use by extedit - -Add: save padstack file: write a new header and the padstack proto subtree with ID 0 - -Add: parse pcb-rnd-padstack-v* for the padstack proto in it - - [io_pcb] - -Add: long, detailed error message about non-undoable layer swaps - -Add: io incompatibility warning for non-mod-90-degree text rotation - - [io_tedax] - -Fix: clip poly before saving it in a footprint, to avoid a crash - -Fix: error message on loading footprint objects on invalid layer - -Fix: footprint load: throw an error on invalid objects - -Fix: off-by-one bug on footprint polygon minimum number of fields - -Fix: footprint terminal ID doesn't need to be an integer, it can be any string - -Fix: allow trailing \\ when parsing lines - -Fix: when called back from plug_footprint to load a footprint from the lib, use the lib fopen to apply the search path - -Fix: \ parsing corner case on last escaped char in a field - -Add: atomic netlist import: undo undoes all at once - - [lib_compat_help] - -Fix: layer swap, used only by old geda/pcb save on silk not being the last layer, should also update padstack thermals - - [lib_hid_pcbui] - -Fix: route style: text scale is really an int, not a coord - -Fix: don't assume sizeof(int) == sizeof(long) - -Fix: don't use PCB, that's not available while new board is created - -Add: make route style field changes undoable (except for obsolete via fields) - -Add: make style name change timed so it's less frequent - -Add: make route style dialog name changes undoable - -Add: make del and new buttons on the route style docked dialog undoable - -Add: icon buttons for all layer visible/invisible - - [lib_polyhelp] - -Cleanup: use pcb_board_set_changed_flag() instead of directly setting the changed flag - -Fix: contour-to-poly: don't crash if board contour is not found, just return NULL - -Add: contour to poly conversion: find and mark padstacks crossing the poly contour - -Add: subtract intersecting holes and slots from board contour poly - - [libcdtr] - -Fix: make local tester compilable - -Fix: make local Makefile portable - -Fix: make coord type configurable - -Add: license banner: LGPL2 with permission from Wojciech via email - -Add: make clean - -Add: proper object deps in local compilation - -Add: rule to compile a .a - - [librnd] - -Cleanup: remove per plugin svn extern to librnd, use one, central extern - -Del: local copy of map_plugins - use librnd's - -Del: local scconfig templates for the build - use librnd's - -Del: rnd_r_end() - dummy call to empty function, the iterator doesn't allocate anything - -Move: box direction enum and macros to from librnd to local box_dir.h (needed by autoplace and autorouter only) - - [menu] - -Fix: buffer content load, {b f l}, should clear the buffer before the load so only the new content is in the buffer by the end of the operation - -Change: we don't enforce/show DRC clearance but style clearance - -Add: {e g g} for padstack geometry edit - -Add: {l v} and {l h} for all layer visible/inivisible - -Add: convert-to-extobj in context popup for layer objects - - [openscad] - -Move: Alexey's smd diode and tantalum models from work to the standard lib - -Add: pcblib footprints reference their openscad models - - [pcblib] - -Fix: make sure silkmark never writes arc with negative radius (or even close to zero) - - [propedit] - -Fix: make flag changes undoable - -Fix: throw an error for invalid prop path (missing p/ or a/ prefix) so the user has a chance to figure - -Fix: layer comb property didn't get set - -Fix: layer comb bits are not integers but booleans - - [puller] - -Fix: don't use the bbox but corners of poly shaped padstacks for tighter pulling - -Fix: use the true shape for line padstacks (both square and round cap) for tight pulling - - [qparse] - -Fix: wrong fsf address in license banner - - [query] - -Fix: type promotion bug between long and double - -Fix: violation() returns numeric values properly - -Fix: advanced search dialog missing object types: padstack, subc, gfx - -Fix: advanced search dialog: gui->text string creation: use quotes - -Add: coord() function that attempts to convert a string to coordinates (useful for reading coords from attributes) - -Add: (cached) netlen() function that works by netname or by net object (requires simple, 2-terminal networks) - -Add: isvoid() function for safe check if a value (e.g. function return value) is invalid/void - -Add: user functions - -Add: qry_run_() passes back last evaluation result as the final result if the caller needs it - -Add: list() works on any variable, not only on @ - -Add: .net evaluates to the net parent of an object - -Add: layer_setup() for checking the layer stack around an object - -Add: allow any expression to be suffixed with fields/attributes - relevant for user function returns - -Add: .layergroup for layer objects - -Add: int() - -Add: double() - - [renumber] - -Fix: missing action descriptions - - [rubberband_orig] - -Change: use style clearance for 'show drc clearance' instead of bloat - - [scconfig] - -Change: move librnd extern from src/ and scconfig/ in a common single extern in src_3rd/ - -Fix: don't assume libs/ldl exists (it doesn't, on windows) - - [script] - -Fix: delay permascript loading until the main loop has started - premature loading of scripts will lead to script compilation error since not all actions are registered - - [shape] - -Add: menu for the feature plugin - - [tests] - -Fix: RTT: handle missing convert(1) or compare(1) by really skipping the corresponding tests - -Del: librnd test - it's in the now separate librnd project - -Add: menu patch automated testing: typical plugin insertion in sumbenu and at anchor, overwrites - - [tool_std] - -Fix: rat lines can be drawn from/to heavy terminal too, not only padstacks - -Fix: shift-click in-place footprint replacement from buffer shall keep rotation and side of the original footprint - -Fix: thermal tool should work when clicking on subc padstack - -Fix: changing the lock state of an object shall mark the board changed - -Fix: tool_move calls extobj float_pre and float_geo in pair so the extended object is not messed up - -Fix: escape in arc and rectangle tools shouldn't immediately switch to the arrow tool but first fall back to the arc or rectangle initial state - -Fix: lock: increase undo serial after locking/unlocking so they don't batch with random other operations - -Change: use style clearance for 'show drc clearance' instead of bloat - -Add: thermal tool: better fallback mechanism on multiple objects found and indicate if didn't do anything because all candidates were locked - - - -librnd part: - - [librnd/build] - -Del: tests left over from pcb-rnd - -Del: remove pcb-rnd leftovers from Makefiles - -Move: scconfig lib from scconfig/ to src/ so it is part of the single install subtree for reuse by apps - -Move: gen_conf.sh to librnd/scconfig (with installation) so apps can reuse it - -Move: scconfig templates from scconfig to src/librnd/scconfig as it's becoming installable for apps to reuse - -Cleanup: detach building the plugins from $(PLUDGID) so the temporary in-pcb-rnd build still works - -Cleanup: move src_plugins to src/librnd/plugins for easier svn externs and consistency with the installation later - -Cleanup: plugin headers should be #included as for portabilirty - -Fix: make sure make dep generates the dependencies with full relative path (requires an extra step of 'sed' to work around gcc's shortcomings) - -Fix: broken installation of buildin.hidlib.h - -Fix: missing dependency on test-rnd executable to buildin.hidlib.h - -Fix: use the same path notation for buildin.hidlib.h dep as for the build rule - -Fix: mark all plugins part of $hidlib - -Change: install doc and data in /librnd, not in /pcb-rnd - -Add: #define LIBRND_ROOT so configure compiles - -Add: install minimal libfungw headers and genht headers (apps will need these) - -Add: make map_plugins.sh more generic so ringdove apps can reuse it without having to copy it - -Add: install map_plugins.sh so apps don't need to copy it - -Add: temporary branch in the internal conf generator template for pcb-rnd, as long as it needs to compile librnd locally - -Add: set librnd plugin root from the Makefile so plugins are found - - [librnd/core] - -Cleanup: dedoxygen comments - -Cleanup: code formatting - -Del: RND_BOX_ROTATE_CW() - no user - -Del: box direction flags and macros - required by pcb-rnd autorouter only - -Del: pcb-rnd related docs - -Del: rnd_r_end() - useless dummy - -Del: remove vcs comment mentioning multiple crosshair shapes from the copyright banner - that piece of code got removed - -Fix: RND_ACT_CALL_C() needs to get hidlib as first argument and set up the call properly because action code depend on the hidlib context pointer - -Fix: can't pass function pointer in low level C action call because there's no place the temporary func wrapper could be allocated - -Fix: indicate error on action not found in parse action also in the case of action with arguments - -Fix: str2coord for action arg conversion: do not crash on empty coord - -Fix: don't crash if menu file did not parse - -Fix: hid uninit sequence: keep hid structs until after pup unload so plugin uninit cals won't address into already free'd memory - -Fix: don't crash if rnd_tool_get() is called before tool init - -Fix: DAD: coord spin: accept 0.00 as legal value even without unit (special case) - -Add: global var indicating if librnd is running the main loop - -Add: generate an event when main loop state changes - -Add: rnd_printf %mw prints an fgw_arg_t; prints coord with units - -Add: MenuDebug() action with a command to save the menu - -Add: MenuDebug(force-enable) for menu debugging with the batch HID - - [librnd/hid_gtk2_gdk] - -Fix: limit poly draw coords to 32767, gdk seems to misbehave with larger coordinates - - [librnd/loghid] - -Fix: mark plugin a hidlib plugin - -Fix: preserve override_render bit after setting up the delegation - -Add: set HID bit 'override render' to capture rendering calls