head 1.13; access; symbols goocanvas-0-4:1.4.0.2 GOO_CANVAS_0_4_ANCHOR:1.4 V0_3:1.3 V0_2:1.1.1.1 DAMON:1.1.1; locks; strict; comment @# @; 1.13 date 2008.05.18.15.51.21; author damon; state Exp; branches; next 1.12; commitid KKishg4w9HlMHs3t; 1.12 date 2008.04.27.11.51.36; author damon; state Exp; branches; next 1.11; commitid SOILJRpOUq1p3K0t; 1.11 date 2007.08.14.10.50.46; author damon; state Exp; branches; next 1.10; 1.10 date 2007.04.03.09.58.05; author damon; state Exp; branches; next 1.9; 1.9 date 2007.03.06.12.08.15; author damon; state Exp; branches; next 1.8; 1.8 date 2007.02.27.14.45.07; author damon; state Exp; branches; next 1.7; 1.7 date 2007.02.17.13.48.34; author damon; state Exp; branches; next 1.6; 1.6 date 2007.02.08.22.56.45; author damon; state Exp; branches; next 1.5; 1.5 date 2007.02.01.01.19.04; author damon; state Exp; branches; next 1.4; 1.4 date 2006.08.24.08.06.22; author damon; state Exp; branches; next 1.3; 1.3 date 2006.04.24.15.14.33; author damon; state Exp; branches; next 1.2; 1.2 date 2006.04.12.15.29.21; author damon; state Exp; branches; next 1.1; 1.1 date 2005.12.15.15.32.00; author damon; state Exp; branches 1.1.1.1; next ; commitid 2dcb43a18c6f4567; 1.1.1.1 date 2005.12.15.15.32.00; author damon; state Exp; branches; next ; commitid 2dcb43a18c6f4567; desc @@ 1.13 log @ Add notes that GooCanvas has moved to the GNOME svn repository. @ text @ *************************************************************************** NOTE: GooCanvas has moved to the GNOME svn repository, in the 'goocanvas' module - Damon, 18th May 2008. *************************************************************************** Welcome to GooCanvas ==================== (a cairo-based canvas widget for GTK+) GooCanvas Home Page : http://sourceforge.net/projects/goocanvas GooCanvas is similar in many ways to GnomeCanvas and FooCanvas. But it uses cairo for rendering, has an optional model/view split, and uses interfaces for items & models (so you can easily turn any application object into a canvas item or model). 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. 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, or ./mv-demo for the model-view 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). (This also supports items whose requested height changes according to their allocated width, such as text items.) 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 Clip paths to support clipping items. 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@@gnome.org) (FooCanvas can be found in GNOME svn in the 'foocanvas' module. FooCanvas was based on GnomeCanvas, which is in the 'libgnomecanvas' module.) @ 1.12 log @0.10 release @ text @d3 8 @ 1.11 log @released 0.9 @ text @d16 4 a23 1 @ 1.10 log @2007-04-03 Damon Chaplin * Released GooCanvas 0.8 2007-04-03 Damon Chaplin * demo/mv-demo.c (create_canvas_primitives): * demo/demo.c (create_canvas_primitives): set the maximum scale to 50, since if we go above that we hit the cairo 16-bit limit and the large rectangle isn't painted correctly. * src/goocanvasitemsimple.c (goo_canvas_item_simple_install_common_properties): improved docs for fill/stroke properties. * src/goocanvaswidget.c (goo_canvas_widget_new) (goo_canvas_widget_set_widget): keep our own reference to the widget, rather than just relying on the canvas widget's reference. Otherwise once the widget is removed from the canvas we have an invalid pointer. @ text @a15 3 The API for version 1.0 should be fixed very soon, at which point we'll guarantee backwards compatability. @ 1.9 log @2007-03-06 Damon Chaplin * src/goocanvasitem.[hc]: added get_requested_height() method. * src/goocanvastable.c: Reworked a lot of code to support width-for-height layout. This gets the requested area of all children, calculates the column widths, then checks if any children want to change their requested height given their allocated width. Text items change their requested height based on their width, so this results in a better layout. * src/goocanvastext.h (struct _GooCanvasText): added layout_width to store the width used for the PangoLayout. This initially comes from the text's width property, but can be modified when the text item is layed out in a container like GooCanvasTable. * src/goocanvastext.c (goo_canvas_text_get_requested_height): calculates the requested height for the given width, or just returns -1 if the text item is rotated or has a clip path, in which case the original height is used. (goo_canvas_text_init, goo_canvas_text_create_layout) (goo_canvas_text_update): use layout_width. * demo/demo-table.c (create_width_for_height_table): added tests for width-for-height layout. * demo/demo-clipping.c (setup_canvas): added text item to check clipping works OK with them. @ text @d54 1 a54 1 (FooCanvas can be found in GNOME cvs in the 'foocanvas' module. @ 1.8 log @2007-02-27 Damon Chaplin * Released GooCanvas 0.7 2007-02-27 Damon Chaplin * src/goocanvas.c (goo_canvas_get_items_in_area): new function to get items inside or outside a given area. * demo/demo.c: added little test for goo_canvas_get_items_at() and goo_canvas_get_items_in_area(). @ text @d31 2 @ 1.7 log @2007-02-17 Damon Chaplin * Released GooCanvas 0.6 2007-02-17 Damon Chaplin * src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleClass): renamed create_path, update, paint and get_item_at class methods to simple_create_path, simple_update, simple_paint and simple_get_item_at. This avoids confusion with the GooCanvasItem interface methods with the same name (and may avoid problems with language bindings etc.) * src/goocanvasellipse.c (goo_canvas_ellipse_class_init): * src/goocanvasimage.c (goo_canvas_image_class_init): * src/goocanvaspath.c (goo_canvas_path_class_init): * src/goocanvaspolyline.c (goo_canvas_polyline_class_init): * src/goocanvasrect.c (goo_canvas_rect_class_init): * src/goocanvastext.c (goo_canvas_text_class_init): * src/goocanvaswidget.c (goo_canvas_widget_class_init): * demo/demo-item.c (goo_demo_item_class_init): * src/goocanvasitemsimple.c: updated use of above class methods. * src/goocanvasgroup.c (goo_canvas_group_update): handle children with empty bounds (i.e. ignore their bounds when computing the group's bounds). * src/goocanvastable.c (goo_canvas_table_paint) (goo_canvas_table_get_item_at): * src/goocanvasgroup.c (goo_canvas_group_get_item_at) (goo_canvas_group_paint): don't check the child bounds here. Leave it up to the children to do that. * src/goocanvasitemsimple.c (goo_canvas_item_simple_get_item_at) (goo_canvas_item_simple_paint): check the item's bounds here. @ text @a1 1 Here's my new canvas widget for GTK+. You'll need GTK+ 2.8 to try it. d3 2 a4 4 It is similar in many ways to FooCanvas, hence the name. But it uses cairo for rendering, has an optional model/view split, and uses interfaces for items & models (so you can easily turn any application object into a canvas item or model). d6 12 a17 1 It is usable now, though the API may change slightly before 1.0. @ 1.6 log @2007-02-08 Damon Chaplin * src/goocanvasitemmodel.c (goo_canvas_item_model_set_simple_transform): * src/goocanvasitem.c (goo_canvas_item_set_simple_transform): new convenience functions to set the position, scale and rotation easily. * demo/demo.c (move_ellipse_clicked): added tests for goo_canvas_item_set_simple_transform(). * */*: more documentation updates. I've started adding a few introductory sections, tidied up a few bits, and tried to update all the docs that referred to the old model/view terminology. @ text @d12 2 a13 1 run './demo'. (Or run ./simple-demo for the very simple demo.) d27 1 @ 1.5 log @2007-02-01 Damon Chaplin * 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. @ text @d5 3 a7 2 for rendering, has a model/view split, and uses interfaces for items & views (so you can easily turn any application object into a canvas item or view). @ 1.4 log @2006-08-24 Damon Chaplin * Released GooCanvas 0.4 2006-08-24 Damon Chaplin * src/*.c: updated docs to point to goo_canvas_view_get_item_view() as a simple alternative for setting up signal handlers. * src/goocanvasview.c (goo_canvas_view_pointer_ungrab): only call gdk_display_pointer_ungrab() if we have an active pointer grab. So maybe we can now use goo_canvas_view_pointer_ungrab() to ungrab passive grabs on canvas item views (need to test this though). @ text @d13 26 @ 1.3 log @2006-04-24 Damon Chaplin * Released GooCanvas 0.3 2006-04-24 Damon Chaplin * src/goocanvasview.c: added "model", "scale", "anchor", "x1", "y1", "x2", "y2" properties, and goo_canvas_view_get_bounds() and goo_canvas_view_get_scale() accessors. Removed goo_canvas_view_set_anchor() as the property should be enough. (I think we should only have accessor functions for major properties.) @ text @d8 1 a8 1 It should be usable now. Though there will probably be a few bugs to iron out. @ 1.2 log @2006-04-12 Damon Chaplin * configure.in: updated to use newer forms of macros. * COPYING: added LGPL license. * src/Makefile.am (libgoocanvasincludedir): install headers into $(includedir)/goocanvas-1.0 rather than $(includedir)/libgoocanvas-1.0. @ text @d8 1 a8 1 It is almost ready for use now. d11 1 a11 1 run './demo'. d13 1 a13 1 Damon Chaplin @ 1.1 log @Initial revision @ text @d10 2 a11 2 To build it run './configure' and 'make'. To run it cd into 'src' and run './demo'. @ 1.1.1.1 log @Cairo canvas widget for GTK+ @ text @@