ePiX 1.1.x Andrew D. Hwang 2007-08.03 (ADH) Version 1.1.9 * flix.in: (flix_png) Pass tmax to bc, don't let shell evaluate * path_data.c: (photo) Print filled only if >= 3 non-null edges 2007-08.02 (ADH) * spline.cc: (data) Indexing errors; increase max indices by 1 * data_bins.cc: (plot) Use 20 intervals per spline - (bar_chart, histogram, plot): Check for sero population - (bar_chart) Bar height = frac of population in bin - (histogram) Box height = frac of pop per horizontal unit - (pop) Implement function * path_style.cc: (path_state(string)) Fix test for solidity * README-changes, README-porting: Removed 2007-08.01 (ADH) * functions.h: Remove "D", "I" aliases for Deriv, Integral * functions.cc: (recip) Return 1.0/x (sec, csc, tan have poles) * functions.cc, functions.h: Remove nine lowercase trig functions * plots.cc: D -> Deriv, I -> Integral * triples.h: Remove "triple" alias for P * triples.cc, triples.h: New member function is_valid() - (midpoint) Remove function * circle.cc: Replace P::midpoint * elaps.in: Keep eepic file, back up existing file if any - Unset EPIX_OUTFILE, EPIX_OUTROOT on loop exit - Print informative (but fake) lines on latex/dvips failure * curves.cc, curves.h: (spline(vector

, int)) New function * data_bins.cc: (plot) Draw piecewise-cubic spline, not n_spline 2007-07.31 (ADH) * crop_algorithms.h: (loopify) - Increment twice after insertion - Erase lone edge correctly * markers.cc, markers.h: (h_axis_tick, v_axis_tick) Alignment option - (h_axis, h_log_axis, v_axis, v_log_axis) Alignment option * label_data.cc, label_data.h: (label_data(P, mark_type)) Accepts alignment option * eepic.cc: (print_mark) Handle alignment * pst.cc: (print_mark) Handle alignment - (print_edges) Use pspolygon for closed paths * path_data.cc, path_data.h: New constructor from list of edge3d - (is_closed, is_filled) Move body to source file - vector

, list constructors do not fill unless closed * plot_algorithms.h: (plot_map_dom, euler_plot) Build plots from edges, not vertices - (plot_map_dom) Don't close or fill surface/solid plots 2007-07.30 (ADH) * circle.cc, circle.h, plane.cc, plane.h, segment.cc, segment.h, sphere.cc, sphere.h: - Remove intersection member operators - Add bool malformed member, constructor for malformed objects - Intersection operators do not throw * intersections.cc, intersections.h: New files, handle intersections of object classes * make_header: Add intersections.h 2007-07.29 (ADH) * errors.h: Remove error type enums * data_file.cc: (write(fmt)) Column indices reversed in try block * curves.cc: (ellipse_left, ellipse_right) Correct angle bounds * path.cc: Ellipse constructor creates path containing specified number of edges * markers.cc: marker(P, circ) calls circ - masked log axis labels - log axis labels accept optional base argument * eepic.cc, pst.cc: BOX and DOT, BBOX and DDOT of the same size - Label padding works more similarly to PSTricks * pst.cc: (print(label_state, string)) If no label border, set linestyle=none * glyph.cc: (print_to) Handle font face * constants.h: AVG_DOT=4 (was 2), AVG_TICK=3 (was 2) - Arrow head parameter bounds (MIN_AWIDTH, MIN_ARATIO, etc.) * arrow_style.cc, arrowhead_style.h: - Handle bounds on arrow head dimensions - (width, ratio, camber, fill) Return arrowhead_state& (not void) * state.cc: (dash_size) Pass unchecked argument to path_state - (dot_size, tick_size) Pass unchecked argument to marker_state * marker_style.cc: (dot_size, tick_size) - Handle unchecked arg - Return marker_style& (not void) * path_style.cc: (dash_size) Handle unchecked arg 2007-07.28 (ADH) Version 1.1.8 * eepic.cc: (print(label_state, string)): Fix masklabel padding * markers.cc: Don't pad axis labels with \phantom{-} * camera.cc: No warning if point is behind film plane * screen_data.cc: backing(), border() activate cropping * data_file.cc: (read) Don't try to read empty files - (column) Check for empty m_data 2007-07.22 (ADH) * data_mask.cc: (reverse) return *this * length.cc: (get_lengths) Initialize len1, len2 * crop_algorithms.h: (loopify) If only one edge is visible, return empty edge list. 2007-07.19 (ADH) * edge_data.h: Rename seen() -> is_seen(), null() -> is_null() * crop_algorithms.h, pen_fill.cc, pen_line.cc: seen() -> is_seen() * pen_arrow.cc, pen_arrow.h: Remove member m_at_base (unused) - (crop_to) Shaft visibility bug - (print_to) Draw ddot if head, tail project to same location * arrow_data.cc, arrow_data.h: Remove member m_at_base (unused) - Remove clip() function (constructor applies automatically) - seen() -> is_seen() * format.h, eepic.h, pst.h: (print_arrow) Omit alignment argument * eepic.cc, pst.cc: (print_arrow) Change signature, reimplement - seen() -> is_seen() * constants.h: Names in all caps - New constants MIN_CLIP, TWO_PI - BBOLD_WIDTH is 1.2pt (was 1.6pt) * angle_units.cc, hatching.cc, marker_style.cc, path_style.cc, state.cc: Use capitalized constants * camera.cc, camera.h: Use MIN_CLIP - Rename function to_front() -> clip_plane() 2007-07.17 (ADH) * crop_algorithms.h: New file for path-chopping templates * halfspace.cc, halfspace.h: Remove private member functions - Use crop_algorithms.h * screen_crop.cc, screen_crop.h: New files for crop_path_2nd, crop_loop_2nd (from edge_data.cc) * edge_data.h: Move crop_path_2nd, crop_loop_2nd to screen_crop.cc (file contains only template class and two typedefs) * edge_data.cc: Remove file 2007-07.16 (ADH) * state.cc: (fill(true)) Set fill color to White() if unset * halfspace.cc, halfspace.h: (clip_path) Out-of-order bug - Move constructor body from header. 2007-07.14 (ADH) Version 1.1.7 * eepic.cc, eepic.h, pst.cc, pst.h: Implement path styles - (print_edge, print_edges) New functions - (print_line) Implement in terms of print_edge - (print_verbatim): New function * verbatim.cc, verbatim.h: New files, implementing tile class for verbatim output to file * picture.cc, picture.h: (write, pre_write, post_write) New functions to write verbatim strings to output * screen.h: Declare global "write" function a friend * picture_data.cc, picture_data.h: Add support for pre- and post-written strings in output * constants.h: Default axis ticks 4pt long 2007-07.13 (ADH) * path_style.cc, path_style.h: Interface redesign - String-parsing implementation - Use constants.h * marker_style.cc: Use constants.h * state.cc: Reimplement path style functions - Use constants.h - (dash_size) New function - (dash_fill, dash_length) Functions removed - (pen(Color, double), base(Color, double)) New functions * label_data.cc: Constructors set tick mark color to line color * edge_data.h: (length) New member function 2007-07.08 (ADH) * markers.cc: (h_axis, h_axis_labels, v_axis, v_axis_labels) If no endpoints are specified, use dimensions of active screen * curves.cc: (grid, log_grid) If corners not specified, use corners of active screen * pst.cc: (print_arrow) Draw head manually (print_line) Use PSTricks border attribute in two-pen versions (update_base) Bug fixes * facet.cc, facet.h: New files * surface.cc: Factor out utility classes facet, by_distance - Support domain-dependent coloring * path_data.cc: (photo) Print unfilled paths in chunks of 250 points to ameliorate LaTeX overflow 2007-07.07 (ADH) Version 1.1.6 * surface.cc, surface.h: Support position-dependent coloring 2007-07.06 (ADH) * eepic.cc, pst.cc: (print(style, string)) Fix alignment bug (print_mark) No padding, border * screen.cc, screen.h, screen_data.cc, screen_data.h: (is_cropped) New function to add support for label cropping * format.h, eepic.cc, eepic.h: Change signature of pic_header * pst.cc, pst.h: Add support for label cropping * picture_data.cc: (print_to) Pass crop flag 2007-07.05 (ADH) * markers.h: (h_axis_log_labels, v_axis_log_labels) Align argument defaults to none * picture.cc, picture.h: (eepic, pst) New functions to set output format. (mp, pgf, svg stubs written.) * camera.cc: (to_front) Min clip distance is 0.01 * path_data.cc: (photo) Clip by camera.to_front() 2007-07.04 (ADH) * pst.cc, pst.h: New files * eepic.cc: Implement label borders and padding * state.cc, state.h: (new functions) - plain(Color), bold(Color), bbold(Color), set line Color/width - rgb(P), cmyk(P), use components as densities - New functions to set label attributes . label_color(Color); . label_pad(string); . label_border(Color, [string]), label_border(string); . no_label_border(); * curves.cc, curves.h: (draw_rect, swatch, rect(P, P, bool), draw_polar_grid) Remove functions * domain.cc, domain.h: - No default domain constructor - New constructor domain(P, P, mesh) - Inline 1-dim'l constructor moved to cc file - domain data members made private New functions corner1_x1(), coarse_n1(), etc. - "Net" typename removed * plot_algorithms.h, plots.cc, surface.cc: Use domain state functions * data_bins.cc, data_bins.h: (bar_chart) New function * data_file.cc, data_file.h: New global functions - plot(filename, mark_type, col1, col2, col3, [F]) plot(filename, mark_type, F, col1, col2, col3) - histogram, bar_chart 2007-07.03 (ADH) * dataplot.cc, dataplot.h: Break up and remove files * data_bins.cc, data_bins.h, data_file.cc, data_file.h, data_mask.cc, data_mask.h, interval.cc, interval.h: New files * samples: Remove sample document * doc: Update 2007-06.28 (ADH) * circle,cc, circle.h: - Rename class -> Circle - Remove m_filled data member, fill operator - Remove translation, scaling operators += and *= - (translate) Rename "shift" - (move_to) New function - Circle::draw() fills according to current paint style - (circle) New functions which draw automatically * sphere.cc, sphere.h: - Rename class -> Sphere - Remove translation, scaling operators += and *= - (shift, move_to, scale) New functions - (poles) Remove global function - (sphere) New functions which draw automatically * plane.cc, plane.h: - Rename class -> Plane - (shift, move_to) New functions - Remove translate, separates, parallel_to, contains, height functions - (draw) Reimplement * segment.cc, segment.h: - Rename class -> Segment - (shift, move_to, scale) New functions - Remove translation operator += * path.cc, path.h,path_data.cc, path_data.h: Update class names Circle, Plane, Segment, Sphere * polyhedron.cc, polyhedron.h: Remove files 2007-06.25 (ADH) * contrib: Remove package * surface.cc: (facet) Class contains a normal vector, (facet::front_facing) Use normal vector to test 2007-06.25 (ADH) * surface.cc: (facet::draw) Use "direction" to compute density * path.cc: (ellipse constructor) Don't close/fill automatically * curves.cc: (ellipse) Close/fill if appropriate * format.h, eepic.cc, eepic.h: (file_comment) New function * picture_data.cc, picture_data.h: (file_header) Move to format.h * path_data.cc, path_data.h: (draw) Implement base pen, draw filled regions with both pens * state.cc, state.h: Functions to control drawing state - pen(Color, [string]), base(Color, [string]) - fill(Color) * doc/manual.tex: Update 2007-06.20 (ADH) Version 1.1.5 * pen_arrow.cc, pen_arrow.h: Store shaft as edge, not as two pairs * format.h, eepic.cc, eepic.h: (print_arrow) Adjust call syntax * mask_diamond.cc, mask_ellipse.cc: (crop_to) Fix crop criterion * geometry.cc, geometry.h: Re-implement spherical geometry * sphere.cc, sphere.h: (latitude, longitude) Move to geometry.* * functions.cc, functions.h - Remove templates for id, zero, proj1, proj2, min, max (put id, proj1, proj2 in map.h) - Implement "zero" function with four call signatures * plots.cc: (shadeplot) Path closure bug * path.cc: (ellipse constructors) Close and fill if appropriate * markers.cc: (arrow) Re-implement labeled arrow * label_data.cc, label_data.h: Add visibility flag * glyph.cc: (print_to) Implement font_size * edge_data.cc: (crop_path_2nd) Loop processing bug 2007-06.19 (ADH) Version 1.1.4 Clipping and cropping work. Elliptical and diamond-shaped screen masks are implemented. 2007-06.03 (ADH) Version 1.1.3, first public release Implements ePiX-2's color capabilities, including named models (RGB, CMY, CMYK, and Gray), color blending, filtering, CMYK separation, limited transparency, color filling and colorable arrows in eepic, decorable screens, and page markup. The global parameters x_min, etc., should be replaced with function calls, e.g. xmin(), from now on. Aside from this, the syntax is backward compatible with Version 1.0.x.