-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
71 lines (52 loc) · 3.18 KB
/
TODO
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
NOTE: I am no longer actively developing GooCanvas, so no major new
features will be added (unless a new maintainer takes over). I'll still
try to fix any bugs that appear though, and may accept minor patches.
Bugs:
o I need to check the bounds are being calculated correctly so that they
are correct for all zoom settings. Since cairo uses fixed point maths
and I think only calculates up to a certain tolerance there might be
slight errors in our gdouble results. So as the canvas is scaled this
could eventually lead to the bounds being a pixel out, leading to painting
errors. Maybe we should extend any bounds returned from cairo slightly to
cover the maximum possible errors.
Features definitely needed:
o API for modifying GooCanvasPath data.
o Editable text item - a port of GtkTextView.
o Need a function to setup a given cairo context with the defaults settings
of a GooCanvas, e.g. default line width.
o Check canvas and all items can be completely configured with properties
so that GtkBuilder can be used to load hierarchies of items/models.
Add "root-item" and "root-item-model" properties? Will GtkBuilder be able
to handle the tree of items/models like that? What about GUI builders?
How can gradients be specified by object properties?
Possible additional features:
o Need a way to efficiently notify items about changes in canvas scale, if
they request it. Could use something similar to the update flags.
o Change GooCanvasStyle so it doesn't expose GValues in the API.
Use get/set_boolean/int/double/boxed() instead.
o Drag-and-Drop - probably copy all the GTK+ widget signals so items can
implement their own behavior.
o Caching of rendered items to improve performance. Items would have a cache
option with choices like Never, Always and WhenVisible.
But don't use caches when printing.
o Filters like in SVG, to add graphical effects.
o Support using the same item in different places, like SVG 'use'.
o Support using system color names, like SVG, e.g. "ActiveBorder".
This helps you write widget-like items that fit in with the rest of GTK+.
o "scale-line-width" boolean property to specify if the line width scales
with the canvas? The item bounds will change at different scale settings.
o Arrows on path items, just like on polyline.
Requests from GTK+ people:
o Use separate GooCanvasContainer[Model] interfaces? May help bindings.
o GooCanvasWidget width & height are redundant - use widget's requested size.
o Make PathCommand and LineDash structs opaque.
o Use floating flag and sink() for objects.
o Use 1-byte integer percentage for xalign/yalign instead of doubles?
o Make it easy to add a border and background to items. "border-width",
"border-color" and "background-color" properties? Might also need "x-pad",
"y-pad", "x-radius", "y-radius" etc. Maybe have a related border item.
Note that we only have the bounds in device coords, so drawing a border of
a rotated item would be awkward. (Maybe we store the user bounds somewhere.)
o Link/URL item, or enable URLs in the markup of text items.
o A button item, with different children displayed for different states,
maybe with optional automatic prelighting.