~ml-launchpad/ubuntu/natty/gcompris/fix-for-777349

« back to all changes in this revision

Viewing changes to src/goocanvas/TODO

  • Committer: Bazaar Package Importer
  • Author(s): Marc Gariepy, Marc Gariepy, Stephane Graber
  • Date: 2010-01-04 17:42:49 UTC
  • mfrom: (1.1.14 upstream)
  • Revision ID: james.westby@ubuntu.com-20100104174249-7bupatd9dtxyhvs4
Tags: 9.0-0ubuntu1
[Marc Gariepy]
* New upstream release (9.0).
* Remove cache.c from POTFILES to avoid FTBFS
* Remove unneeded rm in debian/rules (file no longer exists upstream)

[Stephane Graber]
* Bump Debian standards to 3.8.3
* Add patch system (dpatch)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
Bugs
 
3
 
 
4
 o I need to check the bounds are being calculated correctly so that they
 
5
   are correct for all zoom settings. Since cairo uses fixed point maths
 
6
   and I think only calculates up to a certain tolerance there might be
 
7
   slight errors in our gdouble results. So as the canvas is scaled this
 
8
   could eventually lead to the bounds being a pixel out, leading to painting
 
9
   errors. Maybe we should extend any bounds returned from cairo slightly to
 
10
   cover the maximum possible errors.
 
11
 
 
12
 o button press events are generating leave-notify and enter-notify signals.
 
13
   Seems to be a GTK+/X problem.
 
14
 
 
15
 o The GooCairo* types are used for some properties but aren't documented.
 
16
   Maybe we could point to the cairo docs.
 
17
 
 
18
Features definitely needed:
 
19
 
 
20
 o Editable text item - a port of GtkTextView.
 
21
 o Tooltips - I have code to support tooltips using the new API in GTK+ 2.12.
 
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
 
 
33
Possible 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
 o Sticky items that don't move at all as the canvas is scrolled & zoomed.
 
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
 
 
56
Requests 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