Parsing and input processing:
- unify alignment, direction
- on parse error, politely complain, don't terminate [almost there]
- convert assert(0) to proper error indications (BUG or such)
- quoted strings can have embedded double quotes, with \" (see parse_field)
- check what happens with UTF-8 (c4puter/motherboard)
- track renames
- test immunity to deletions more thoroughly (top sheet, sub-sheet, library,
component, project, page layout)
- implement related_other_repo
- implement destructors
- check for memory leaks
- sheets appearing multiple times are parsed anew each time. Should we try
to combine them ?
- likewise, reuse sheets and libraries that are the same in the next/previous
revision (according to their OID)
Visualization (dwg.c and such):
- glabel: build for "right" style, then rotate poly (like hlabel)
- show open pins / wires
- check remaining alignment / direction / rotation cases in switch statements
- support mirroring (and detect-complain if unexpected) [should be done now]
- record.c (bb_rot): implement bounding boxes for text
- nesting gfx in diff is a huge kludge, caused by global vars in gfx.c
- why does "NRESWARM-CPU" (70 mil) on sheet 27 (eMMC) grow outside its box ?
None of the others (60 mil) do.
- better text size guessing also for FIG
- consider switching to Hershey fonts (that's what eeschema uses, right ?)
(goal: prevent font geometry from changing when scaling)
- support fonts attributes ?
- support line thickness ?
- ~ as overline (grep for ~ in out.fig)
- maybe let user set PNG size [we have zoom level]
- return indication of whether non-interactive diff found any differences
- in diff, pass only options understood by cairo_png
- find out why in Cairo PDF non-dashed lines disappear if CAIRO_LINE_CAP_ROUND
- non-interactive diff mode currently requires both sheets to have identical
- diff area algorithm will fill anything resembling a closed path, no matter
how little is inside (e.g., a changed large but empty rectangle will be
- dragging can be slow. maybe reusing old content and only redrawing new
will help ?
- highlight nets ?
- we use find_corresponding_sheet way too often. Consider changing curr_sheet
to new_sheet and old_sheet.
- introduce location string, as command-line argument, e.g.,
or maybe (allowing for sheets from completely different sources):
- set/use location string via clipboard
- incremental search with / ? and maybe Ctrl-S and Ctrl-R
- allow changing font size
- maybe allow changing diff contrast
- define consistent concept for keybord shortcuts
- should have quick way to show diff of a single commit
- in history, set font to non-bold if showing details
- add scrolling with keys to history
- add manual selection with Up/Down/Enter
- "what I am selecting" indication (color of frames of sheets in history)
is not very clear.
- commits in branch can be shown long after the branch has started in the
- clearly visualize branches as such (like gitk, tig)
- need a way to change new/old sheet association, in case automatic selection
fails (reserved hotkeys: Left/Right)
- maybe indicate how many times label is used on each sheet
- maybe indicate how it is used
- there can be "hanging" pop-ups, by design. See comment in
- needs keyboard shortcut to invoke
- add keyboard shortcuts (cursor, Enter)
- examine interaction with background, suppress conflicts
- try to use alpha instead of "yellow"