~ubuntu-branches/ubuntu/breezy/libcairo/breezy-security

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Bazaar Package Importer
  • Author(s): Dave Beckett
  • Date: 2004-05-29 21:10:58 UTC
  • Revision ID: james.westby@ubuntu.com-20040529211058-h596wztdkmpvul0k
Tags: upstream-0.1.23
ImportĀ upstreamĀ versionĀ 0.1.23

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
* Clean up the API in preparation for freezing and release.
 
2
 
 
3
* Implement a PDF backend.
 
4
 
 
5
* Make a more interesting PS backend, (other than the current
 
6
"giant-image for every page" approach).
 
7
 
 
8
* Figure out what to do with DPI for image/png backends.
 
9
 
 
10
* Change stroke code to go through one giant polygon. This will fix
 
11
problems with stroking self-intersecting paths.
 
12
 
 
13
* Implement cairo_stroke_path, (very easy to do after the above change
 
14
is done).
 
15
 
 
16
* Re-work the backend clipping interface to use geometry rather than
 
17
images.
 
18
 
 
19
* Fix the intersection problem, (see reference to Hobby's paper
 
20
mentioned in cairo_traps.c).
 
21
 
 
22
* Add a new cairo_text_glyphs function (a sort of bridge between the
 
23
toy and the real text API):
 
24
 
 
25
        >       void
 
26
        >       cairo_text_glyphs (cairo_t *cr, const unsigned char *utf8,
 
27
        >                          cairo_glyph_t *glyphs, int *num_glyphs);
 
28
        >
 
29
        > with num_glyphs as an input-output parameter. The behavior of this
 
30
        > function would be such that calling:
 
31
        >
 
32
        >       cairo_text_glyphs (cr, string, glyphs, &num_glyphs);
 
33
        >       cairo_show_glyphs (cr, glyphs, num_glyphs);
 
34
        >
 
35
        > would be equivalent too:
 
36
        >
 
37
        >       cairo_show_text (cr, string);
 
38
        >
 
39
        > as long as the original size of glyphs/num_glyphs was large
 
40
        > enough.
 
41
 
 
42
* Implement dashing for cairo_curve_to.
 
43
 
 
44
* Implement support for programmatic patterns, (ie. figure out how to
 
45
do gradients the Right Way).
 
46
 
 
47
* Implement cairo_arc_to.
 
48
 
 
49
* Fix support for old X servers so that it is not swamped with image
 
50
transport. The key idea is to assume that nothing external to cairo
 
51
will be drawing to the same drawable after it is handed to
 
52
cairo. Beyond that, we might actually provide support for cooperating
 
53
with external entities by adding one or more of the following
 
54
functions:
 
55
 
 
56
   cairo_flush
 
57
   cairo_erase
 
58
   cairo_mark_dirty
 
59
 
 
60
* Re-implement the trapezoid rasterization algorithm according to the
 
61
new "specification".
 
62
 
 
63
* Stroking closed, degenerate paths should still draw caps.  Round
 
64
caps are easy; square should probably draw an axis aligned square.
 
65
 
 
66
* Verification, profiling, optimization.
 
67
 
 
68
A comparison with PostScript
 
69
============================
 
70
 
 
71
Here's a list of several classes of PostScript operators indicating
 
72
which operators have rough equivalents in cairo and which do not. In
 
73
general, the name of a cairo function corresponding to a PostScript
 
74
operator can be obtained by inserting a '_' between each word and
 
75
prefixing it with "cairo_". For example, "cairo_move_to" corresponds
 
76
to the PostScript "moveto".
 
77
 
 
78
In cases where the name of the cairo function deviates from this
 
79
convention, or when the behavior of the cairo function is
 
80
significantly different, the change is noted in parentheses below.
 
81
 
 
82
This list is not exhaustive, (there are definitely some minor (major?)
 
83
semantic deviations that are not noted below). Also, this list is
 
84
almost certainly out of date with respect to the current cairo
 
85
implementation. Caveat lector.
 
86
 
 
87
Operators that are not yet in cairo, but probably should be: arcto,
 
88
strokepath, rectclip?, clipsave/restore?, setstrokeadjust?,
 
89
currentdash, grestoreall?, initgraphics?, currentgstate?, setgstate?,
 
90
erasepage?, setsmoothness?
 
91
 
 
92
Painting operators
 
93
------------------
 
94
in cairo: stroke, fill, eofill (set_fill_rule/fill), image
 
95
(show_surface)
 
96
 
 
97
not in cairo: erasepage, rectstroke, rectfill, shfill, colorimage,
 
98
imagemask
 
99
 
 
100
Path construction operators
 
101
---------------------------
 
102
in cairo: arc, arcn (arc_negative), newpath, moveto, rmoveto
 
103
(rel_move_to), lineto, rlineto (rel_line_to), curveto, rcurveto
 
104
(rel_curve_to), closepath, currentpoint, charpath (text_path),
 
105
pathforall (current_path), flattenpath (current_path_flat)
 
106
 
 
107
not in cairo: arct, arcto, reversepath, strokepath, clippath, pathbbox
 
108
 
 
109
Clipping
 
110
--------
 
111
in cairo:  clip, eoclip (set_fill_rule/clip)
 
112
 
 
113
not in cairo: initclip, rectclip, clipsave, cliprestore
 
114
 
 
115
Graphics state operators
 
116
------------------------
 
117
in cairo: setlinewidth, currentlinewidth, setlinecap, currentlinecap,
 
118
setlinejoin, currentlinejoin, setmiterlimit, currentmiterlimit,
 
119
setdash
 
120
 
 
121
not in cairo: setstrokeadjust, currentstrokeadjust, currentdash
 
122
 
 
123
Color specification operators
 
124
-----------------------------
 
125
in cairo:  setrgbcolor, currentcolor
 
126
 
 
127
not in cairo: setcolor, setgray, currentgray, currentrgbcolor,
 
128
sethsbcolor, currenthsbcolor, setcmykcolor, currentcmykcolor,
 
129
setcolorspace, currentcolorspace
 
130
 
 
131
Form and pattern operators
 
132
--------------------------
 
133
in cairo: setpattern, makepattern (lock_pattern)
 
134
 
 
135
not in cairo: execform
 
136
 
 
137
Whole-state manipulation
 
138
------------------------
 
139
in cairo:  gsave (save), grestore (restore)
 
140
 
 
141
not in cairo: grestoreall, initgraphics, gstate, currentgstate,
 
142
setgstate
 
143
 
 
144
Coordinate system and matrix operators
 
145
--------------------------------------
 
146
in cairo: identmatrix (identity_matrix), initmatrix (default_matrix),
 
147
setmatrix, translate, scale, rotate, concatmatrix, currentmatrix,
 
148
transform (transform_point), dtransform (transform_distance)
 
149
 
 
150
not in cairo: matrix, defaultmatrix, concat, itransform, idtransform,
 
151
invertmatrix
 
152
 
 
153
Insideness testing
 
154
------------------
 
155
in cairo: infill, instroke, ineofill (set_fill_rule/in_fill)
 
156
 
 
157
not in cairo: inufill, inustroke, inueofill
 
158
 
 
159
Device setup
 
160
------------
 
161
in cairo: showpage, copypage
 
162
 
 
163
not in cairo: setpagedevice, currentpagedevice, nulldevice
 
164
 
 
165
Glyph and font operators
 
166
------------------------
 
167
in cairo: currentfont, definefont (font_create_for_ft_face),
 
168
undefine_font (font_destroy), findfont (font_create), makefont
 
169
(transform_font), setfont, scalefont, selectfont, show (show_text),
 
170
stringwidth (x/y in text_extents), xyshow (glyph_show -- but ignoring
 
171
current_point and using absolute positions)
 
172
 
 
173
not in cairo, (and likely not needed): composefont, rootfont, ashow,
 
174
widthshow, awidthshow, xshow, xyshow, yshow, glyphshow, cshow, kshow,
 
175
FontDirectory, GlobalFontDirectory, StandardEncoding,
 
176
ISOLatin1Encoding, findencoding, setcachedevice, setcachedevice2,
 
177
setcharwidth
 
178
 
 
179
Graphics state operators (device-dependent)
 
180
-------------------------------------------
 
181
in cairo:  setflat (set_tolerance), currentflat (current_tolerance)
 
182
 
 
183
not in cairo: sethalftone, currenthalftone, setscreen, currentscreen,
 
184
setcolorscreen, currentcolorscreen, settransfer, currenttransfer,
 
185
setcolortransfer, currentcolortransfer, setblackgeneration,
 
186
currentblackgeneration, setundercolorremoval,
 
187
currentundercolorremoval, setcolorrendering, currentcolorrendering,
 
188
setoverprint, currentoverprint, setsmoothness, currentsmoothness
 
189
 
 
190
PostScript operators never to be in cairo
 
191
-----------------------------------------
 
192
Operator Stack Manipulation Operators, Arithmetic and Math Operators,
 
193
Array Operators, Packed Array Operators, Dictionary Operators, String
 
194
Operators, Rational,Boolean,and Bitwise Operators, Control Operators,
 
195
Type,Attribute,and Conversion Operators, File Operators, Resource
 
196
Operators, Virtual Memory Operators, Miscellaneous Operators,
 
197
Interpreter Parameter Operators, Errors, User Path Operators