From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- src/3rdparty/2geom/TODO.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/3rdparty/2geom/TODO.md (limited to 'src/3rdparty/2geom/TODO.md') diff --git a/src/3rdparty/2geom/TODO.md b/src/3rdparty/2geom/TODO.md new file mode 100644 index 0000000..697a044 --- /dev/null +++ b/src/3rdparty/2geom/TODO.md @@ -0,0 +1,85 @@ +# Code Health: + - Rewrite old tests using Google Test Framework. + - Add more unit tests. Ideally, every method should be tested. + - More Doxygen documentation. Document algorithms used to implement each + nontrivial method, preferably with pictures. + - Coding style. + - Rewrite or remove old junk. + +# Primitives: + - Add uniform points - Geom::UPoint. + - Add projective transformations - Geom::Projective. + - Add rational Bezier fragments / curves - Geom::D2U + +# Shapes: + - Geom::Triangle + - Geom::Quad + - Geom::Polygon + - Function that computes an Affine that maps between triangles. + - Function that maps between Rects. + - Function that maps between Ellipses (no skew). + +# Path / PathVector: + - Built in support for arc length parametrization, computed on demand. + - Boolean operations accessible via operators: &, |, / (or -), ^ + - Uncrossing. + - Conversion from nonzero winding rule to even-odd winding rule. + - Dashing - requires arc length parametrization. + - Offset. + - Stroke-to-path. + - Minkowski sum. + - Functions to facilitate node editing without conversion to a node list. + - Approximation of arbitrary paths with cubic Beziers, quadratic Beziers + or line segments, available as a path sink. + - Approximation by lines and circular / elliptical arcs. + - Support for per-node and per-segment user data? + +# Fragments: + - Convert all uses of std::vector to D2 where applicable. + - Consider adding push_back() for incremental building of Beziers. + - Implement Bezier versions of SBasis methods. + +# Toys: + - Better Bezier / SBasis handles. + - Use GTK 3 to provide widgets such as checkboxes and buttons (?) + +# Other: + - sweeper.h: add variants of Sweeper that accept void Item + and add a version that does sweepline over two lists rather + than one. + - Rewrite conic section code to match coding style. + - Rewrite QuadTree and RTree to make them actually usable. + - BSP tree. + - Interval tree - Geom::IntervalSet, Geom::IntervalMap + - Geom::MultiInterval + - Using the above, add regions, as seen in Cairo. + - Add some basic 3D functionality, enough to draw a 3D box. + - Write GDB pretty printers for all core classes. See the directory "tools" + - Clothoid support (clothoids where the curvature is a not-necessarily linear + function, perhaps piecewise SBasis, add fitting) + - Special geometric shapes (stuff like circles, oriented rectangles, spirals, + triangles, regular polygons, inkscape-like polygons, etc) + - Constraint system for advanced handle stuff + - complete and tidy up intersection apis + - complete offset implementation: at this stage only the hard part has been + implemented + - conic sections: we currently support line and ellipse from xAx form, add + parabola and hyperbola; intersection + - NURBS (2geom handles division approximation of polynomials, code just needs + to be added to convert between standard forms (say x/w, y/w in bernstein and + pw>(t)) + - T-mesh form for 2D (and higher?) piecewise polynomials + - enhance contour tracing algorithm (sb-2d-solver) + - transform an svg stroke in an outline (extends offset curve code to handle + SVG options) + - variable width curve tracing (variant on path along path idea) + - collinear tangent (find a line that smoothly connects two curves); extension + of bezier clipping idea + - transform a path into a single curve (fitting) - improvements required + - exploiting modern architecture features (cache coherence, multi-core, packet + instruction set, gpgpu) + - finish boolops (use faster and more robust sweep-window algorithm, add + support for dB @ dB, dB @ B, B @ B where @ is any of the 16 boolean operators + that make sense) + - bucket fill (variant of bool ops for bucket filling) + - path topology and numerical soundness graph -- cgit v1.2.3