Opened 15 years ago
Last modified 6 years ago
#733 new enhancement
display lib: support for curveto
Reported by: | hamish | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 7.6.2 |
Component: | Display | Version: | svn-trunk |
Keywords: | Cc: | ||
CPU: | All | Platform: | All |
Description
Hi,
it would be nice if the display library had a D_curve_abs() and D_curve_rel() functions to handle Bezier Curves. Among other things this would make displaying EPS/SVG/DXF graphics directly on the display monitor/canvas/whatever you want to call it now a whole lot easier. I am not sure if it is better to expose a variable to control the number of vertices along the line to be produced, or for the display lib to decide that dynamically. I assume the coord input needs would be 3 or more pairs of coords. Again, not sure if either be like D_polyline_*() and require a "int n" argument or just have it loop while coord[] != NULL.
In the short term it could immediately be added to d.graph as a new curve
instruction and as a demonstration/testbed. (See the LIMITATIONS section of the d.graph man page)
I expect the cairodriver and psdriver could use it directly, but not sure of GIS uses for it beyond decorations. Hmmm... new line drawing tool in wxVdigit?
thanks, Hamish (who has just spent more time than I care to calculating vertices by hand)
Change History (9)
comment:1 by , 15 years ago
comment:2 by , 9 years ago
Milestone: | 7.0.0 → 7.0.5 |
---|
comment:3 by , 8 years ago
Milestone: | 7.0.5 → 7.3.0 |
---|
comment:6 by , 6 years ago
Milestone: | 7.4.1 → 7.4.2 |
---|
comment:7 by , 6 years ago
Milestone: | 7.4.2 → 7.6.0 |
---|
All enhancement tickets should be assigned to 7.6 milestone.
Replying to hamish:
Are you volunteering to update the clipping/culling code to handle Bezier curves?
Are you planning on having the application supply explicit control points, or have the display library determine the tangents itself?
For the former, an open path with N segments requires 3N+1 vertices (versus N+1 for a polyline), while a closed path requires 3N (versus N). For the latter, the number of vertices remains unchanged.
None of the drivers can use anything directly, because: