summaryrefslogtreecommitdiff
path: root/TODO
blob: c44c5f4c56a63d50a188f336c1cf4acd900e2ace (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
This file contains a list of some things that have been suggested

Changes that are expected to impact the public API
==================================================

 Patch submitted to mailing list?
/ Documentation included in patch?
|/ Review of patch completed?
||/ Test case included?
|||/ Committed.
||||/
Backwards compatible (API additions only)
-----------------------------------------
	Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD
	Add support for programmatic patterns, (ie. arbitrary gradients)
P	Add cairo_arc_to.
	Add support for custom caps (see below for details)
	Add CAIRO_STATUS_DESTROYED
	Add cairo_finish
	Add cairo_get_scaled_font

Details on some of the above changes
------------------------------------
* support for custom caps:

  It would be nice if the user had a mechanism to reliably draw custom
  caps. One approach here would be to provide the coordinates of the
  butt cap faces so that the user can append seamless caps to the
  current path. We may also need to provide the coordinates of the
  faces of every dash as well.

Changes that do not affect the public API
=========================================
* Change stroke code to go through one giant polygon. This will fix
  problems with stroking self-intersecting paths.

* Fix the intersection problem, (see reference to Hobby's paper
  mentioned in cairo_traps.c).

* Should add geometry pruning as appropriate.

* Fix/define tolerance for PS/PDF/SVG backends

Other changes (this text used to be in RODMAP)
==============================================
 Fairly severe bugs
     6806  cairo 1.0.4 crash progressbar in window
     PDF: minefield shows too-tiny bitmapped fonts in image fallback
     PDF: minefield shows strangely hinted glyph shapes (only without truetype subsetting)
     PDF: minefield has broken selection (only with truetype subsetting code)
     4630  Fonts too large when drawing to image surface while printing
     4863  stroking problems with wide dashed lines
     7497 _cairo_color_compute_shorts fails with FPU set to single ...

 Fix all expected failures (XFAIL) in the test suite
     a8-mask
     extend-reflect
     filter-nearest-offset
     leaky-dash
     self-intersecting
     text-rotate

 Fix disabled tests in the test suite
     show-glyphs-many

 Win32 backend
    ✓1. Incorporate into test suite
     2. Correct output for the entire suite
	 a. self-copy
	 b. trap-clip
	 [There is some mailing-list discussion about possible fixes
	 for these.]

 New API
     cairo_arc_to
	see http://lists.freedesktop.org/archives/cairo/2005-August/004801.html
	or see arc_to branch in bedhad's repository

 PS/PDF improvements
     1. Make image fallbacks finer-grained than a whole page
     2. Ensure that PDF text output is "selectable"

 Quartz backend (maintainer needed!)
     1. Mark Quartz backend as supported:
	 a. Incorporate into test suite
	 b. Correct output for the entire suite

 Misc
     1. xlib backend requires xrender to compile, while it can perform without
        xrender at run time.  Make it compile without it.

Some known bugs (this text used to be in BUGS)
==============================================
XXX: Many of these bugs are likely no longer valid. We should
invesitgate each and either move it up into TODO (above) or ROADMAP or
else just delete it.

--

The caches need to be invalidated at font destruction time.

--

The polygon tessellation routine has problems. It appears that the
following paper has the right answers:

	http://cm.bell-labs.com/cm/cs/doc/93/2-27.ps.gz

	[Hobby93c] John D. Hobby, Practical Segment Intersection with
	Finite Precision Output, Computation Geometry Theory and
	Applications, 13(4), 1999.

Recent improvements to make the intersection code more robust (using
128-bit arithmetic where needed), have exposed some of the weakness in
the current tessellation implementation. So, for now, filling some
polygons will cause "leaking" until we implement Hobby's algorithm.

--

Stroke extents might not work for degenerate cases, (e.g. single
vertical or horizontal line).

--

Stroke width of 0 might do bad things.

--

Could there be a bug in PS backend exposed by?:

cairo_save
cairo_clip
cairo_restore
...

This needs a new testcase.

--

This puts the cairo_t in an error state:
cairo_scale (cr, 0, 0);

--

Text drawn with vertical metrics cannot currently use TrueType
subsetting for PDF/PS output as the code doesn't write out the necessary
VHEA or VMTX entries to the TrueType font objects. As a result, cairo uses
Type3 fonts which generates slightly different outlines.

--

Text transformations is a mess in PS/PDF backends.  Many combinations of
rotated/scaled ctm, rotated/scaled font_matrix, and subsetting code used
(Type1/Type3/TrueType) are broken.