pcb-rnd 1.2.0 (r5967) ~~~~~~~~~~~~~~~~~~~~~ [unravel] - Cleanup: reorganize the code around object types instead of the old, action-oriented approach - Cleanup: prefix almost all core symbols with pcb_ or PCB_ so the code can be reused as a lib later [doc] -Add: start writing a new user doc [arc] -Fix: broken is-point-on-arc check for large angles (thanks Evan for the bugreport) -Add: angle/radius edit UI [conf] -Fix: don't crash on empty project file -Fix: when creating a new project file root, use the geda project file hash, not the pcb-rnd-config node - the project file is shared among programs [gerber] -Fix: emulate 0 long arc with a 0 long line to work around a gerbv bug -Fix: simpler "do we print this layer?" logics, without caching -Workaround: split >180 deg arcs because some viewers (e.g. gerbv) have hard time interpreting them [gtk] -Fix: route style logics: start out with the copy of style 0; after a deletion inherit the sizes from the deleted style -Fix: don't reuse the static conf chg binding struct of fullscreen with solder side swap - it'll probably ruin both -Fix: update bottom status line after flipping the board [mods] -Move: drill.[ch] to the report plugin -Move: original rubberband code into a feature plugin -Cleanup: convert some GUI HID actions to events so that multiple GUIs can bind to them -Add: plugin frame for import_hyp -Add: remote plugin (HID-level remote control over sockets) -Add: draw_fab plugin behind a stub, move draw fab code from core to the new plugin -Add: new export plugin: export_stat (board statistics) [io] -Add: an extra flag bit to allow non-fatal loads; make sure missing default.pcb doesn't generate an error message -Add: proper handling of multiple file formats and file name extensions -Fix: add new test parse call - fixes false alarm parser error messages -Fix: don't change format on backup and tmp saves -Fix: don't throw the "no font" warnign after loading a footprint because footprints are expected not to have font embedded [io_kicad] - Save and load in the kicad s-expression format [io_lihata] -Fix: don't save invalid nodes in the canonical format (backup saves) -Add: (somewhat selectively) save and load the config subtree -Add: one more emergency save on lihata merge failure and verbose error message with instructions [layer] -Cleanup: convert magic number macros to enum -Cleanup: introduce layer id and layer group id types -Cleanup: more explicit virtual layers -Cleanup: remove the old layer API, including all the SL_ macros -Cleanup: renames and refactoring to make the logical layer vs. physical layer concept more clear -Split: move layer visibility (stack) functions out of layer.c -Rename: mask layer names: use top/bottom instead of component/solder for consistency -Add: UI layers (dynamic allocated debug layers with permanent objects) -Add: new layer name generator, based on flags and virtual layer names [pcblib-param] -Fix: don't lose pad thickness unit when calculating new defaults for qf() -Change: center pad of qf() is generated with no-paste (requested by John G) -Add: qf() center pad paste matrix option (requested by John G) -Add: qf() central pad mask option with cpad_mask; when not set, calculate it from pad geometry -Add: qf() got a new rpad_round boolean; when manually set to true, generates round pads [svg] -Fix: arc support: use the large and sweep flags of svg path arc to get true PCB arcs -Workaround: full circle arcs - the two endpoints should differ -Workaround: make endpoints differ in a 0 deg long arc [tests] -Cleanup: update and enable most of the tests, unified output, central make test [util] -Add: prj2lht: script to convert old projects to new -Fix: install the import schematics scm script in our own LIBDIR, because it's not reliable to find the gschem installation, rather use -L for gnetlist [scconfig] -Change: use $(MAKE) instead of make - this allows GNU make to run recursive parallel compilations (reported by Dima) -Change: disable bison by default; use --enable-bison for developing the grammar -Change: do not use gts for anything if toporouter is not configured -Add: extra error if explicitly requested things differ from the results we got -Add: make clean/distclean removes more scconfig related leftovers -Add: optional support for DESTDIR for Debian [core] -Fix: C89: do not depend on or strcasecmp, implement our own -Fix: HID API bug: invalidate_lr needs pcb_coord_t instead of int -Fix: action Netlist() subcommand add modifies the INPUT netlist, not the EDITED because this is used bu import_sch -Fix: attribute deletion by index didn't move all items properly (affects mainline as well) -Fix: disable cycledrag when rubberband is enabled (they are incompatible) -Fix: don't close a polygon twice on normal finish (fixes the excess need 3-point error message) -Fix: don't crash when a pin/pad number is NULL -Fix: don't warn for second hit on a plugin already loaded as long as the hash is the same -Fix: get rid of pointerlist in favor of vtptr -Fix: incorrect flag struct comparison; may have caused unpredictable undo bugs -Fix: line-line intersect code detects and handles the corner case of parallel lines properly (checking wheter endpoints of lines are on the other line) -Fix: make data bounding box function reentrant -Fix: make move macros safer with the standard do { } while(0) wrapping -Fix: make text, arc, line, pad, pin/via move macro safe: don't evaluate arguments twice, wrap in do {} while -Fix: move an object by 0 pixels shouldn't inhibit all subsequent redraw -Fix: negative selection box: limit box coord orders to two canonical forms, one positive, and one negative (fixes north-east to south-west selection on component-side view) -Fix: pin move is really the same thing as via move, use the same macro -Fix: polygon mirror should update the rtree (reported by Chad) -Fix: rename old, gui-hid-defined Export() actions to ExportGUI (matching the ImportGUI()) - Export() is the name of the builtin, core action -Fix: text rtree handling bug: EraseText should NOT have the side effect of removing the text from the rtree but the callers should do all rtree manipulation as needed -Fix: undo text flag bug: add text join undo as text flag change, not as line flag change -Fix: update rtree when mirroring arc in buffer -Fix: use COORD_MAX for large coord values, don't assume coords will be 32 bits -Fix: use the hid name passed with --gui, even if --gui is not the first argument; also allow using --hid instead of --gui (less confusing) -Fix: when snap off, don't crash when action helper is trying to figure the endpoint of an arc -Cleanup: classify all messages to be warnings, errors or info - no more PCB_MSG_DEFAULT -Cleanup: remove unsafe (non-reentrant) arc ends query -Add: --dump-plugins --dump-plugindirs CLI commands and DumpPlugins() and DumpPluginDirs() actions -Add: central Export() action instead of gui-specific ones - this works without a GUI HID -Add: conf setting to disable negative-box selection -Add: conf setting to make negative-box selection symmetric (ignore Y coord sign) -Add: support route style attributes pcb-rnd 1.1.4 ~~~~~~~~~~~~~ (1.1.4 is really an 1.1.3 with some bugfixes backported from 1.2.0) [gsch2pcb-rnd] -Add: method infrastructure -Add: a method that uses the same mechanism as import_sch -Add: a method that uses import_sch's gnetlist backend for elements but a the usual PCB backend for the netlist [import_sch] -Fix: install and use the .scm script from our own directory instead of guessing gnetlist's installation [debian] -Del: remove debian/ to ease official packaging pcb-rnd 1.1.3 (r4479) ~~~~~~~~~~~~~~~~~~~~~ [mods] -Fix: the IO system remembers which format (plugin) a file is loaded or last saved with and uses that on a 'save' instead of the default one, unless a different format is explicitly requested ('save as') -Fix: load plugins from /usr/lib/pcb-rnd/plugins instead of /usr/lib/pcb/plugins -Fix: macro argument bug in fontmode (thanks Chad!) -Fix: import_sch: rename the gschem forward-annotation script so that it doesn't collide with mainline's -Cleanup: rename legacy_func to lib_legacy_func as part of the plugin lib cleanup -Add: io_kicad: load and save kicad s-expression board layout files -Add: io_kicad_legacy: save boards and/or modules in the old kicad format -Add: io_lihata: preserve formatting and numeric format on load/save -Add: io_lihata: custom indentation rules for boards (more compact, easier to read) -Add: in export_xy: code from mainline to support IPC-7351 on element rotation guesses -Import: autocrop original code -Import: boardflip -Import: distalign -Import: distaligntext -Import: jostle -Import: polycombine -Import: polystich -Import: renumberblock (as part of the renumber plugin) -Import: smartdisperse -Import: teardrops -Import: bboard exporter from git -Import: dsn exporter from git -Import: dxf exporter -Import: ipcd356 exporter from git -Import: openscad exporter from git [query] -Add: query language - select/unselect objects using expressions -Add: advanced search dialog box frontend for the query language in the GTK HID [core] -Cleanup: const correctness on net creation: style is read-only -Cleanup: move generic find-net-for-pin function from rats_patch to netlist -Fix: changing grid should not only change it in PCB but also in the conf tree - this will deliver the conf change event that will trigger the update in gtk -Fix: const correctness in hid_flags, pin-to-net lookups -Fix: coord conversion rounding errors -Fix: deselect not incrementing undo serial number (from Charles Parker); caused undo panic upon undoing a deselection -Fix: invalid function ptr to data ptr casts -Fix: move global netlist states from global variables to PCB struct fields (on the way to a proper lib...) -Fix: rubber band: when move didn't happen, flags were left behind -Fix: undo element text size bug -Fix: plug_io file load: when multiple formats matched an explicit load format description, try them all, until one worked -Split: generalize format-string-like variable substitution so it's easier to build custom file names (and other strings) from config templates; supports %F (file name), %N (board name), %T (UNIX time), %B (basename) and %D (dirname) -Add: remove_menu concept in HID API -Add: generic flag change macro that can set, clear or toggle the flag depending on an argument -Add: hid export option to draw holes after all copper, silk and mask layers has been drawn so that holes punch through everything -Add: layer creation and rename helper functions -Add: obj_any - a generic type+union struct (and a list of that) for holding pcb objects of any kind -Import: LookupConnectionByPin from mainline -Import: clear flags by object type from mainline (import and port) [debian] -Change: redo the whole script for a modular packaging of plugins [util] -Add: devhelper script for testing round trips -Add: pcb-strip (remove attributes and/or symbols from a .pcb) [gtk] -Add: full screen button in the scroll-bar corner -Fix: call the checkbox menu update function from conf change callback installed at menus, instead of assuming checkbox states are changed only from within the GUI and calling the updater directly [propedit] -Add: text set applies on element texts too [res] -Add: RemoveMenu() action -Add: gtk can remove menus -Add: update_on field - bind checkbox updating to a config var [scconfig] -Fix: when generating dependency generator rules, use -MT for src_3rd targets or else gcc will ruin the target object names; this means proper dependencies in src_3rd -Cleanup: use bison/flex output file name CLI arguments instead of the tmp/mv hacks - the code depended on bison anyway -Add: --symbols to enable debug symbols without the extra asserts and -O0 pcb-rnd 1.1.2 (r3773) ~~~~~~~~~~~~~~~~~~~~~ [cleanup] - ANSI/C89 compliance - char * const correctness [mods] -Fix: io_pcb: do not convert measure through int (Chris' mm grid bug) -Fix: import_sch: generate proper error messages if there's no make or gnetlist program configured -Fix: io: qsort cmp function API bug - wrong format preference -Fix: io: make sure the PCBChanged action is ran on revert so that route styles and other properties are updated -Fix: fontmode broken coord-to-cell conversion rendered the font editor useless -Cleanup: export_bom and export_xy are separate plugins; export_xy depends on export_bom because of the name escaping function -Rename: debug plugin to diag plugin to avoid confision with --debug in ./configure command line -Add: diag: layer dump action -Add: diag: evalconf() action to evaluate the configuration situation of a path -Add: io_kicad_legacy: first steps for PCB layout implemented. Mildly broken module exported. -Add: propedit: object property editor (with gtk support) -Add: io_lihata: initial implementation without object ordering -Add: io_pcb: 3 different flavors of the original format (using different numeric formats) -Add: import_sch: make and gnetlist programs configured in the default config [lesstif] -Fix: compile and link even if xrender is not found -Fix: print angle as %f in the status line as it's a floating point value [gtk] -Fix: library selection window switches to arrow mode before replacing the buffer, so that the outline drawing code doesn't get confused -Fix: library path file chooser should be a "folder chooser" not a "file chooser" -Fix: display the correct $(path) syntax in the library window help -Fix: when file name changes, update window title -Fix: do not allow to zoom out so much that Coord can't handle it anymore and overflows -Fix: work around the control bug on some mac systems -Fix: do not draw global grid beyond board edges -Fix: shift+tab: translate left-tab back to tab, shift is handled by the core -Fix: when popping up the log window for a Message(), don't raise it so focus is not stolen (especially if it's already up) -Fix: when the main window is closed while the command entry main loop is running, quit the CLI main loop first, so the Quit action can execute and break the outer main loop of the GUI -Fix: mark the PCB changed when the route style changes so it's saved -Add: a delete option to the route style selector -Add: explicit route style (pen style) for sizes diverged from any known style -Add: finish gtk preferences dialog's "Config PoV" subtree -Add: "save as" dialog with file format widget -Add: remember preferences tree expansion and other states when the dialog box needs to be rebooted -Add: implement fullscreen mode -Add: local grid implementation: optionally draw grid only in a small radius around the crosshair instead of on the whole screen (speeds up sw rendering on large screen) -Add: global grid can be sparse (drawing every Nth grid point only); min distance is a configuration item -Change: match gtk status line style with elegant lesstif status line [scconfig] -Fix: use generic code for plugin vs. plugin dependencies, deps are coded as data -Fix: various portability fixes for a working IRIX port -Add: revtest and revision stamps - this tool will let Makefile automatically request the user to reconfigure -Add: central distclean cleans src_3rd/ -Add: --workaround-* system, with a gtk-ctrl workaround -Add: new cli arg for mass-enabling/disabling all plugins: --all=* [core] -Fix: hid input mouse scroll mixup: up and down were for scroll but left and right were for buttons. Prefix all scroll names with "scroll" (fixes macos pan-zoom-select bug) -Fix: cancel on "new pcb" makes sure PCB never ends up NULL; worst case it tries to create an empty PCB to fall back on or exits with a fatal error if even that fails -Fix: funchash should be case-insensitive (case insensitive actions and params) -Fix: introduce pcb_cardinal_t instead of redeclaring X's Cardinal -Fix: cursor position is Coord, not long - long won't work on 64 bit coords -Fix: initialize builtins before loading plugins so later buildin <-> plugin collision can be resolved by not loading the plugin -Fix: full-polygons are sensitive when clicked on the "clipped away" part -Fix: non-refactored line drc enforcement -Fix: qsort cmp function return value bug - wrong ordering of sources for the merge -Add: RouteStyle() action accepts style name, not only index -Add: action, change and undo code for chaning arc radii (width and height really) and start/delta angles -Add: new, future-proof layer API, phasing out the old API -Add: close polygon if the user clicks twice on the same point ('doubleclick'; like with the line tool; thanks to hzeller) -Add: message log entries have severity levels; user can configure color and whether the message log should pop up for each severity -Add: pcb-printf %mH prints human readable metric or imperial coords -Add: inhibit draw counter: when moving an element with all rubber bands (e.g. netlists) attached, inhibit redraw them individually, redraw only once, at the end -Add: reenable signals as detected by scconfig so that emergency save can run on crash -Change: attribute list in all object types -Split: layer.[ch] from misc.[ch]; the layer code is large and complex enough to get an own module; it's also in-line with the module-per-object-type idea [util] -Add: workaround script to comment out #warnings in a source file (for real C89 targets) -Add: gsch2pcb-rnd: warn for old config overriding pcb-rnd search paths -Add: install gnet pcb forward backend so that import_sch works out of the box pcb-rnd 1.1.1 (r2683) ~~~~~~~~~~~~~ [io_kicad_legacy] - Add: save paste buffer elements to kicad (legacy) .mod as native format [scconfig] -Change: remove config.manul.h (use scconfig CLI args instead), rename config.auto.h to config.h -Change: coord type, the corresponding MAX value and abs() function should not be set manually in config.manual.h; ./configure --coord=32 or --coord=64 sets these all, 32 being the default value for now -Change: move the dot_pcb_rnd setting from manual config header to scconfig (CLI arg) -Fix: don't attempt to use -rdynamic for compilation, only for linking -Fix: accept that IS_LNK may not be set (using conditional variable reference) -Fix: working cross-compilation: proper separation of host and target tools (cp, ln, ar and friends are part of the build system, use the host version) -Add: ./configure --enable-dmalloc detects dmalloc -Add: detect dbus and compile the plugin if enabled -Add: windows port: detect LoadLibrary(), _getcwd()/getwd(), _spawnvp, getpwuid, realpath, rint(), mkdtemp and mkdir/_mkdir -Cleanup: split up config.auto.h.in: move dbus related item to dbus and gl related items to gtkhid-gl to keep central part plugin-neutral -Cleanup: stop using HAVE_WHATEVER_H, rahter generate the #includes per function [core] -API change: rtree returns success and optionally sets the number of objects found - this allows the caller to avoid long jumps to stop the search at the first hit -Fix: action names are case-insensitive again -Fix: don't crash if select-by-text gets empty name or cancel -Fix: undo crashes/asserts for updating NULL rtree with selected element text -Split: huge find.c in smaller files, per topic -Change: use genregex minilib instead of POSIX regex, for better portability -Cleanup: remove find.c dead code -Cleanup: rtree API names return values instead of using 0..1 -Cleanup: const correctness in EvaluateFileName -Cleanup: introduce pcb_rnd(), which is a wrapper around rand() (or optionally, random()). rand() is portable, but on some very old system may be weak. -Cleanup: introduce pcb_strdup() and pcb_strndup() and avoid using non-C89 libc calls -Cleanup: always provide pcb_mkdir() as a portability wrapper around mkdir; all code should use this instead of mkdir() -Cleanup: remove #ifdef wrapping of standard C89 header #includes - it's reasonable to assume/require proper C89 support more than 25 years after the standard came out -Cleanup: a set of unused/obsolete #includes -Cleanup: convert const.h #defines into enums (for the type, namespace and debugging); also proper name prefixing -Cleanup: move route-style specific function from action-oriented set.c to object-oriented route-style.c -Cleanup: rename SwapBuffers to pcb_swap_buffers for proper prefixing (win32 API name collision) -Add: central function for looking up a routing style using a sparse list of properties [gtk] -Fix: gtk gdk background image drawing: clip for negative pan to avoid artifacts and segfault -Fix: remember Messages() that are written before the message window is set up and append them in the window when it is already constructed -Fix: do not crash if there is no route style defined, just go with an empty style section and let the user create new styles -Fix: rework the win32-workarounds for corss-compiling -Fix: always update bottom style printout when the style changes, even if there's no matching stock style (thanks to miloh for reporting this) -Add: a mandatory route style to indicate non-matching types (hidden in the menu) -Add: optional file format combo box on the save as dialog -Change: use round radio buttons instead of rectangular toggle buttons for the layer preferences table - on some setups gtk theme made the buttons unreadable [mods] -Add: import plugin API -Add: new features in the I/O API to support user-selected output format and listing available formats -Split: move out netlist read from the io plug code to a separate import plugin -Cleanup: remove edif stub, convert edif to an import plugin -Cleanup: do not attempt to extract password entries manually in random plugins, use the central user name retrival function - easier to port, heuristics not duplicated -Cleanup: ps export: get rid of non-portable alloca() - polygrid is used rarely, performance penalty of malloc() should not be a problem -Cleanup: pcb I/O: do not use non-portable bzero, prefer memset() -Fix: dbus: if there's no GUI by the time dbus is uninitialized, don't call it [doc-rnd] -Split: move out developer docs from doc-rnd/ to doc-rnd/hacking -Add: windows cross-compilation notes -Add: hacking doc for writing importers (incldues a description of the main pcb data structures) [conf] -Fix: gtk gui preferences saves editor/auto_place in the config file -Fix: gtk preferences' general tab should also save editor/save_in_tmp [w32] -Add: minipack: recipe for pkg-config -Fix: minipack: calculate output filename for wget so that ?download suffix can be truncated -Fix: minipack: don't attempt to build pcb-rnd from minipack (policy: minipack builds all deps then we crosscompile pcb-rnd) -Update: minipack: gd and tiff recipes for newer versions pcb-rnd 1.1.0 ~~~~~~~~~~~~~ [conf] - full rewrite of the config settings subsystem - Del: settings, color files, preferences - everything is in the conf system from now - Add: config settings are stored in structured lihata files on different levels - Add: all config setting are equal - they can be stored in system, user, project or design file [core] - cleanup -Fix: editing text should properly update the rtree -Fix: Display(PinOrPadName) doesn't use crosshair directly, without checking validity, but uses getxy which asks the user in turn, if the crosshair is invalid -Fix: ortho draw lines, polys and poly holes did not update last drawn point and generally did not work -Cleanup: remove a bunch of excess #includes to reduce the amount of deps -Cleanup: rename keepaway to clearance; terminology: clearance is copper vs. copper spacing; keepaway is any other spacing -Cleanup: generic dead-code and compiler warning removal -Change: menus: make a new Maintenance submenu in the File menu, move printer calibration and library rescan there [poly] - bugfix -Fix: don't xor-overdraw the first line of a poly rubber band while drawing the second line so it doesn't cancel itself out -Fix: first click of the poly hole is also the first point of the hole -Fix: reset attached object state after finishing a poly hole so that the second hole doesn't start in invalid state (caused poly duplication) -Fix: don't let the user start drawing a poly hole if first click is not a poly -Add: draw assumed closing rubber band line dashed [dynstyle] -Fix: number of styles is not limited anymore (styles is a dynamic vector) [res] -Fix: dynamic menu insertion bug: don't add new level if it is already added [mods] -Fix: report doesn't crash if there's nothing to report -Add: debug plugin to host core debugging actions so that they can be removed from core -Add: debug plugin to tmpasm lists -Add: io_* hooks - native file formats are plugins now -Change: turn .pcb (.fp) file IO code into plugin io_pcb -Add: io_pcb can save (CFR_DESIGN) config in the design as attributes -Add: central infrastructure for per plugin help (usage), plus the help text in each plugin -Add: fp_rehash() action to trigger a rehash [gtk] -Fix: double-zoom GUI lockup, pan+scroll wheel lockup -Fix: shift+mouse click should work -Fix: preferences window now easily fit in 800x600 -Fix: don't destroy the tooptip timer when it destroys itself - fixes the famous tooltip glib warning -Fix: gtk warning/assert introduced by r1439: toolbar can not be a vbox, the parent vbox needs to be tracket separately -Fix: abs() handling with non-int types - more proper handling of coords on corner cases like tiny objects (contributed by Chris Smith) -Cleanup: dialog titles should be pcb-rnd, not PCB -Add: properly remember window positions and sizes, save and reload them if the user enabled the feature [scconfig] -Fix: really compile if there's no glib installed and no glib-dependent plugin selected -Fix: remove m4 bin from config.h template - no code uses this anymore; do not even detect m4, it's not needed anywhere -Fix: reorder link command for the main executable so that libs end up at the end of the link list (some linkers are sensitive to this) -Fix: various random fixes for a mac port -Del: hid.conf: not needed anymore, hid types are managed differently -Cleanup: C89 always has atexit() and there's no on_exit -Add: --debug (that shoudl enable asserts and -g) and a tmpasm script to set cflags accordingly -Add: detect gettext if intl is requested -Add: detect bison/flex (with an option to disable it) pcb-rnd 1.0.10 ~~~~~~~~~~~~~~ [res] - resource->lihata conversion -Add: new action: CreateMenu() -Add: centralized hid keyboard handling API -Add: optional: a gtk-clone multi-key capable menu file that copies gschem's hotkeys mostly -Change: remove res parser, use lihata instead; affected plugins: hid_gtk, hid_lesstif, vendordrill -API CHANGE: dynamic create menu call API takes a string path, not an already splitted array -Update: keylist html generator util works from lihata and handles multikey -Fix: remove hardwired layer selection key bindings, use configured hotkeys (alternative menu files may want to use the same keys differently, hardwired keys are bad) [library_t] - library data structure cleanup/rewrite - Change: replace MenuEntry and related code to a library_t - Add: allow a generic tree representation in footprint library [reduce] - reduce code size without losing actual functionality -Del: extern "C": pcb is a pure C project, if someone wants to include headers from whatever other language, he should take care of it on that side -API CHANGE: rewrite action_funchash to not use custom local hash but genht and to offer cookie based namespaces for modules -Cleanup: rename action_funclist to funchash_core_list to decouple functions from actions [scconfig] -Fix: scconfig/build doesnt' fail even if lesstif is not installed -Fix: do not attempt to detect libgtk is the gtk hid is disabled -Fix: don't detect gd if it's not needed; disable exporters that depend on GD if required parts are not available -Fix: relax gcode/nelma png requirements: print a warning about reduced functionality but let them compile if there's no png but gd is present -Fix: get the dep file sorted by target; this should avoid unintended changes introduced by unordered lists -Change: split up the tmpasm list of modules so that it's easier to get gsch2pcb link again using whatever backend plugins -Cleanup: move strflags test code to regression/ -Change: portability, realpath are compat_*; compat.[ch] split to _dl and _misc -Move: remove Makefile.in.mod, move module tmpasm files to src_plugins/ -Add: detect libstroke and compile with the right cflags and ldflags -Add: tool to quote files into C strings; generate compiled-in, C versions of the new lht menu files, per hid [mods] -Add: API to remove functions by cookie -Add: print warning if a module leaves anything in the func hash at exit -Add: infrastructure for switching from one gui to another -Add: fp_wget: web based footprint implementation, gedasymbols.org integration -Move: command.[ch] to a shorthand command plugin (shand_cmd) -Move: report to a feature plugin -Move: fp_fs plugin: separate footprint code from file.[ch] -Move: move debug actions from lesstif to comomn "oldactions" as they are not GUI-dependant and might be generally useful -Move: hid/common/ to core hid_*, split up large, random collections of functions by purpose -Move: split and rename action.[ch] to make room for hid-common actions.[ch] in core and avoid confusion in names; rename actions.h to hid_actions.h for naming consistency -Move: HIDs to plugins, removing the hid/ directory -Move: hidgl to a separate plugin (to be compiled later) -Fix: event unbind shouldn't segfault if multiple adjacent events are free'd -Fix: event_bind() takes cookie as const char *, not as void * to comform the convention -Fix: hids install and uninstall actions, flags and attributes only around their do_export main loop so they don't conflict [leak] - cleaning up memory leaks -Add: hid attribute remove by cookie -Fix: lesstif and gtk hids remove their attributes -Fix: vendordrill free()s all cache memory used when the cache is discarded [gtk] -Fix: make sure menubar is always wide enough to expose all buttons (using a hidden invisible hbox of calculated size) -Add: copy accel key menuitems from gschem and take over keyboard handling; hid_gtk now supports multi-key hotkeys -Add: set tooltip on menu items -Add: include all hotkeys in the tooltip for submenus [lesstif] -Del: remove dumpkeys action/code: this info should be extracted from the lihata file -Fix: there should be no global variable named 'n' in lesstif; make the stdarg thing a bit more robust and reusable -Add: reenable code to set set menu font and color [core] -Fix: draw_pad() used uninitialized pad color -Add: SwitchHID action to change the HID module on the fly (works partially) [png] -Fix: png max dpi should be 10k - modern printers easily do 2400 but some models are said to do 9600 DPI in one direction [gpmi] -Fix: auto-copy .so files to src's plugin dir on compile so that running from source always has the latest .so files pcb-rnd 1.0.9 ~~~~~~~~~~~~~ [unglib] -Fix: replace glib with minilibs in core and util/ -Del: remove local dynamic string implementation in favor of genvector -Move: vector.[ch] is used only by the autorouter, move it there [scconfig] -Add: print warnings if glib is not found and selected components need to be left out -Add: repeate some of the critical messages below the summary -Fix: compiler warnings -Fix: instead of two booleans, implement a 3-state "/controls" node with values disable, buildin, plugin for the plugins -Change: better module summary printout at the end of ./configure -Fix: use -fPIC on x86_64 to make sure plugins link -Fix: gpmi plugin installation bugs -Fix: src/plugin is cleaned on make clean [leak] -API CHANGE: plugin init should return a pointer to the plugin uninit function -Fix: a bunch of random memory leaks -Fix: a bunch of potential buffer overruns -Add: central infrastructure for uninit'ing GUI hids -Fix: missing closedir() -Add: uninit paste buffers -Add: actions, flags and attributes are registered with a cookie so they an be deleted by cookie -Fix: uninit plugins before hids so they have a chance to clean up registrations -Fix: don't use dynamic strings where printing quoted string directly to a file would work [mods] -Change: convert the ps and lpr exporters into configurable exporter plugins -Rename: edif plugin to import_edif for consistency -Change: move gcode and nelma from hid to plugin -Move: gerber, bom and png to expoter plugins -Cleanup: move old/unused/legacy functions to a new plugin called legacy_func -Change: move fontmode to a separate plugin [core] -Change: use a hash for flag storage - faster and simpler code [gpmi] -Add: expotert hid callback for filled pad exporting pcb-rnd 1.0.8 ~~~~~~~~~~~~~ [doc-rnd] -Add: djopt examples [mods] -Cleanup: split up action.c and spread the code in core and plugins -Move: action pscalib() to the ps hid code -Move: autoplace to a core plugin -Move: autoroute to a core plugin -Move: dbus to a defunct core plugin -Move: djopt to a core plugin -Move: edif to a core plugin -Move: gpmi to a core plugin -Move: import_sch to a core plugin -Move: mincut to a core plugin -Move: oldactions to a core plugin -Move: puller to a core plugin -Move: renumber to a core plugin -Move: stroke to a core plugin -Move: toporouter to a core plugin -Move: vendordrill to a core plugin [ba] -Add: when applying patches to the edited netlist, create missing nets (new connections may implicitly define new nets) -Fix: get the renumber action() fixed -Fix: enable net(add,net,pin) action again and make it operate on the edited netlist for the back annotation to take notes of the changes made [libstroke] -Add: menu in the gtk hid's res to toggle stroke enable -Fix: osolete calls in libstroke action - libstroke support compiles now -Fix: get the gtk gui call the central crosshair move event handler instead of reproducing its code locally (... without libstroke) [util] -Add: make clean -Fix: compiler warnings, mostly unused vars in gsch2pcb -Cleanup: indentation in gsch2pcb pcb-rnd 1.0.7 ~~~~~~~~~~~~~ -Cleanup: src/ should compile in c89 - no more // comments and variables declared in for() -Cleanup: const correctness in src/ -Cleanup: missing #includes in src/ -Cleanup: unified, tab based indentation all over src/ -Cleanup: move dmalloc include to central config.h -Cleanup: move gts to src/3rd -Cleanup: remove old/obsolete files inherited from the fork -Cleanup: rename doc/ to doc-orig/ to avoid confusion and make it compile -Fix: poly pin bounding box calculation adds clearance as rtree expects ([square]) -Fix: loading default.pcb shouldn't override cursor pos and board sizes and shoudln't cause file date to be changed in the gui hids since it is loading a "misc" file -Add: README in each main directory to explain what the directory is for pcb-rnd 1.0.6 ~~~~~~~~~~~~~ [cycdrag] -Add: "negative sized" selection selects anything that touches -Add: cycle drag object action [scconfig] -Fix: toporouter Makefile module adds its own action registration code, so the central Makefile is independent of toporouter -Add: --disable-toporouter -Fix: use cc/cc for c compiler (so that it can be overridden) -Fix: remove -std=gnu99: -std=c99 breaks with new gcc and -std is not really portable -Fix: include genht before glib.h because glib.h ruins inline [pinnum] -Add: action and key binding for changing pin numbers in a footprint [gpmi] -Fix: typo in hotkey name for manage plugins (reported by Bert Timmerman) [util] -Fix: keylist: tolerate whitepsace in key sequences -Fix: keylist resets locale to avoid broken table when gawk tries to be too clever pcb-rnd 1.0.5 ~~~~~~~~~~~~~ [onpoint] -Add: Robert Drehmel's on-point patch adapted for pcb-rnd [scconfig] -Fix: properly configure and build and install even if there's space in the source path (thanks to Jason White) -Fix: take genht from the local copy, don't depend it being installed pcb-rnd 1.0.4 ~~~~~~~~~~~~~ [ba] -Add: back annotation [core] -Fix: suppress no-font error message while loading default.pcb - the actual font is coming from the default font file [pcblib-param] -Add: screw(), low level -Fix: typo in the help of rcy() [mincut] -Fix: solve debug works again -Fix: make debug pngs during load optional -Fix: don't use function-in-function - that's a gcc-specific feature -Fix: don't use alloca(), use malloc() (C99) -Add: Makefile to test against known refs [pcb-fp] -Fix: gtk lib window tag print doesn't segfault if there are no tags for a footprint -Del: local hash and library search implementation for footprint names in buffer.c - libpcb_fp should handle this pcb-rnd 1.0.3 ~~~~~~~~~~~~~ [gpmi] -Add: GPMI plugin/buildin for scripiting (import of project pcb-gpmi) [tostyle] -Add: new feature to adjust the sizes of object(s) to the values of the current routing style [pcb-fp] -Add: support for parsing and caching footprint tags (file elements) -Add: the gtk HID displays tags -Add: the gtk HID can filter for tags [pcblib-param] -Add: bga() -Add: generic qf() generator -Add: qfn() - based on qf() -Add: qfp() - based on qf() -Add: plcc() - based on qf() -Add: qsop() - based on so() -Add: silkmark: accept multiple values -Add: silkmark: can be external -Add: silkmark: new styles exteranl45, dot, circle, and arc -Add: connector() has a sequence option to change pin numbering -Add: some tunings for connector sequence=zigzag to do something usable with etrunc=1 [hid] -Add: dynamic menus: create_menu(), menu paths, runtime insertion of menus in core -Add: dynamic menus in gtk -Add: dynamic menus in lesstif -Fix: more const correctness in dialog box code [scconfig] -Add: ./configure --help -Add: print configuration summary at the end -Add: autodetect HOST (use sys/sysid) -Add: src/3rd for central hosting of 3rd party software libs -Add: support "buildins": plugins built into the code -Change: move genht to src/3rd; policy: prefer genht over glib hash -Fix: tests try to run pcb-rnd, not pcb -Fix: central LDFLAGS and CFLAGS should contain the ldflags/cflags detected for generic use [pcb-mincut] -Merge: pcb-mincut is imported in pcb-rnd, the extern repo will be removed [core] -Add: event subsystem -Add: gui_init event -Add: generic plugin support: track plugins loaded, have a menu for managing them -Add: more accessors to query unit details - for the gpmi scripts -Add: pcb-printf %mI prints coordinate in internal coord format -Add: calls for removing actions -Add: calls for removing a hid (useful for removing exporter hids registered by scripts) -Add: path resolution: support ~ in paths -Add: real regex search and real string list search (in search by name actions) -Change: switch over actions from bsearch() to a genht hash - simpler code, potentially also faster -Fix: don't allow the registration of an action with a name that's already registered [fp2anim] -Add: optional dimension lines -Add: more fine grained annotation control -Change: switch over to vector fonts for better scaling -Fix: draw rounded pads (new pad syntax only) -Fix: make sure to generate sane arcs [doc-rnd] -Add: official central key list pcb-rnd 1.0.2 ~~~~~~~~~~~~~ [pcblib-param] -Fix: central bool handling (connector() etrunc), values: on/off, true/false, 1/0 -Fix: typo in so() parameter descriptions -Fix: connector() typo in error() -Add: more elaborate help syntax: easier to read with scripts [fp2anim] -Fix: read multiline directives properly - a newline after each directive is still needed, tho -Fix: allow whitepsace between directive name and opening bracket -Fix: create all layers in advance - this fixes the case when the fp doesn't draw on some layers (the macro still exists) -Fix: rline() is extended by width/2 if there are no rounding; it seems this how pcb defines lines -Fix: leave extra margin in photo mode for the 3d edges -Add: support for old-style pad() -Add: support for Mark() (relocate the diamond) -Add: options to turn off the grid and annotation - useful for thumbnails [scconfig] -Fix: always have config.h, don't ifdef it -Fix: glib is a core dependency that should be added even if the gtk hid is not used -Fix: make clean removes pcb-rnd, not pcb (executable file name typo) -Add: make clean in util/ -Add: options to disable gd and/or jpeg or png or gif -Add: be able to detect and configure lesstif -Add: --disable-gtk and --disable-lesstif; --disable-xinerama and --disable-xrender for lesstif -Add: use detected -rdynamic so that plugins can link against the executable -Change: detect both gtk and lesstif as optional dependencies -Cleanup: generate hidlist.h from tmpasm instead of shell to remove shell dependency -Del: a bunch of obsolete #defines inherited from auto* [core] -Add: --gui explicitly selects a gui hid -Add: don't leave preferred order of GUIs to the chance, make it explicit pcb-rnd 1.0.1 ~~~~~~~~~~~~~ [core] -Fix: don't read beyond the common part of the struct in IsPointInPad (since it's called for lines too, and those have much less fields) -Fix: where stdarg is avaialble, also print messages to stderr - useful if things go wrong before a GUI is working [gtk] -Fix: don't crash but write error message and exit if gpcb-menu.res is empty [square] -Fix: 90 deg rotation rotates shape style -Add: action.c and change.c code to get shaped vias -Fix: don't change pin shape for square and octagon in rotation [mincut] -Add: command line setting --enable-mincut (0 or 1) as mincut can be slow it is a global disbale setting and make a local, per pcb setting for enabling mincut; also add a per pcb setting/flag -Fix: disable debug draw by default -Fix: fall back to the old short warn method when mincut fails -Fix: avoid segfaults by detecting broken graph early -Workaround: if mincut sees a graph with multiple unconnected components, doesn't try to solve but falls back to randomly highlight something [intconn] -Workaround: find intconn pads only on the same layer [nonetlist] -Workaround: ignore nonetlist pads even if the flag is in the element name [scconfig] -Add: scconfig/ - switch over from autotools to scconfig [pcblib] -Cleanup: new, trimmed back pcblib/ with essential footprints only [pcblib-param] -Add: new parametric footprints - no more m4-hardwiring, use your preferred language! -Add: acy(), alf(), rcy(), connector(), dip() -Add: so(), tssop(), msop(), ssop() [pcb-fp] -Add: central lib for footprint search and load in pcb and gsch2pcb [util] -Add: gsch2pcb fork to support [nonetlist] and [pcblib-param] [fp2anim] -Add: fp to animator script for fast preview [polygrid] -Add: ps output: draw grid in polys instead of fill (doesn't fully work) -Fix: set proper max value so the control is enabled [debian] -Update: build the package with scconfig and footprint changes pcb-rnd 1.0.0 ~~~~~~~~~~~~~ [square] -Add: initial implementation [intconn] -Add: initial implementation [nonetlist] -Add: initial implementation [flagcomp] -Add: initial implementation [mincut] -Add: initial implementation