15 Future plans
This chapter documents the most important changes we plan in the future
releases. Some of them are partially implemented, some of them are only designed.
For the complete list of bugs, errors and planned features
look at VRR
Bugzilla (see Bug tracking system).
The VRRLIB is quite complete for our needs.
There are many possible ways, how to improve functionality of GEOMLIB.
The main plans for later versions of VRR
- Improve the effectiveness and geometrical stability of some computations for Bézier curves.
Some current algorithms may in some situations to fail find the correct solution.
When we try for example to find the intersection of a self-crossing cubic curve
(directly or indirectly with a split to a pair of curves),
the implemented algorithm does not find anything because of a zero resulting polynomial.
- Implement specialized geometrical methods for segments and other
supported curves to increase their performance. Now, almost every routine
invokes an expansion to Bézier curves.
- Implement NURBS as a new class. Rational Bézier curves are an equivalent
to NURBS, but it would be nice to allow creation of this popular curve type with
its many editing features.
- Add a direct support for parabolic and hyperbolic arcs.
There are already some unfinished functions, like creation of general
conics from 5 points. The solver of liner equation systems
could be used for many useful features.
- Finish the implementation of connected and unconnected sets in the plane with compound paths as a border (path sets).
Algorithm to compute planar arrangement of paths is already under construction.
- Implement expansion of a path with a given line style (width, ...) to outline with path set as the result.
At first, the algorithms should be computed the arrangement and then for each face create set of cyclic paths in a given offset.
- Implement a support for dashed curves (or general repeated patters).
- Improve the interface for VCL and write optimized functions for expanding curves to visible segments.
- And many more features ....
- First, we would like to implement the support of paths in the kernel.
There are some beginnings of the path support now, but almost everything
needs to be done yet. For example, we would like to do the following:
path operations, such as: join, split, subdivide, merge, union, ....
Heuristic functions which create a path from a given set of objects.
- The save/load mechanism is written in Scheme currently. That showed up to
be exteremely impractical, so we need to rewrite the code to C.
- We plan to extend the set of supported objects by various geometric
projections (translation, rotation, homothety, ...) and angular objects
to improve the geometric contruction capabilities of VRR
The GUI feature plans depend on the needs of other VRR
Namely, we plan to do the following:
- The path editing support. Now, the path manipulation is quite awkward.
- Redesign the GO Factory to be more powerful and elastic; its GO creating
capabilities are somewhat limited. We also plan to change the property value entering
mechanism to be more user friendly.
- Enable a better and intuitive manipulation with the geometric dependency structure so that
the user can keep track about the dependencies he has created.
- Speed up rendering of some curve types (circles, etc.).
- Better support for line styles.
- Draw edges with anti-aliasing support.
- Alpha blending.
- Implement our own font cache instead of the one provided by FreeType.
- Get rid of FreeType dynamic loading, as documented in
FreeType library usage.
- Finish the font decomposition into GEOMLIB curves.
- Implement the failure mechanism during plugin loading.
- Write more plugins.
15.8 Export and Import
In future versions, we would like to:
- SVG Import – support more SVG features like patterns, groups and cascading
- SVG Import – SVG elliptic arc is defined by start point, end point, two
radii and x-axis rotation. GEOMLIB in recent state is not able to work with
this type of arc and we expect to extend GEOMLIB functions to be able to
import this graphic objects.
- SVG Import and Export – improve the way we work with texts, correct the text positions.
- follow the future GEOMLIB functions and graphic object attributes,
like extended line styles (dashing, ...)
- SVG Export – improve the TeX text importing which is
limited in the recent version (we export only printable 7-bit characters).
- Simplify the snarfing process.
- Test input parameters for invalid values (for example infinite floating-point numbers).
We would like to satisfy all incentive suggestions reported by users and
remain in developing VRR