1 2NOTE: I am no longer actively developing GooCanvas, so no major new 3features will be added (unless a new maintainer takes over). I'll still 4try to fix any bugs that appear though, and may accept minor patches. 5 6 7Bugs: 8 9 o I need to check the bounds are being calculated correctly so that they 10 are correct for all zoom settings. Since cairo uses fixed point maths 11 and I think only calculates up to a certain tolerance there might be 12 slight errors in our gdouble results. So as the canvas is scaled this 13 could eventually lead to the bounds being a pixel out, leading to painting 14 errors. Maybe we should extend any bounds returned from cairo slightly to 15 cover the maximum possible errors. 16 17 18Features definitely needed: 19 20 o API for modifying GooCanvasPath data. 21 o Editable text item - a port of GtkTextView. 22 23 o Need a function to setup a given cairo context with the defaults settings 24 of a GooCanvas, e.g. default line width. 25 26 o Check canvas and all items can be completely configured with properties 27 so that GtkBuilder can be used to load hierarchies of items/models. 28 Add "root-item" and "root-item-model" properties? Will GtkBuilder be able 29 to handle the tree of items/models like that? What about GUI builders? 30 How can gradients be specified by object properties? 31 32 33Possible additional features: 34 35 o Need a way to efficiently notify items about changes in canvas scale, if 36 they request it. Could use something similar to the update flags. 37 38 o Change GooCanvasStyle so it doesn't expose GValues in the API. 39 Use get/set_boolean/int/double/boxed() instead. 40 41 o Drag-and-Drop - probably copy all the GTK+ widget signals so items can 42 implement their own behavior. 43 44 o Caching of rendered items to improve performance. Items would have a cache 45 option with choices like Never, Always and WhenVisible. 46 But don't use caches when printing. 47 o Filters like in SVG, to add graphical effects. 48 o Support using the same item in different places, like SVG 'use'. 49 o Support using system color names, like SVG, e.g. "ActiveBorder". 50 This helps you write widget-like items that fit in with the rest of GTK+. 51 o "scale-line-width" boolean property to specify if the line width scales 52 with the canvas? The item bounds will change at different scale settings. 53 o Arrows on path items, just like on polyline. 54 55 56Requests from GTK+ people: 57 58 o Use separate GooCanvasContainer[Model] interfaces? May help bindings. 59 o GooCanvasWidget width & height are redundant - use widget's requested size. 60 o Make PathCommand and LineDash structs opaque. 61 o Use floating flag and sink() for objects. 62 o Use 1-byte integer percentage for xalign/yalign instead of doubles? 63 o Make it easy to add a border and background to items. "border-width", 64 "border-color" and "background-color" properties? Might also need "x-pad", 65 "y-pad", "x-radius", "y-radius" etc. Maybe have a related border item. 66 Note that we only have the bounds in device coords, so drawing a border of 67 a rotated item would be awkward. (Maybe we store the user bounds somewhere.) 68 o Link/URL item, or enable URLs in the markup of text items. 69 o A button item, with different children displayed for different states, 70 maybe with optional automatic prelighting. 71 72