librnd 4.3.2 (r37791) ~~~~~~~~~~~~~~~~~~~~~ [doc] -Update: web IRC pointing to our own implementation -Add: list new download options (distrib packages, repology link) -Add: 'why use' section on main page [hid] -Add: over-allocate temporary argv[] to make room for shuffling filenames around [lib_hid_common] -Fix: fileselect dialog "get_path" poke: set res string to NULL on failure, just to be on the safe side [libuirc] -Fix: trace to stderr, not stdout -Fix: don't start polling or reading the socket if the socket is invalid (disconnected) -Fix: set irc socket to -1 after closing it so that no further polling or reading happens on it -Add: API for bypassing local poll() -Add: API comments; mention that ->nick needs to be malloc()'d -Add: optional on_rawin callback to let the client implementation do custom command processing for extra commands [polybool] -Change: make pa_pline_is_vnode_inside() compatible with the API of polybool2 [polybool2] -Fix: sharp corner offset2: detect and evade corner case of short edge swapping sides near long edge (test case: offset03) -Fix: step 6: don't crash if there's no wrapper found for whatever reason -Fix: uninitialized memory in pa check debug draw -Cleanup: remove unused 'isected' arg from pb2_1_map_seg_line() in internal API -Cleanup: move seg-create-from-copy to pb2_admin so the code is simpler at caller side -Cleanup: move seg bbox computation from admin to geo (as it depends on segment shape geometry only) -Cleanup: rename pb2_1_seg_bbox() to pb2_seg_bbox() - it's not in step 1's code -Cleanup: rename _seg functions to _curve() fuctions for a terminology consistent with the old poly lib -Clenaup: simpify pb2_2_prelim_face_area_bbox() by not going vertex by vertex but segment by segment; this also makes possible to introduce curve area compensation later -Cleanup: remove tweak_isc: it was a workround in polybool that never got any use in polybool2 -Add: implement low level arc support in bool code -Add: arc spec needs one more bit CW/CCW to avoid ambiguity -Add: make offset output optional in gengeo2d intersection glue -Add: segment tangential vector function (implemented for both line and arc) -Add: rewrite pb2_3_face_find_polarity_pt() so it uses tangent vectors and works with arcs -Add: step 3 debug trace: announce segment hit on polarity point ray tracing -Add: expose pb2_raw API through a .h that is also included from the implementation to ensure fucntion prototypes match -Add: step 2: extra check on face area: can not be zero because overlapping segments are removed -Add: implement pa_is_node_on_line() -Add: expose svg debug draw (pa will need it) -Change: checker's debug draw is in svg format, not in animator format, because of better arc support [tests] -Fix: typo in librnd build test Makefile dependencies broke the build with -j; introduced in r34364 (2 years ago) -Fix: flatten the rule for installing includes and binaries to avoid parallel installations -Fix: typo caused a missing dependency that in turn ruined parallel build -Fix: missing explicit rule on librnd_includes.o - might be a problem with non-gnu-make librnd 4.3.1 (r37514) ~~~~~~~~~~~~~~~~~~~~~ [core] -Fix: rnd_rmtree() failed to remvoe files and subdirs because of a path build bug (path separator not added) -Fix: move rnd_w32_* from hid/hid_init to core/paths because some of the core functionality depend on it and 'core' shall not depend on 'hid' -Fix: implicit declaration on win32 because of missing #include -Fix: implicit function declaraiton on win32 rand_s() -Fix: move rnd_exec_prefix() from hid/ to core/ as path init of core depends on it -Fix: merge old path_init and rnd_exec_prefix logics so they do the same; on win32 don't even look at argv[0] but directly go for the wndows-specific exe resolver call -Fix: don't hardwire "pcb-rnd" when rendering rnd_w32_* in paths init, use rnd_app's package name -Fix: potential fclose(NULL) on error handling -Change: make rnd_w32_* depent on RND_WANT_FLOATING_FHS, not on __WIN32__ (it'll be used for binpack on any platform) -Change: call path_init() from rnd_exec_prefix() instead of rnd_fix_locale_and_env() becaue argv[0] will be required on non-windows systems and that's where argv[0] is available -Cleanup: rename and make rnd_path_init() internal now that rnd_exec_prefix is in the same compilation unit and calls it directly -Add: comment on why rnd_exec_prefix() needs to be called early -Add: rnd_exec_prefix() bin_dar fallback resolves ~/ prefix to $HOME/ [hid] -Fix: restore rnd_w32_* externs in hid_init.h for compatibility -Fix: don't hardwire compile-time prefix for librnd plugins in floating-fhs mode -Fix: floating fhs: build libdir using a shorter, relative description and detected exec root -Fix: freq spinbox: implement conversions; the value field used shall be .dbl -Fix: freq spinbox: unit change uses the ->dbl field instead of the ->crd field because freqs are floating point -Add: freq spinbox: default implicit unit is Hz on widget creation -Add: allow core plugins to access rnd_hid_dlg_gui_inited [import_pixmap_pnm] -Add: error handling for P5 premature eof (fgets() returning NULL) [lib_exp_text] -Fix: lpr_ps_init() allocated and copied more data from the ps option table than required for filling up its own config table [lib_hid_common] -Fix: conf tree hlist value edit: disable only the entry buttons for read-only conf node, not the whole dialog box (so that the close button and warning text widgets are not disabled) -Fix: Zoom() shall fail if GUI is not yet inited (rnd_hid_dlg_gui_inited) [poly] -Fix: comment highly surprising API detail of rnd_polyarea_touching(): it's dealing with the first islands only [polybool2] -Fix: don't use const struct * in free() -Fix: pa_reinstall_hole() should reinstall holes into the smallest positive island they fit into - in a pos-neg-pos stacking case it's the bottom pos, not the top pos -Fix: step 6: don't insert child face if it shares curve with parent (this is a typical case of redundant fill) -Fix: frac_circle_to corner case: rotating vector leaves dq just when passing the coord of end -Fix: don't accidentally discard new segments split off from intersected ones just because previous sections of the same segment are marked discarded (fixes pcb03) -Fix: make sure pline edge trees are built at least for the outer contour before figuring which hole goes into which contour in the put-back part of the input optimization -Fix: remove reference to the original polybool paper - this code implements a differet algorithm -Fix: C89 violation on htvlist invalid value declaration -Fix: polyarea.h needs to #include math.h because local inline functions use sin/cos -Fix: don't #include from old polybool -Fix: polyarea.h depends on types from global_typedefs, include it -Fix: missing #includes so that files are self-contained -Fix: Pcoord() used the wrong printer -Fix: split seg's non0 count into two separate counters, one for poly A and one for poly B because the query will be done for on a per poly basis -Fix: dicer: do not start a walk on a hole, that may lead to misinterpreting a hole as solid; if the hole intersects the outer contour of the box, it shall be found coming from another point on the box; shall trigger only if the hole is not intersected by the clip box elsewhere (in whichcase the hole will become part of the contour) -Fix: dicer: rounding error when computing intersection point for creating the temporary node -Fix: round offset: when offset is negative, round approx for concave corners need to be done in reverse orientation -Fix: round offset with negative offset value needs to do the reached-end check inverted -Fix: typo: pa_dic_pt_on_box_edge() point's y against bottom horizontal check used the x coord instead of the y of the point -Fix: debug output: typo in pa_debug_dump_() caused subsequent islands getting the holes of the first island duplicated -Fix: pa_pline_is_vnode_inside() builds pl->tree if it is NULL (else it couldn't run the raytrace) -Fix: rnd_polyarea_touching() needs to check only first islands, that's the original API and that's what pcb-rnd is depending on -Fix: validation shall figure island-island overlap -Del: compile time config setting PA_USE_NEW_DICER: the old dicer doesn't work at all with polybool2, it always needs to use the new dicer -Cleanup: repurpose RND_POLY_ENDP_EPSILON: it's only for the validation and only for local +-1 rounding errors - rename and decrease it to 2^2 units -Cleanup: rewrite polyarea.h copyright banner, keeping copyright reference of the original -Cleanup: remove unnecessary long jump leftovers; the code doesn't use long jump anywhere -Cleanup: remove unused segment task infra -Cleanup: remove unused functions originally copied from polybool -Cleanup: avoid using rnd_fprintf() where plain old fprintf() would do -Cleanup: use RND_MIN/RND_MAX instead of MIN/MAX (safer, avoiding naming clashes) -Cleanup: remove old debug dump that used gEDA/pcb format (line objects) -Cleanup: remove old debug helpers used in polybool but unused in polybool2 -Cleanup: macro pa_swap(), a local copy of rnd_swap() to break ties with librnd -Cleanup: decouple debug code from safe_fs -Cleanup: remove librnd dependency on mm-to-coord in poly generation -Cleanup: remove math_helper.h dependency -Add: svg debug output: automatically scale up thickness and font size when seg tree is large enough to assume the export is from pcb-rnd -Add: also dump resulting poly of boolops when boolop debug dump is enabled -Add: missing copyright banners -Add: switch over from rnd_trace to genprints so polybool2 is less dependent on librnd core -Add: centrally defined initial/default values for debug control -Add: comment explaining rnd_polybool_assert_on_error_code -Add: centrally defined initial/default value for the face polarity debug control -Add: make default/initial valueof step debug dump/draw set from pa_config -Add: move error reporting behind a pa_* API so it can be different when outside of librnd -Add: implement pa_dump_pl() for dumping a single pline as a poly debug file -Add: debug option to dump input and output poly of offset_round calls -Add: pb2 context struct for configurable rule (non-zero or even-odd) -Add: round offset: don't add arc if it would be too short, just use a straight line between start and endpoint instead -Add: debug: split out pa_debug_dump_single_pa() from pa_debug_dump_() so it is possible to dump a single island of a polyarea -Change: switch over default rule from even-oddto non-zero, required for pcb-rnd clearances to work properly [scconfig] -Cleanup: const correctness on handing get() result -Add: --floating-fhs option (for win32 and binpack, runtime detection of $PREFIX would be decoupled from win32) librnd 4.3.0 (r37300) ~~~~~~~~~~~~~~~~~~~~~ [build] -Add: #define RND_HAS_INLINE if keyword 'inline' is availble to ease optimization [core] -Fix: rnd_rmtree() failed to remvoe files and subdirs because of a path build bug (path separator not added) [gtk] -Fix: cast preview widget's custom pointer to GTK_WIDGET for compatibility-binding the destroy function - this avoids an incompatible pointer warning with recent versions of gtk4 (which in turn can become an error on some systems) [gtk4] -Cleanup: warning on incompatible ptr types on gtkc_bind_win_destroy(): first arg is always cast to G_OBJECT so it can accept any widget type; removes a warning -Fix: safer mechanism for closing a submenu: in some cases gtk4 may destroy open-menu list items synchronously in other cases asynchronously; make sure not to access elements of the list potentially destroyed by gtk4 during the loop [hid_lesstif] -Fix: passed the wrong pixmap ID to xrender (when xrender is enabled and present) [lesstif] -Fix: r34636 (adding user data ptr to config change callbacks) missed a function ptr type passed in argument -Fix: missing cast: X API too old to be const-correct [poly] -Add: publish rnd_pline_isect_line() and rnd_pline_isect_circ() [polybool] -Fix: passing wrong poitner type to angle cmp -Fix: dicer: don't perform any clipping if clip box is outside of the box of the contour pline -Fix: dicer: don't perform clipping if clipbox has a zero or negative size -Cleanup: C89 violations -Cleanup: const correctness, remove unused vars -Cleanup: missing/implicit function return type -Cleanup: suppress warning on intentionally unused result -Add: point-in-poly: SEGs are taken in arbitrary order -Add: publish rnd_pline_isect_line() and rnd_pline_isect_circ() -Merge: port r37277 from polybool2 (higher resolution isc) -Merge: port r37278 from polybool2 (inverted island in slice output) [polybool2] -Add: rewrite of polybool in an area based approach (immune to self-intersection problems) [test] -Fix: conftest shouldn't use the old API for conf callbacks (wrong number of args in function pointers) librnd 4.2.0 (r36857) ~~~~~~~~~~~~~~~~~~~~~ [build] -Cleanup: move scconfig distclean file list into a make variable to make it easier to handle (the list is getting long) -Fix: make clean removes src/*.so.4 -Fix: make clean shall remove alternative API objs (old font and new polybool) -Fix: make distclean should remove all files generated by scconfig during ./configure, including aru, lib_hid_gl headers and poly conf -Fix: make clean removes test-rnd.o -Fix: make distrclean should remove generated conf header in polybool [core] -Add: editor.min_zoom config node to make gtk's minimum zoom coord-per-pix (max zoom level) configurable -Add: config node for unlimited pan (for osm-rnd) -Add: config node editor.hide_hid_crosshair so that the crosshair is not drawn (useful in osm-rnd) [doc] -Fix: missing conf tree doc from svn: editor/global_grid and editor/local_grid -Update: conf node list for hide_hid_crosshair -Import: support page from pcb-rnd [gtk] -Add: support for config node editor.hide_hid_crosshair [lesstif] -Add: implement unlimited pan option (for osm-rnd) -Add: support for config node editor.hide_hid_crosshair -Fix: initial view setup still executes under unlimited pan -Fix: implicit declarations [lib_exp_pixmap] -Add: pixmap object export option in the API (not yet implemented) [lib_exp_text] -Fix: memory leak on lpr options -Add: colorspace option in draw_svg (so that non-color svg can be exported) -Add: pixmap object export option in the API (not yet implemented) [lib_gtk_common] -Add: use editor.min_zoom config node to make gtk's minimum zoom coord-per-pix (max zoom level) configurable -Add: implement unlimited pan option: remove scrollbars (for osm-rnd) [lib_hid_common] -Fix: don't print log messages to the log window once the main loop has exited (the GUI is defunct already) -Fix: close the export dialog if the design is switched away; stale dialog states may cause problems [lib_hid_gl] -Fix: GLfloat related precision issues when rendering large coordinates (e.g. 64 bit coords in pcb-rnd, very large sheets of sch-rnd or pretty much anything in osm-rnd); the fix is to do the translation on CPU side with rnd_coord_t, not on GPU side with GLfloat -Fix: solder mask cover triangles should be translated on CPU side as well [polybool] -Fix: various fixes on corner cases -Add: dicer: rewrite the dicer (more efficient algroithm, new API) librnd 4.1.1 (r36382) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: soname for polybool so [doc] -Change: use mibbit for web irc client [hid_remote] -Fix: old event name [lib_hid_common] -Fix: FSD: 'save as dialog ok button bug': if neither edit nor selection is available but the 'ok' button was clicked, do return with the file name built from entry (if that's not NULL) [polybool] -Fix: various fixes on corner cases librnd 4.1.0 (r35983) ~~~~~~~~~~~~~~~~~~~~~ [core] -Move: xform_mx from font to core - these are generic 2x matrix transformations -Add: generic temp dir create/remove (imported from sch-rnd) -Add: basename(), parent_dir_name() and relative path calculator imported from libcschem -Add: rnd_printf allows applications to override human coord conversion via an optional rnd_app hook (useful for sch-rnd so that %mH prints in k) [dad] -Add: tree widget multisel flag -Add: wrapper/helper inline rnd_dad_tree_get_selected_multi(); when HID backend doesn't implement multiple selections, it uses the single-selection API and builds a list-of-1 so the caller doesn't need to deal with this [doc] -Add: anatomy of font v2 with field names -Add: polybool: figures for documenting the self-intersection cases [font] -Import: matrix reverse transformations from camv-rnd [font2] -Add: new font engine with support for baseline, kerning, multiline text, horizontal and vertical alignment, tabs, &entity; [fsd] -Add: enum bit for multi-select [gtk] -Fix: typo: widget hide shouldn't call widget focus on composite -Add: implement widget focus hid call -Add: fill in preview expose coord-per-pix field -Add: set expose ctx coord_per_pix for main draw -Add: xflip and yflip poke calls on preview widgets -Add: make minimum zoom level configurable for the preview widget (using the widget poke API) -Add: multisel tree: enable multiple selection in gtk, return cursor as the first selection -Add: implement multi-select support for tree tables [hid] -Fix: ambigous naming of the first argument of RND_DAD_STRING_SELECT_REGION() - it's a hid_ctx, not a table -Add: rnd_hid_export_using() - direct export plugin execution (imported from sch-rnd) -Add: export action (imported from pcb-rnd) so other apps (e.g. sch-rnd) can have the same code -Add: rnd_hid_expose_ctx_t has a coord_per_pix field so that preview callbacks canfigure zoom level in a reentrant way [irc] -Fix: set focus to the input widget after connection established and input widget is enabled [lesstif] -Add: implement widget focus hid call -Add: fill in preview expose coord-per-pix field -Add: set expose ctx coord_per_pix for main draw -Add: xflip and yflip poke calls on preview widgets [lib_hid_common] -Fix: dlg_fileselect: text entered in the file name edit line always has precedence over tree selection when pressing enter or clicking "ok" -Add: generic timed change helper inlines for implementing dialog boxes (imported from sch-rnd) -Add: dlg_fileselect supports multiple path selection for read (optional) [poly] -Add: rnd_poly_from_contour_nochk(): same as rnd_poly_from_contour() but doesn't assert on invalid poly (useful if the caller is goign to clean it up or throw it away) [polybool] -Add: new API, largely compatible with the original poly API, for the new polygon library that features high precision coords and proper handling of self intersections [tests] -Workaround: printf test: linking static libs is just too advanced for OSX's linker - work it around by dropping the hid .a and manually doing the init sequence librnd 4.0.3 (r35593) ~~~~~~~~~~~~~~~~~~~~~ [core] -Fix: human coord print: if coordinate ends in .99999999 to the last digit, that means rounding error in conversion; detect and correct it -Fix: action registration: NULL pointer deref when a redundant action is refused to register [font] -Fix: memory overrun on font glyph rendering for simplepoly; verify number of points and fall back to thin draw mode if polygon is too large -Fix: off-by-one error in thin poly rendering "last point index" in simplepoly -Fix: simplepoly "numpts" is really number of coords in the array, so allow twice as many while keeping compatibility [gtk] -Fix: when closing all dialogs at quit, prepare for the case of a dialog closing subsequent dialogs automatically [lesstif] -Fix: when closing all dialogs at quit, prepare for the case of a dialog closing subsequent dialogs automatically [lib_hid_common] -Add: pressing enter on the string for conf tree value edit should accept new value and close the dialog librnd 4.0.2 (r35546) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: use $(MAKE) instead of make from central Makefile -Fix: separate static and dynamic cflags/ldflags so that app executables compiled with a specific librnd configuration won't have stale -l's with a different librnd later [core] -Cleanup: use portable RND_INLINE instead of inline -Add: ConfGet() action to provide access to the native conf nodes for user scripts -Add: SafeFs actions for: system, rename, unlink, remove and mkdir (for scripting) -Add: SafeFs actions for querying file stat()s, mirroring discrete calls of safe_fs.h -Add: SafeFsPathSep() action for returning system-dependent path separator char (e.g. slash) -Add: SafeFsRealPath() action for exposing librnd's lrealpath() implementation -Add: SafeFsReadFile() action -Add: SafeFs actions: fopen, fgets, fclose, fread, feof, fputs for scripting -Add: SafeFs binding for fseek, ftell and rewind -Add: SafeFs helper action to read a file from separator to separator -Add: SafeFs bindings for ferror() and clearerr() (for scripting) [doc] -Fix: packager's doc: main description did not have gtk4 support -Add: recommend --debug when compilation fails of mac, because of -Dinline -Add: refine dependencies in INSTALL: mention glu for opengl; mention libepoxy for gtk4 [gtk] -Fix: sign flip on pixmap rotated bbox calculation -Fix: enfroce rnd_render point to gtk when rendering from callbacks -Add: make gtk text markup foreground colors configurable for , and (may be useful on the dark theme) [hid_gtk2_gdk] -Optimize: draw a single point instead of an arc when radius is smaller than a pixel [lesstif] -Fix: sign flip on pixmap rotated bbox calculation -Fix: enfroce rnd_render point to lesstif when rendering from callbacks -Cleanup: use portable RND_INLINE instead of inline [lib_hid_common] -Add: extend the tooltip for auto_place to mention it enables window placement in the first place -Add: FsdSimple(): simplified API to the file selection dialog (for scripting) -Add: dad() iterate subcommand -Add: dad() raise subcommand -Add: dad() close subcommand [lib_hid_gl] -Cleanup: use portable RND_INLINE instead of inline [poly] -Cleanup: use portable RND_INLINE instead of inline [tests] -Fix: printf cli testers shall init/uninit rnd units else some rnd_printf internals may crash librnd 4.0.1 (r35417) ~~~~~~~~~~~~~~~~~~~~~ [build] -Add: unsigned coord type generated from scconfig (would be part of the 4.1.0 API later on) [conf] -Fix: conf_del on list, which sets the list value to NULL, should get the list removed [core] -Fix: refine project file creatioin failure error messages so it's more clear what's happening and why -Cleanup: internal vairable naming terminology: use design instead of pcb -Add: API comment to clarify that design->loadname shall be overwritten by the app on save-as [font] -Fix: matrix transformation macros should wrap mx in parenthesis because it is a macro argument [gtk] -Fix: when top window is resized while zoomed out a lot make sure 32 bit coords won't overflow; if they would, zoom in enough to avoid that [hid] -Fix: do not leave registered temporary tools after switching on the busy-cursor (unreg that tool during uninit) -Add: if enum values are available, "--help plugin" prints them [hid_lesstif] -Fix: update current design pointers within subdialogs of top window when design changes [lib_exp_text] -Fix: reset transformation matrix for every single page in ps so that ps files can be cat'd together [lib_gtk_common] -Fix: generalize the zoom overflow detection and clamping code and apply it after any zoom change -Fix: update current design pointers within subdialogs of top window when design changes [lib_hid_common] -Fix: "remove selected" in the preferences config tab right side should be able to remove a whole list/array and update the dialog -Add: preferences dialog: explain "save window geometry in design file" limitations in a tooltip [util] -Add: awk_on_formats: allow plugin type detection override awk script injection so the script is less pcb-rnd-specific -Add: accept -i for import and -e for export in awk_on_formats when picking up features from pups librnd 4.0.0 (r34958) ~~~~~~~~~~~~~~~~~~~~~ [build] -Change: rename librnd3 to librnd4 in all paths -Change: rename incldue path to librnd4/librnd (e.g. /usr/include/librnd4/librnd) to avoid clash with librnd3 and future versions -Cleanup: clarify the c89/c99 split in .c->.o compile makefile templates -Move: rnd_long64_t from central config to the poly lib - only the poly lib needs this type and nothing else should start depending on it -Fix: LIBRND_LIBDIR in installed librnd.mak should include the /librnd4 suffix (where non-so binaries are installed) -Fix: make sure detected/configure cflags, including -NDEBUG are used when compiling tests -Fix: install all headers of libualloc -Add: LIBRND_SODIR in installed librnd.mak that points to the libdir that has the .so files -Add: installed librnd.mak declares SPHASH and CQUOTE so apps don't need to -Add: installed librnd.mak should set GENCONF -Add: comment to explain while librnd.mak doesn't need to have LIBRND_SHAREDIR -Add: LIBRND_PLUGDIR in installed librnd.mak -Add: scconfig template for cdep offers an option to change outpit file name (sch-rnd needs that) -Add: define FONT2C in librnd.mak -Add: install build_ps.sh and include it in librnd.mak -Add: install util/keylist.sh and publish it in librnd.mak -Add: install util/menu2svg.sh and publish it in librnd.mak for the apps [core] -Fix: uninitialized local vars on Log(export) -Fix: rnd_printf: refuse more formats when RND_SAFEPRINT_COORD_ONLY is active and the format is not strictly a single coord -Fix: rnd_printf: potential memory leak: goto error label instead of returning -1 directly on any error condition -Fix: rnd_printf: don't choose between imperial and metric if target unit is outside of these -Fix: need to set current desing in GUI before executing any other design-switch event (some parts of the GUI, like the menu system, will use GUI's current) -Fix: make rnd_conf_list_foreach_path_first() safe to call with a callback that changes the conf -Cleanup: rename RND_EVENT_BOARD_CHANGED to RND_EVENT_BOARD_REPLACED because it's not really a change in the board but the whole board replaced -Cleanup: rename RND_EVENT_BOARD_ to RND_EVENT_DESIGN_ to make terminolofy portable accross apps -Cleanup: rename DAD redraw-with-board concept to redraw-with-design (app agnostic terminology) -Cleanup: rename event names from board to design -Cleanup: rename pcbev_ to rndev_ in event names -Cleanup: reorder enum rnd_hid_attr_type_t and add spare values for later binary compatibility -Cleanup: remove suppress_duplicate_action() - it was a workaround for a librnd 3.x.x transition -Cleanup: fix up field ordering of the struct and restore rnd_hid_t spares -Cleanup: struct field ordering in rnd_app_t, restore spares -Cleanup: rename HID_SC_ to RND_SC_ to keep namespace clean -Cleanup: move RND_SC_ from amcros to enum for code clarity -Cleanup: rename rnd_hid_cfg_keys_input2*() to rnd_hid_cfg_keys_input*() - this is the new and only official API for input key handling now -Cleanup: rename conf_board_ignore to reflect it also operates on project level (and board is design) -Cleanup: remove unused context pointer from the hid struct -Cleanup: move hid-specific call get_coords from actions to hid -Cleanup: actions.h shouldn't include hid.h: actions are generic (core) -Cleanup: move hid initialization internals from hidlib.h to hid_init -Cleanup: do not include hid_init.h where not needed -Cleanup: rename rnd_hidlib_t to rnd_design_t to reflect the real purpose of the struct -Cleanup: rename RND_ACT_HIDLIB to RND_ACT_DESIGN to better reflect the purpose -Cleanup: rename hidlib_conf.[ch] to rnd_conf.[ch] for clarity -Cleanup: rename hidlib argument names to design in public API, for clarity -Cleanup: rename path API struct field from ->hidlib to ->design for consistency -Cleanup: rename rnd_pcbhl_conf_postproc to rnd_conf_postproc - the pcbhl prefix is legacy from the hidlib times -Cleanup: unit: rename unit allow/family/suffix prefixes to rnd_unit -Cleanup: unit: create typedefs for the unit enums using unsigned long int to guarantee extra bits for dynamic registration -Cleanup: rename unit get functions to have rnd_ prefix -Cleanup: remove cschem-specific units (libcschem should register them runtime) -Cleanup: rename design ->filename to ->loadname (file name as specified by the user) and introduce ->fullpath for the resolved file name -Cleanup: rename project ->filename to ->fullpath for clarity and uniformity with rnd_design_t -Cleanup: finalize the new multi-conf support, keep global var copying because of plugin confs, rename the implementation to remove the _temp suffix from the file name -Cleanup: remove/fix pcb references in code comments -Cleanup: remove pcb-rnd-specific constants from globalconst.h, these should be #defined in pcb-rnd -Del: obsolete API rnd_hid_cfg_keys_input() -Del: RND_MF_FONT, RND_MF_ACTIVE, RND_MF_BACKGROUND and RND_MF_FOREGROUND from menu system to simplify HID implementation -Del: RND_EVENT_DESIGN_META_CHANGED_LIB in favor of RND_EVENT_DESIGN_META_CHANGED - it wasn't called only for lib and there's no library path list on librnd level anyway -Change: design struct (rnd_hidlib_t, rnd_design_t): store the bbox of drawing area instead of width and height, to allow editing at negative coords -Move: rnd_hidcore_crosshair_move_to() to gui_act.c in preparation of moving gui_act.c out to the hid helper plugin -Move: gui_act to lib_hid_common: not needed in non-gui setup -Move: Help() back to core, useful in cli -Move: rnd_hid_in_main_loop to hidlib.[ch] as it should remain in core among with anyload -Split: move hid-specific actions out from conf_act into hid_act for a hid split -Split: anyload action to a separate file because it depends on hid -Split: librnd-hid.so is only the hid part, librnd-core.so is the core (conf, unit, utils, helpers) without any HID infra -Split: code that frees a config role lihata doc from reset() into rnd_conf_free() as it'd be reused in project conf binding -Add: rnd_conf_hid_callbacks_t callbacks get a void *user_data argument coming from a rnd_conf_hid_callbacks_t field optionally set at registration; this lets the registrar pass on context to the callbacks -Add: better section comments for the long switch in rnd_printf format string processor -Add: rnd_printf: optional hook for apps to render %r format strings -Add: comment to explain unit suffix print options -Add: unit: prepare unit families for dynamic extension -Add: explicit field for indicating if a unit is an alias so aliasing can be decoupled from order of units in the vector later on -Add: unit: dynamic registration of units and unit families -Add: make rnd_get_value()'s fallback unit configurable -Add: project support infra -Add: project free() -Add: project remove_design() call -Add: import rnd_project_update_filename() from libcschem -Add: API call to append a design to a project's list safely -Add: rnd_design_t links back to parent project using a ->project field maintained by project.c -Add: import multi-design support from sch-rnd -Add: mark each event as [a] or [d] (for per-app or per-design) -Add: central hash of projects -Add: rnd_app API comment: example when conf dont_mege is used -Add: prepare the conf system for checking its own conf error ignores for the gtk grid conf transition -Add: extend conf ignores table with a custom error message option -Change: rnd_get_n_units() doesn't have arguments anymore: there's only one "number of units", aliases are marked explicitly -Change: rnd_units is a vector instead of a static table, to make room for dynamic unit allocation -Optimize: rnd_printf() should use static allocation buffer on stack for printf spec strings to save on malloc()/free() calls - no spec string should be longer than 128 [dad] -Cleanup: remove obsolete usage of RND_HID_FSD_* bits -Cleanup: simplify enum spares, not forcing switch cases to list them -Change: mandate naming HPANE and VPANE widgets on creation (insteadof providing an optional post-creation pane name macro) so any pane position can be remembered -Add: API for creating preview widget tied to a specific rnd_design_t [doc] -Cleanup: switch over pcb-rnd referneces -Cleanup: replace the [hidlib] marking with [librnd] marking in conf tree doc -Del: pcb-rnd-specific subtrees from the conf doc -Del: there's no such config type "CFN_INCREMENTS" (was an old leftover from geda/pcb) -Add: final mutli-conf support -Update: conf tree for pcb-removal -Update: made contact info more librnd-specific -Update: fungw action doc for the current API [font] -Add: import pcb-rnd's font rendering engine [gkt4] -Fix: missing #include after the API renames [gtk] -Fix: proper drawing area scrollbar limitats with negative drawing area coords -Add: multi design: save and restore zoom+pan when switching between designs -Update: "special color" handing for invocation from ->set_design() -Move: local_grid and global_grid config subtrees from under the gtk plugin conf tree to editor/ to be shared with other plugins [hid] -Cleanup: use unit index instead of offset within rnd_units -Cleanup: switch over to using rnd_unit_get_idx() instead of direct addressing of rnd_units -Cleanup: dad_spin: rename custom integer coord type to reflect it uses the .crd field -Cleanup: rename rnd_hidlib_set_grid and rnd_hidlib_set_unit, replacing "hidlib" with "hid" -Cleanup: do not call hid ->set_design directly, use multi for that -Cleanup: terminology in API comments: we are librnd, not pcb-rnd -Cleanup: remove/fix pcb references in code comments -Del: per HID ->fileselect in favor of centralized API and implementation, either served lib_hid_common or hid_batch (for CLI) -Del: rnd_hid_enable_per_dialog_hidlib (assume it's always 1) -Del: ->heavy_term_layer_ind (was pcb-rnd specific) -Del: beep() from the hid API - nothing uses it anymore -Del: clipboard formats: clipboard is always set and retrieved as a (char *) string -Del: ->point_cursor API; replaced by centralized mouse cursor override API -Del: ->busy() from the HID API and HID implementations: handled centrally -Del: API for faded drawing; this should be done by app's draw code by simply setting lighter colors -Del: HID ->get_design API in favor of multi's rnd_multi_get_current() -Fix: remember exec prefix after conf internal is loaded -Fix: make exec_prefix avialable even before the first real config merge -Fix: don't crash if preferred GUI is NULL -Fix: hid->attr_dlg_new should set hid_ctx as soon as possible; HID gui operations may trigger callbacks during dialog creation which already depend on hid_ctx -Fix: call HID's crosshair notification only if the current render HID wants that (avoids calling crosshair functions while export) -Fix: reset tool states when switching designs so tool logic doesn't get confused -Rename: "hidlib" args to "design" for clarity -Add: ->do_export() should pass on a pointer to the design (so that simple exporters don't need to implement ->set_design) and an optional app-specific config void * -Add: hid->set_layer_group() passes on (rnd_design_t *) as well so exporters don't need to remember current design -Add: expose_main()'s rnd_hid_expose_ctx_t has an (rnd_design_t *) field to remember which design is being exposed (usefule in multi-design apps, like sch-rnd) -Add: explain the gui-printer-exporter flag set better -Add: spare fields in DAD structures for binary compatibility -Add: generalize dad_spin: introduce a new unit type for custom integer coords -Add: hidlib_init1() gets exec_prefix as arg and sets it in the config -Add: more detailed explanation on the mouse cursor reg/set API -Add: centralized mouse cursor set and override calls -Add: all hids should declare a mouse curosr named "busy" for the centralized handlong of busy state -Add: centralize rnd_hid_busy() - per HID implementation is removed -Add: extend the get_export_options() API so it gets the design and the same app-specific context ptr the actual export gets, so it can calculate field defualts with all export info known -Add: keep mainloop_interactive()'s dsg param, mark it "the design we initially switch to" -Add: more explanation to HID->set_design() -Add: optional API to ask an exporter whether a given design with a given appspec cookie can be exported -Add: comments to clarify the new policy on DAD TREE cell[] allocation -Change: preview expose callback can't have expose context const, callee needs to fill in ->design -Change: tree-table cells need to be malloc'd (strdup'd) on caller's side and are free'd by the lib [hid_batch] -Cleanup: terminology (hidlib->design) -Cleanup: code formatting [hid_lesstif] -Del: long disabled Xaw-compatible pan mode -Fix: don't crash in tree-table widget click event handler if there's no dialog box ptr (happens in subdialog) -Add: support for sparse global grid [lib_exp_pixmap] -Fix: page fit bug with negative coords [lib_exp_text] -Cleanup: decouple draw_ps from HID API's global faded call, use a hackish global variable specific to the ps export and pcb-rnd (as this is a legacy special case and we are not going to support HID-operated faded draw in any other exporter or for any other app) -Fix: ps: wrong centering of negative coords -Fix: eps: wrong centering with negative coords -Fix: svg bbox calculation with negative coord drawing areas -Fix: svg bbox on negative dwg area coords when used with --true-size -Change: lpr API: export-to-file gets rnd_design_t * as argument -Add: pass on appsepc to the ps exportplugin from the lpr exporter [lib_gtk_common] -Cleanup: terminology in zoompan: hidlib -> design -Fix: allow scrolling/panning to negative coords if drawing area extends to negative -Fix: a preview that is neither locally nor globally flipped should be set to local flip with flips kept 0 so it's always displayd in neutral -Fix: always update all "special" colors on ->set_design(), the config may have changed and may bring new color -Add: set initial preview design depending on preview widget locality -Tune: allow zooming out a lot more (sch-rnd may have large sheets) [lib_hid_common] -Cleanup: rename preferences board-changed concept to design-replaced to follow event rename -Cleanup: use unit index instead of offset within rnd_units -Cleanup: switch over to using rnd_unit_get_idx() instead of direct addressing of rnd_units -Fix: preferences conf tab: update nat's pointer on design switch because in a multi-design setup each design will have a different set of natives -Fix: export dialog passes on appspec pointer to the plugin -Fix: preferences, key tab: uninitialized ram on table row termination -Fix: plugin dialog tree table handling: uninitialized row terminator -Add: publish rnd_dlg_export() so non-standard export dialogs can be implemented (e.g. project export in sch-rnd) -Add: preferences dialog hook callbacks get current design as argument (provision: just in case we won't operate the preferences dialog for the current design in the far future) -Add: preferences dialog tab open callback: pass on optional tab data request from the user to direct initial state when a specific tab is requested to open -Add: implement UNIT spin box creation in dad() action [lib_hid_gl] -Cleanup: passing the wrong string type to standard calls -Add: hidgl_expose_init() doesn't assume starting coords at 0;0 but gets them in arguments to make the API more flexible (hid_mbtk may need this) [multi] -Del: remove RND_EVENT_DESIGN_REPLACED in favor of RND_EVENT_DESIGN_SET_CURRENT (better terminology for multi-design) -Fix: most conf lihata docs are shared and shouldn't be copied per design; exceptions are CRF_DESIGN and CFR_PROJECT -Add: API to support multiple designs (mostly imported from sch-rnd) -Add: refine event comments on which event is called when (meta change vs. fn change) [scconfig] -Cleanup: rename /local/pcb to /local/rnd in public templates -Cleanup: get rid of hidlib leftover in public templates -Cleanup: rename _PCB_DEP_ to _RND_DEP_in public templates -Cleanup: get rid of unused /local/pcb/fungw_system from public API; fungw is detected and used only in librnd, apps rely on script plugin provided with librnd -Fix: error messages used in apps don't hardwire "pcb-rnd" -Change: host applications must define APP in their scconfig hooks.c; not defining APP is an #error [script] -Fix: perma script conf loader: accept root node if it's either pcb-rnd-perma-script-v1 or librnd-perma-script-v1 (typo caused every root look invalid) [tests] -Add: include fontlib in the testing [util] -Del: devhelpers/subst - mainline-to-pcb-rnd converter; keep a copy in pcb-rnd only, just in case some hidden gem plugin pops up -Del: deblist.sh - not used by anything anymore -Fix: 404.sh: exclude releases, can't fix past doc broken links -Fix: gen_formats prints $APP instead of hardwired pcb-rnd -Add: 404.sh crawls all Ringdove projects not only pcb-rnd -Add: install devhelper awk_on_formats.sh, apps need it for packager's doc and datasheet -Add: import pcb-rnd's list_dialogs that features reusable shell functions and the html generator -Add: install list_dialogs.sh -Add: import font2c from pcb-rnd (now that the font engine is in librnd) -Add: import action compiler from pcb-rnd (all Ringdove apps need this for their doc) -Add: convert action_compiler.sh into a shell lib so the configuration can be provided from a per project wrapper -Add: import dump_actions_to_html from pcb-rnd -Add: convert dump_actions_to_html.sh to a reusable, app-agnostic shell lib -Add: import file format list generator from pcb-rnd -Add: missing copyright header in gen_formats; explain the API -Add: install gen_formats -Add: devhelper: gimp-exported xmc to C source converter (for mouse cursors) -Change: generalize list_dialogs more: function for generating table header but do not close html (caller may embed the table in some more complex page) -Change: keylist.sh: we do not have per HID menus anymore but plugin supplied menu extras; instead of listing them in columns, have a single "source" column