- 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
- solidify/project.h (struct project), solidify/project.c (make_project,
load_project, save_project): allow project descriptions to begin with
any numer of comment lines and preserve them across sessions
- solidify/face.h (struct face), solidify/face.c (read_file): keep the mesh's
maximum Z size in sz, similar to sx and sy
- solidify/povray.c (povray_face): use f->sz insead of calculating it
main.pov
- solidify/povray.c (povray_face): added inclination of the z0 plane
- solidify/povray.c (povray_face): added overlap transform (rotation and
shift)
- solidify/povray.c (povray_face): added comments to all the POV-Ray
commands
- solidify/batcvr.sfy: battery cover example (almost looks good)
- solidify/main.pov: added second light source slightly below the xy plane
- solidify/main.pov: use "object" instead of "union" to place the part
- solidify/main.pov: make material less transparent (50% -> 20%)
- solidify/main.pov: added second battery cover, showing edge and bottom
- solidify/overlap.c (merge_matrix): don't shrink the offset vector
- solidify/project.c (read_face_data): the value to assign to f->z_ref
needs rounding or truncation will go wrong from time to time