diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 203 |
1 files changed, 27 insertions, 176 deletions
@@ -1,51 +1,47 @@ -* Add support for non-antialiased rendering. API ? - -* Cleanup cairo_snippets so they operate in a more default cairo - environment, (particularly with a default CTM). - -* Add one of cairo_surface_finish/_finalize/_close to resolve the - "reference counting vs garbage collection" thread. +API Shakeup work +---------------- +Patch? Reviewed? +yes yes user data (was Re: [cairo] Patch improving fallbacks) + cairo_paint +yes yes setters and getters + cairo_current_matrix + Renaming the terms of the rendering equation + Making set_source consistent + Eliminating cairo_show_surface + cairo_mask + cairo_begin_group, cairo_end_group, cairo_get_group +yes yes cairo_output_stream_t and cairo_surface_finish() + cairo_create and eliminating cairo_set_target_surface + cairo_fill_preserve, cairo_stroke_preserve, cairo_clip_preserve + default matrix + cairo_current_path -> cairo_copy_path_data + cairo_surface_finish, cairo_surface_flush + cairo_<device>_surface_mark_dirty + Eliminating cairo_copy + Eliminating cairo_surface_set_repeat/matrix/filter + A hidden offset for the xlib backend + cairo_stroke_path -> cairo_stroke_to_path + Simplifying the operator set + Abbreviation hunt: cairo_init_clip and cairo_concat_matrix + Consistent error handling for all objects -* Shove experimental snapping code from libsvg-cairo down int cairo - proper. +* Add support for non-antialiased rendering. API ? * Clean up the cache code a bit, (there is at least one redundant level of cacheing, and there are some minor style issues). -* Implement the parallel install stuff, (most importantly, push - cairo.h down into into one directory below $(includedir)). - * Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD -* Simplifying the operator set? - * Fix clipping to work for all operators. The equation we have come up with is: ((src Op dest) In clip) Add (dest Out clip) -* Resolve the rest of the rendering equation. We need a fundamental - equation upon which more convenient operations are based, (at least - formally). Some of the common operations that should be convenient: - - * display surface - * display surface multiplied by constant alpha - * display pattern masked by surface - - So this involves deciding whether to expose a new mask object in the - graphics state, and deciding exactly what set_alpha means. It almost - certainly means adding cairo_show_surface_mask. - -* Implement a hidden transform, (as per the result of the hidden - offset thread on the mailing list). - * Replace PNG backend with an image_surface function to save a PNG image. * Clean up the API in preparation for freezing and release. -* Implement a PDF backend. - * Make a more interesting PS backend, (other than the current "giant-image for every page" approach). @@ -54,9 +50,6 @@ * 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). - * Re-work the backend clipping interface to use geometry rather than images. @@ -90,17 +83,6 @@ do gradients the Right Way). * Implement cairo_arc_to. -* Fix support for old X servers so that it is not swamped with image -transport. The key idea is to assume that nothing external to cairo -will be drawing to the same drawable after it is handed to -cairo. Beyond that, we might actually provide support for cooperating -with external entities by 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". @@ -146,134 +128,3 @@ functions: * Verification, profiling, optimization. centi_unfinished.svg may provide a good test case. - -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. - -Operators 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), -pathforall (current_path), flattenpath (current_path_flat) - -not in cairo: arct, arcto, reversepath, strokepath, clippath, pathbbox - -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 |