- 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
- solidify/overlap.h, solidify/overlap.c (edit_top, overlap_edit): select
the face to rotate and shift
- solidify/overlap.c (scroll_event): select face to manipulate based on
edit_top
- solidify/solidify.c (a_b, gui_buttons): new button B+A to select the
bottom face for editing
- solidify/solidify.c clicked): call overlap_edit to select face to edit
- solidify/level.c (level): increase gap between table cells from 2 to 4
pixels for better visual separation of projections
- solidify/style.h (OVERLAP_BORDER): increased from 10 to 30 pixels
- solidify/style.h (PROJECTION_BORDER): number of pixels to leave dark above
and below the face
- solidify/level.c (draw_xz, draw_zy, level): increase projection z size by
twice the border width
- solidify/level.c (draw_xz, draw_zy): offset z coordinates by the border
- solidify/level.c (draw_xz, draw_zy): use f->sz-1 instead of zm as maximum
value
- solidify/level.c (draw_xz, draw_zy, level): scale z axis by step size
ratio
make it easier to discern where is up and where is down.
- solidify/gui_util.h, solidify/gui_util.c (hpoint, vpoint, alpha, aa_line):
draw horizontal or vertical lines with anti-aliases beginning and end
- solidify/level.c (draw_xz, draw_zy): instead of drawing thin lines for z
and z0, show a filled surface of the difference
- solidify/util.h, solidify/util.c (draw_circle), solidify/gui_util.h,
solidify/gui_util.c: moved draw_circle from util.c to gui_util.c
- solidify/util.c: this file is now empty. Remove it.
- solidify/level.c, solidify/overlap.c: include gui_util.h instead of
util.h
- solidify/Makefile: replace util.o with gui_util.o
- solidify/level.c (expose_event, level): renamed expose_event to
expose_event_xy, for consistency with new expose event handlers
- solidify/level.c (expose_event_xz, expose_event_zy, level): added expose
event handlers for the auxiliary projections
- solidify/level.c (level): the drawing areas receive an expose event when
becoming visible, so there's no need to explicitly initilize them
- solidify/face.h (z0_scale, fx_to_angle, fy_to_angle, fx_from_angle,
fy_from_angle): correct for z vs. xy scale differences
- solidify/overlap.c (merge_matrix): correct z0 shrinkage for z vs. xy
scale differences
Example:
make NAME=lcdframe D=0.8 TOP=front BOTTOM=back new
- solidify/Makefile (new, run, pov, disp): test run targets can now be
configured by setting make variables on the command line
- solidify/main.pov: renamed to template.pov and changed all occurrences of
"batcvr" to "NAME"
- solidify/Makefile: generate main.pov from template.pov
- solidify/povray.c (povray_face), solidify/project.c (read_face_data): x
inclination of the z0 plane was reversed in POV-Ray output and in the
project file
- solidify/Makefile: use povray +P, to keep showing the image when done
- solidify/main.pov: moved lower light source from x- to x+ and lowered it a
bit more
- solidify/main.pov: doubled the intensity of the ambient light
- solidify/main.pov: rotate the part in xy and add a thin red plane to help
with assessing the accuracy of z0 inclination (the top of the battery
cover turned out to be very difficult to get right with solidify alone)
- solidify/main.pov: added a third view of the part
- solidify/level.c (xz, draw_xz, motion_notify_event, level): show a
projection on a xz plane at the cursor position
- solidify/level.c (zy, draw_zy, motion_notify_event, level): show a
projection on a zy plane at the cursor position