mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2025-12-29 23:10:21 +01:00
160 lines
5.6 KiB
Text
160 lines
5.6 KiB
Text
* Change stroke code to go through one giant polygon. This will fix
|
|
problems with stroking self-intersecting paths.
|
|
|
|
* Implement cairo_stroke_path, (very easy to do after the above change
|
|
is done).
|
|
|
|
* Fix the intersection problem, (see reference to Hobby's paper
|
|
mentioned in cairo_traps.c).
|
|
|
|
* Implement support for programmatic patterns.
|
|
|
|
* Implement cairo_text_extents, cairo_glyph_extents, cairo_text_path,
|
|
cairo_glyph_path, and cairo_stroke_path, cairo_arc_to.
|
|
|
|
* Investigate what needs to be done so that old X servers aren't
|
|
swamped with image transport. This may involve adding one or more of
|
|
the following functions:
|
|
|
|
cairo_flush
|
|
cairo_erase
|
|
cairo_mark_dirty
|
|
|
|
* Re-implement the trapezoid rasterization algorithm according to the
|
|
new "specification".
|
|
|
|
* Stroking degenerate paths should still draw caps. Round caps are
|
|
easy; square should probably draw an axis aligned square.
|
|
|
|
* Verification, profiling, optimization.
|
|
|
|
A comparison with PostScript
|
|
============================
|
|
|
|
Here's a list of several classes of PostScript operators indicating
|
|
which operators have rough equivalents in Cairo and which do not. In
|
|
general, the name of a Cairo function corresponding to a PostScript
|
|
operator can be obtained by inserting a '_' between each word and
|
|
prefixing it with "cairo_". For example, "cairo_move_to" corresponds
|
|
to the PostScript "moveto".
|
|
|
|
In cases where the name of the Cairo function deviates from this
|
|
convention, or when the behavior of the Cairo function is
|
|
significantly different, the change is noted in parentheses below.
|
|
|
|
This list is not exhaustive, (there are definitely some minor (major?)
|
|
semantic deviations that are not noted below). Also, this list is
|
|
almost certainly out of date with respect to the current Cairo
|
|
implementation. Caveat lector.
|
|
|
|
Oerators that are not yet in Cairo, but probably should be: arcto,
|
|
strokepath, rectclip?, clipsave/restore?, setstrokeadjust?,
|
|
currentdash, grestoreall?, initgraphics?, currentgstate?, setgstate?,
|
|
erasepage?, setsmoothness?
|
|
|
|
Painting operators
|
|
------------------
|
|
in Cairo: stroke, fill, eofill (set_fill_rule/fill), image
|
|
(show_surface)
|
|
|
|
not in Cairo: erasepage, rectstroke, rectfill, shfill, colorimage,
|
|
imagemask
|
|
|
|
Path construction operators
|
|
---------------------------
|
|
in Cairo: arc, arcn (arc_negative), newpath, moveto, rmoveto
|
|
(rel_move_to), lineto, rlineto (rel_line_to), curveto, rcurveto
|
|
(rel_curve_to), closepath, currentpoint, charpath (text_path)
|
|
|
|
not in Cairo: arct, arcto, flattenpath, reversepath, strokepath,
|
|
clippath, pathbbox, pathforall
|
|
|
|
Clipping
|
|
--------
|
|
in Cairo: clip, eoclip (set_fill_rule/clip)
|
|
|
|
not in Cairo: initclip, rectclip, clipsave, cliprestore
|
|
|
|
Graphics state operators
|
|
------------------------
|
|
in Cairo: setlinewidth, currentlinewidth, setlinecap, currentlinecap,
|
|
setlinejoin, currentlinejoin, setmiterlimit, currentmiterlimit,
|
|
setdash
|
|
|
|
not in Cairo: setstrokeadjust, currentstrokeadjust, currentdash
|
|
|
|
Color specification operators
|
|
-----------------------------
|
|
in Cairo: setrgbcolor, currentcolor
|
|
|
|
not in Cairo: setcolor, setgray, currentgray, currentrgbcolor,
|
|
sethsbcolor, currenthsbcolor, setcmykcolor, currentcmykcolor,
|
|
setcolorspace, currentcolorspace
|
|
|
|
Form and pattern operators
|
|
--------------------------
|
|
in Cairo: setpattern, makepattern (lock_pattern)
|
|
|
|
not in Cairo: execform
|
|
|
|
Whole-state manipulation
|
|
------------------------
|
|
in Cairo: gsave (save), grestore (restore)
|
|
|
|
not in Cairo: grestoreall, initgraphics, gstate, currentgstate,
|
|
setgstate
|
|
|
|
Coordinate system and matrix operators
|
|
--------------------------------------
|
|
in Cairo: identmatrix (identity_matrix), initmatrix (default_matrix),
|
|
setmatrix, translate, scale, rotate, concatmatrix, currentmatrix,
|
|
transform (transform_point), dtransform (transform_distance)
|
|
|
|
not in Cairo: matrix, defaultmatrix, concat, itransform, idtransform,
|
|
invertmatrix
|
|
|
|
Insideness testing
|
|
------------------
|
|
in Cairo: infill, instroke, ineofill (set_fill_rule/in_fill)
|
|
|
|
not in Cairo: inufill, inustroke, inueofill
|
|
|
|
Device setup
|
|
------------
|
|
in Cairo: showpage, copypage
|
|
|
|
not in Cairo: setpagedevice, currentpagedevice, nulldevice
|
|
|
|
Glyph and font operators
|
|
------------------------
|
|
in Cairo: currentfont, definefont (font_create_for_ft_face),
|
|
undefine_font (font_destroy), findfont (font_create), makefont
|
|
(transform_font), setfont, scalefont, selectfont, show (show_text),
|
|
stringwidth (x/y in text_extents), xyshow (glyph_show -- but ignoring
|
|
current_point and using absolute positions)
|
|
|
|
not in Cairo, (and likely not needed): composefont, rootfont, ashow,
|
|
widthshow, awidthshow, xshow, xyshow, yshow, glyphshow, cshow, kshow,
|
|
FontDirectory, GlobalFontDirectory, StandardEncoding,
|
|
ISOLatin1Encoding, findencoding, setcachedevice, setcachedevice2,
|
|
setcharwidth
|
|
|
|
Graphics state operators (device-dependent)
|
|
-------------------------------------------
|
|
in Cairo: setflat (set_tolerance), currentflat (current_tolerance)
|
|
|
|
not in Cairo: sethalftone, currenthalftone, setscreen, currentscreen,
|
|
setcolorscreen, currentcolorscreen, settransfer, currenttransfer,
|
|
setcolortransfer, currentcolortransfer, setblackgeneration,
|
|
currentblackgeneration, setundercolorremoval,
|
|
currentundercolorremoval, setcolorrendering, currentcolorrendering,
|
|
setoverprint, currentoverprint, setsmoothness, currentsmoothness
|
|
|
|
PostScript operators never to be in Cairo
|
|
-----------------------------------------
|
|
Operator Stack Manipulation Operators, Arithmetic and Math Operators,
|
|
Array Operators, Packed Array Operators, Dictionary Operators, String
|
|
Operators, Rational,Boolean,and Bitwise Operators, Control Operators,
|
|
Type,Attribute,and Conversion Operators, File Operators, Resource
|
|
Operators, Virtual Memory Operators, Miscellaneous Operators,
|
|
Interpreter Parameter Operators, Errors, User Path Operators
|