summaryrefslogtreecommitdiff
path: root/ROADMAP
blob: d979adbbb577c91f63bf705fb7e3c2c148c3e1a1 (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
cairo 0.5.2
===========
✓ Get tor to sign off that the win32 stuff is up to snuff
	✓ glyph path patch reviewed and committed

✓ Fix the BadMatch error introduced between 0.5.0 and 0.5.1:
	https://bugs.freedesktop.org/show_bug.cgi?id=3604

	(It turns out this was just exposing an old bug in libpixman
	 0.1.4 which is already fixed in libpixman 0.1.5)

  Add a workaround for Render's overlapping source/dest bug
	✓ Use XCopyArea when possible (integer translation)
	  Otherwise make a copy of the source

  Fix the cache lock deadlocking problems.
	Difficulty: Hard
	Status: The cache code was ugly enough that I ended up doing a
		major rewrite rather than just reviewing the
		locking. The upside is that the rewrite should also
		add the missing metrics caches which will fix some
		performance problems with text measurement. Almost
		done now.

cairo 1.0 release requirements
==============================

Implementation work
-------------------
 I1. Fix clipping to be sane
	Dificulty: moderate
	Status: cworth has started looking at this

 I2. Real PostScript/PDF fallbacks (cairo_meta_surface_t)
	Difficulty: hard
	Status: krh has committed cairo_meta_surface_t and a preliminary
		version of cairo_ps_surface_t that uses it.

 I3. Add support for sub-pixel (ARGB) rendering of text.
	Status: keithp walked cworth through this. Patch sent to the
		list is almost complete.

API Issues (more detail in TODO file)
-------------------------------------
✓A1. Add cairo_paint
	Difficulty: moderate or moderate to minor
	Dependencies: much easier after [I1]. needs some cleanups from [A4]
	Status: Done

✓A2. Add cairo_mask
	Difficulty: moderate
	Status: Done

 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.

✓A4. Make set_source consistent
	Difficulty: easy
	Dependencies: needs [A2,A3] to avoid losing functionality,
		      (but we may just live with that as we've now got
		       a circular dependency)
	Status: Done.

✓A5. Add cairo_clip/fill/stroke_preserve
	Difficulty: easy
	Status: Done.

✓A6. Just eliminate a bunch of functions:

	✓ cairo_set_target_*
	✓ cairo_copy
	✓ cairo_surface_set_repeat/matrix/filter
	✓ cairo_show_surface

	Difficulty: trivial
	Dependencies: eliminating cairo_show_surface depends on [A1]
	Status: Done.

 A7. cairo_surface_mark_dirty
	Difficulty: trivial to add API, moderate to actually optimize
		    based on it
	Status: cworth has sent API proposal to list

✓A8. cairo_content_t:
        Difficulty: moderate. It's just going through and examining 
                    each use of cairo_format_t, but there are a lot
                    of them.
        Status: Done.

 A9. consistent error handling for all objects
	Difficulty: Easy to implement to get the API right. Hard to test.
	Status: Done for cairo_t, cairo_path_t, and cairo_pattern_t.
	        Still need to do cairo_font_face_t,
		cairo_scaled_font_t, and cairo_surface_t.

 A10. cairo_font_options_t
	Difficulty: Moderate
	Status: Owen has done all the hard thinking, and we've got
		consensus on the API now. Owen's working on a patch.

 A11. cairo_xlib_surface_create needs to be screen-aware
	Difficulty: Easy
	Status: Keith has cooked up a patch with an APi that should be
		sufficient. It still needs testing on multi-screen X
		server.

 A12. cairo_xlib_surface_set_drawable
	Difficulty: Easy
	Status: Keith has a patch sitting ready on the list.

Performance work
----------------
✓P1. Make pixel-aligned rectangle compositing fast
	Difficulty: moderate to easy
	Status: Done.

 P2. Generate better trapezoids to go easier on the rasterizer
	Difficulty: moderate to hard
	Status: cworth drafted a plan to the list

 P3. Glyph measurement needs to be sped up.
	Status: Now planned as part of "cache lock deadlock" above.