[cairo-commit] goocanvas ChangeLog, 1.62, 1.63 README, 1.4, 1.5 TODO, 1.18, 1.19

Damon Chaplin commit at pdx.freedesktop.org
Wed Jan 31 17:19:10 PST 2007


Committed by: damon

Update of /cvs/cairo/goocanvas
In directory kemper:/tmp/cvs-serv7119

Modified Files:
	ChangeLog README TODO 
Log Message:
2007-02-01  Damon Chaplin  <damon at gnome.org>

	* src/goocanvastable.c: finished table item. I think the only API
	breakage this introduces is that GooCanvasItemSimple subclasses that
	override the update() class method must now return the bounds in user
	space rather than device space. (This is needed to do the table
	layout.)

	* demo/table-demo.c: added more test tables with various transforms
	and settings.

	* src/goocanvasitem.c (goo_canvas_item_get_requested_area) 
	(goo_canvas_item_allocate_area)
	(goo_canvas_item_get_transform_for_child) : new functions and interface
	methods to support GooCanvasTable and other layout containers.

	* src/goocanvasitemsimple.c: added support for GOO_CANVAS_ITEM_HIDDEN,
	initialized the model's visibility setting to GOO_CANVAS_ITEM_VISIBLE.
	(goo_canvas_item_simple_update): split part of it out into
	goo_canvas_item_simple_update_internal and updated slightly.
	(goo_canvas_item_simple_get_requested_area) 
	(goo_canvas_item_simple_allocate_area): new functions to support
	GooCanvasTable and other layout containers.
	(goo_canvas_item_simple_get_path_bounds): don't convert to device space
	as some code needs the bounds in user space.

	* src/goocanvas.c (goo_canvas_convert_to_item_space) 
	(goo_canvas_convert_from_item_space): used the new
	goo_canvas_item_get_transform_for_child() function to get the transform
	for each item.

	* src/goocanvasutils.h: added GOO_CANVAS_ITEM_HIDDEN visibility setting
	which is used for items which are invisible and not allocated any space
	in containter items like GooCanvasTable.

	* src/goocanvasgroup.c (goo_canvas_group_get_item_at) 
	(goo_canvas_group_paint): support GOO_CANVAS_ITEM_HIDDEN.

	* src/goocanvaspolyline.c (goo_canvas_polyline_compute_bounds):
	* src/goocanvasimage.c (goo_canvas_image_update): leave bounds in user
	space.

	* src/goocanvaswidget.c: updated to override the GooCanvasItemSimple
	update, paint & get_item_at methods instead of the interface methods,
	added support for GOO_CANVAS_ITEM_HIDDEN, and added
	goo_canvas_widget_allocate_area() implementation.

	* src/goocanvastext.c (goo_canvas_text_get_item_at): fixed bug that
	meant it didn't work for text items with no fill color/pattern set.



Index: ChangeLog
===================================================================
RCS file: /cvs/cairo/goocanvas/ChangeLog,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- ChangeLog	9 Dec 2006 12:18:18 -0000	1.62
+++ ChangeLog	1 Feb 2007 01:19:04 -0000	1.63
@@ -1,3 +1,53 @@
+2007-02-01  Damon Chaplin  <damon at gnome.org>
+
+	* src/goocanvastable.c: finished table item. I think the only API
+	breakage this introduces is that GooCanvasItemSimple subclasses that
+	override the update() class method must now return the bounds in user
+	space rather than device space. (This is needed to do the table
+	layout.)
+
+	* demo/table-demo.c: added more test tables with various transforms
+	and settings.
+
+	* src/goocanvasitem.c (goo_canvas_item_get_requested_area) 
+	(goo_canvas_item_allocate_area)
+	(goo_canvas_item_get_transform_for_child) : new functions and interface
+	methods to support GooCanvasTable and other layout containers.
+
+	* src/goocanvasitemsimple.c: added support for GOO_CANVAS_ITEM_HIDDEN,
+	initialized the model's visibility setting to GOO_CANVAS_ITEM_VISIBLE.
+	(goo_canvas_item_simple_update): split part of it out into
+	goo_canvas_item_simple_update_internal and updated slightly.
+	(goo_canvas_item_simple_get_requested_area) 
+	(goo_canvas_item_simple_allocate_area): new functions to support
+	GooCanvasTable and other layout containers.
+	(goo_canvas_item_simple_get_path_bounds): don't convert to device space
+	as some code needs the bounds in user space.
+
+	* src/goocanvas.c (goo_canvas_convert_to_item_space) 
+	(goo_canvas_convert_from_item_space): used the new
+	goo_canvas_item_get_transform_for_child() function to get the transform
+	for each item.
+
+	* src/goocanvasutils.h: added GOO_CANVAS_ITEM_HIDDEN visibility setting
+	which is used for items which are invisible and not allocated any space
+	in containter items like GooCanvasTable.
+
+	* src/goocanvasgroup.c (goo_canvas_group_get_item_at) 
+	(goo_canvas_group_paint): support GOO_CANVAS_ITEM_HIDDEN.
+
+	* src/goocanvaspolyline.c (goo_canvas_polyline_compute_bounds):
+	* src/goocanvasimage.c (goo_canvas_image_update): leave bounds in user
+	space.
+
+	* src/goocanvaswidget.c: updated to override the GooCanvasItemSimple
+	update, paint & get_item_at methods instead of the interface methods,
+	added support for GOO_CANVAS_ITEM_HIDDEN, and added
+	goo_canvas_widget_allocate_area() implementation.
+
+	* src/goocanvastext.c (goo_canvas_text_get_item_at): fixed bug that
+	meant it didn't work for text items with no fill color/pattern set.
+
 2006-12-09  Damon Chaplin  <damon at gnome.org>
 
 	* docs/goocanvas-sections.txt: 

Index: README
===================================================================
RCS file: /cvs/cairo/goocanvas/README,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- README	24 Aug 2006 08:06:22 -0000	1.4
+++ README	1 Feb 2007 01:19:04 -0000	1.5
@@ -10,6 +10,32 @@
 To build it run './configure' and 'make'. To run the demo cd into 'demo' and
 run './demo'. (Or run ./simple-demo for the very simple demo.)
 
+
+Features:
+
+ o Optional model/view split.
+ o Uses interfaces for items & views.
+ o Basic items - rect/ellipse/polyline/text/image/group.
+ o Path item, using SVG path specification strings.
+ o Table item for layout of other items (similar to the GtkTable widget).
+ o Embedded GTK+ widgets.
+ o Layers/stacking order with raise/lower functions.
+ o Cascading styles - line width/style/dashes, colors, fill patterns.
+ o Affine transformations for all items - rotations/scales/skews.
+ o Event handling - button/motion events, "pointer-events" property like SVG.
+ o Grabs - support for pointer & keyboard grabs.
+ o Keyboard focus traversal.
+ o Accessibility (item title & description properties and hierarchy stuff).
+ o Printing (output to a given cairo_t).
+ o Scrolling.
+ o Zooming.
+ o Item visibility setting - on/off/above zoom threshold.
+ o Simple animation.
+ o Scalable - support for thousands of items over a large canvas area.
+ o Support for different units - pixels/points/inches/millimeters.
+ o API docs.
+
+
 Damon Chaplin (damon at gnome.org)
 
 (FooCanvas can be found in GNOME cvs in the 'foocanvas' module.

Index: TODO
===================================================================
RCS file: /cvs/cairo/goocanvas/TODO,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- TODO	9 Dec 2006 12:08:38 -0000	1.18
+++ TODO	1 Feb 2007 01:19:04 -0000	1.19
@@ -6,6 +6,9 @@
 Better animation code - interpolate translation, scale & rotation separately
 and recalculate the transform at each step.
 
+Add padding to class/object structs to allow a bit of extension in future
+without breaking backwards compatability.
+
 
 Bugs
 
@@ -14,20 +17,19 @@
 
 Plans for next release:
 
- o Support for containers similar to widgets like GtkTable. These would do
-   a size-request/size-allocate procedure, and so would probably need changes
-   to the current update methods.
 
 
 Features definitely needed:
 
+ o Clip paths/masks for items.
  o Editable text item - a port of GtkTextView.
 
 
 Possible additional features:
 
+ o Caching of rendered items to improved performance. Items would have a cache
+   option with choices like Never, Always and WhenVisible.
  o Sticky items that don't move at all as the canvas is scrolled & zoomed.
- o Clip paths/masks for items.
  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".



More information about the cairo-commit mailing list