summaryrefslogtreecommitdiff
path: root/ROADMAP
blob: 33b90a4110054a57cec9b3c7db7b701f1b5c2500 (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
cairo 1.0 release requirements
==============================
Implementation work
-------------------
✓I1. Fix clipping to be sane
	Status: Done (in cairo 0.9.0).

✓I2. Real PostScript/PDF fallbacks (cairo_meta_surface_t)
	Status: Done (to some extent) (in cairo 0.5.2)

		We do have PDF output now, and "real" PostScript
		output on a per-page basis when the capabilities of
		the PostScript imaging model aren't exceeded. There
		are a few parts of these backend that aren't complete,
		but that will have to wait for post-1.0 I'm afraid.

✓I3. Add support for sub-pixel (ARGB) rendering of text.
	Status: Done (in cairo 0.6.0).

✓I4. Fix the cache lock deadlocking problems.
	Status: Done (in cairo 0.9.2)

✓I6. Fix all expected failures (XFAIL) in the test suite. Either
     there's a bug that needs to be fixed, or there are illegitimate
     tests that should be removed.
	Status: Done. 5 XFAIL test remain, but 4 of those have results
	that are acceptable. The only with with completely broken
	output (a8-mask) only happens with A8 image surface masks with
	weird padding, (so it is easy to avoid).

API additions (more detail in TODO file)
----------------------------------------
✓A7. cairo_surface_mark_dirty and cairo_surface_flush
	Status: Done (in cairo 0.9.0).

✓A12. cairo_xlib_surface_set_drawable
	Status: Done (in cairo 0.6.0).

Performance work
----------------
✓ Lots of performance work was done, such as the MMX-ification of
  pixman, the addition of cairo-benchmarks, and several 2x improvements
  for tests within cairo-benchamarks. Many thanks to Billy Biggs!

Things that have been dropped from the 1.0 roadmap
==================================================
 A3. Add cairo_begin/end/get_group
	Difficulty: easy to hard (depending on how sophisticated an
	            implementation is acceptable, and whether the
		    cairo_meta_surface_t mentioned in [I2] is done)
	Status: cworth has a posted a preliminary patch, and keithp,
		krh, and otaylor answered all the tough questions it
		raised. There's not much work left to finish this one.

 I5. Finish the workaround for Render's overlapping source/dest bug
	(Copy the source as needed)

	The most important part of this was to workaround when doing a
	straight copy, (eg. for scrolling), and that much is done. The
	remaining case is things like overlapping OVER of a surface
	with itself, which doesn't seem useful enough to be a priority
	at this point.

 I7. Fine-grained PostScript fallbacks (cairo_meta_surface_t)
	Difficulty: Moderate to hard
	Status: cairo_meta_surface provides most of the
		mechanics. From here on out its mostly a matter of
		refining the fallbacks to work on a finer-grained
		basis than the current all-or-nothing-per-page
		approach.

 I8. Finish implementing the PDF/PostScript backends:
	Difficulty: Moderate to hard
	Status: Most everything is there, but there are few things in
		cairo that these backends don't yet implement:

		* Gradients with more than two stops

		* All of the cairo_operator_t modes

		* Gradient with transparency

		* Repeating surface patterns

		* cairo_mask

		Some of these could be handled by fallbacks, either as
		a stop-gap measuer, or permanently. But that will also
		depend on finishing up [I7].

 P2. Generate better trapezoids to go easier on the rasterizer
	Difficulty: moderate to hard
	Status: cworth drafted a plan to the list. vektor is looking
		at this, (or other similarly useful performance
		optimizations)

 P3. Glyph measurement needs to be sped up.
	Status: keithp and cworth planned this all out. keithp is
		working on this.