Also removed the tool diameter argument. We use the diameter from the
path, like "offset" does. In the long run, this convention probably
doesn't make sense, though.
- cameo/path.c (path_is_closed): use points_eq instead of open-coding the
comparison
- cameo//path.c (EPSILON_MM, points_eq): consider two points as equal if
their projections on the xy plane are less than EPSILON_MM apart and
their z positions don't differ by more than the same distance
- lang.y (align, bbox): moved bounding box calculation to separate
function (for sharing)
- lang.y: array sizes can specified as the size of the respective
dimension of the bounding box plus a border
- README: documented use of border size with "array"
- lang.y (translate): list of paths is now an argument (instead of always
using the global path list)
- lang.y: on "gerber", "gnuplot", and "excellon", only translate the new
paths
- README: added description of "append"
- lang.l, lang.y: added command "append"
- gnuplot.h, gnuplot.c (gnuplot_append): append gnuplot paths to an
existing file
- gnuplot.c (gnuplot_do_write): if writing to standard output, at least
check that fflush() works at the end
- README: changed the term "drill/mill substitution" to "drill/mill
conversion"
- README: described the drill/mill conversion commands
- lang.y: "drill" and "mill" worked on the wrong (empty) list
- ops.c (half_circle): fixed transcription error
- README: document that file names can contain almost anything
- lang.l: reset the scanner state on \n, so that we stop looking for a
file name if the file name has simply been omitted
- README, lang.l, lang.y: renamed the "tool" command to "offset"
- README: documented "offset"
- ops.h, ops.c (tool_comp_paths), cameo.c (main), lang.y: added
parameter to tool_comp_paths to treat all paths as internal
- lang.l, lang.y: added option "inside" to the "offset" command
- lang.y: "offset" can now take multiple options in any order
- lang.l, lang.y (MIL2MM): moved unit conversion from lang.l to lang.y
- lang.l, lang.y: instead of returning dimensions and numbers as NUMBER,
return as NUM_EXP_<unit> for numbers with an explicit unit, and as
NUM_IMP_<unit> if the unit is implied
- lang.y (dimen): perform unit conversion as needed
- lang.y (number): never convert and only accept implicit dimensions
- lang.y: change all uses of NUMBER to "dimen", except for the
multipliers in "array", where we can now use "number"
- lang.y: removed comment about "array" only working in metric mode
- README: described the X/Y translation commands
- lang.y: print an error if the lower bound if larger than the upper bount
in an "align" command
- lang.y: mention that "array" doesn't work as expected if in imperial mode
- README, lang.y: changed depth parameter of "z" command to position
(sign changes)
- lang.l: defer FILENAME after "gerber" and "gnuplot", so that we don't
mis-read the number
- lang.l, lang.y: return the reference point after "align" as new token
REF, not as NUMEBER, so that we can catch syntax errors that would
cause scanner and parser to become unsynchronized
- lang.l: accept negative numbers
- lang.l: added support for comments beginning with #
- Makefile (OBJS): added gerber.o
- cameo.c (usage, main): new option -g to process input a KiCad Gerber
- gerber.h, gerber.c (gerber_read): parse Gerber files as generated by KiCad
- path.h, path.c (path_reverse_inplace, points_eq, attr_eq, path_connect):
merge sets of paths with equal endpoints into single paths
- cameo/cameo.c (main): use getopt
- cameo/cameo.c (main, usage, process_path): option -d to enable dog-bone
notches (they're now disabled by default)
- cameo/path.h (struct path), cameo/path.c (path_new, path_from): added
attribute "notch" to enable notches for a path
- cameo/gnuplot.c (gnuplot_read, gnuplot_do_write): read and write the
#%notch hint
- cameo/cameo.c (process_paths): explain the inside/outside path detection
heuristics
- cameo/path.h (struct path), cameo/path.c (path_new): added attribute
"outside" to explicitly mark paths as outside edges
- cameo/path.c (path_from): new function to make a path that takes the
attributes of another path
- cameo/path.c (path_reverse, path_offset): use path_from instead of
path_new
- cameo/gnuplot.c (gnuplot_read, gnuplot_do_write): read and write the
#%outside hint
- cameo/path.h, cameo/path.c (path_replace): replace a path in a list of
paths with a different path
- cameo/path.h, cameo/path.c (path_find_leftmost): find the leftmost path
in a list of paths
- cameo/path.h, cameo/path.c (path_free): move freeing of points to separate
function free_points, for sharing with path_replace
- cameo/cameo.c (main): move path processing to new function process_paths
- cameo/cameo.c (process_paths): treat the leftmost path a outside path and
process it last. Treat all others as inside paths.
- cameo/Makefile (CFLAGS): added more warning flags
- cameo/path.h (path_direction): removed unused prototype
- cameo/path.c (angle): renamed to angle_3 to keep it from getting shadowed
by local variable
- cameo/path.h, cameo/path.c (offset_point, path_offset): added "left"
argument to indicate the handedness
- cameo/path.h, cameo/path.c (path_tool_is_left): new function to determine
which way the path turns
- cameo/cameo.c: auto-detect handedness and instruct path_offset accordingly