diff --git a/foocanvas/support/DEV_NOTES b/foocanvas/support/DEV_NOTES deleted file mode 100755 index f48fed14f90d34ea3bc570de0472db697f5444db..0000000000000000000000000000000000000000 --- a/foocanvas/support/DEV_NOTES +++ /dev/null @@ -1,107 +0,0 @@ - - -Keeping up to date ------------------- - -Run through the following for developing changes to foocanvas: - -check out the current foocanvas. - -$ alias gcvs='cvs -z3 -d:pserver:anonymous@anoncvs.gnome.org:2401/cvs/gnome' -$ gcvs co foocanvas - - -modify files in foocanvas/libfoocanvas - - -create the patch which we'll store in cvs - -$ cd foocanvas/libfoocanvas -$ gcvs diff -u > ZMap/foocanvas/support/libfoocanvas-VERSION.patch - - -store in ZMap cvs. Make sure '-ko' is used to STOP keyword substitution ($Id: DEV_NOTES,v 1.5 2006-10-18 20:14:35 rds Exp $). - -$ cd ZMap/foocanvas/support/ -$ cvs add -ko -m'message' libfoocanvas-VERSION.patch - - -should test the patch by -$ gcvs export -rHEAD foocanvas -$ cd foocanvas/libfoocanvas -$ patch -p0 < ZMap/foocanvas/support/libfoocanvas-VERSION.patch - - - -Creating the tar.gz -------------------- - -$ gcvs co -d libfoocanvas-VERSION foocanvas - -*** additional files fix *** - -now we have additional files this step is a little more difficult and makes me -think we should just distribute a fully patched tar.gz. - -$ cd libfoocanvas-VERSION/libfoocanvas/ -$ patch -p0 -u < ../path/to/additional_files/Makefile.am.patch -$ cp ../path/to/additional_files/*.{c,h} . -**************************** - -now make all the autoconf stuff. I had to do this first. -NOT $ export AUTOMAKE=~/bin/automake -try this... -$ export AUTOMAKE=/nfs/team71/acedb/zmap/prefix/LINUX/bin/automake - -aclocal needs to be told where it's m4 files are. -~zmap/prefix/LINUX/share/aclocal -~zmap/prefix/LINUX/share/aclocal-1.9 -are good bets at the moment. glib-gettext.m4 seems to be a dependancy -which breaks everything silently.... - -NOT $ export ACLOCAL_FLAGS="-I ~/share/aclocal -I ~/share/aclocal-1.9" -try this... -$ export ACLOCAL_FLAGS='-I /nfs/team71/acedb/zmap/prefix/LINUX/share/aclocal -I /nfs/team71/acedb/zmap/prefix/LINUX/share/aclocal-1.9' -autogen.sh also requires gnome-common - -$ gcvs co gnome-common; ./configure; make; make install - -For the last build (20060326) I had to modify autogen.sh and -configure.in as per build.patch. Unsure as to why, possibly a broken -autotools setup. - -$ ./autogen.sh - -$ make dist-gzip - this uses VERSION from configure.in (currently 0.1), I was using YYYYMMDD, who knows what's best. - to change this edit the Makefile --distdir = $(PACKAGE)-$(VERSION) -+distdir = $(PACKAGE)-YYYYMMDD - - -$ mv libfoocanvas-VERSION.tar.gz ZMap/foocanvas/support/ -$ cvs add -ko -m'message' libfoocanvas-VERSION.tar.gz -$ cvs commit -m'message' libfoocanvas-VERSION.tar.gz - -Should alter untar_patch.sh to set the version variable to VERSION and -tag the files as libfoocanvas-VERSION. -Test by running ./untar_patch.sh and seeing no errors in patch and a complete build - - - - -ALPHA builds ------------- - -...NO LONGER SUPPORTED... -------------------------- - -Now auto{conf,make}, m4 and libtool are installed - -Use gtar and gpatch as the OSF ones don't do gnu options. - -export AUTOMAKE=~acedb/prefix/ALPHA/bin/automake-1.9 -make sure /usr/local/gtk2/bin is in $PATH - -gnome-common & gtk-doc are now installed so just do the following -./autogen.sh; ./configure; make; make install diff --git a/foocanvas/support/README b/foocanvas/support/README deleted file mode 100755 index d3821580bd2ad6fbad7b6024bcb7fbc95a99957b..0000000000000000000000000000000000000000 --- a/foocanvas/support/README +++ /dev/null @@ -1,12 +0,0 @@ - -Zmap's version of foocanvas ---------------------------- -You will need to install this altered version of foocanvas in order -to build and use zmap. - -To do this run - -./untar_patch.sh - -This should untar and patch the source. -Follow instruction to run ./configure, make and make install. diff --git a/foocanvas/support/libfoocanvas-0.1.patch b/foocanvas/support/libfoocanvas-0.1.patch deleted file mode 100755 index 166b558dd18123d9a394da89ca5eab9eba06f7ff..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-0.1.patch +++ /dev/null @@ -1,667 +0,0 @@ -Only in /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/: CVS -Only in .: Makefile.am -Only in .: Makefile.in -Only in .: foo-canvas-i18n.h -diff -u ./foo-canvas-line.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-line.c ---- ./foo-canvas-line.c Wed Jan 7 03:57:13 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-line.c Thu May 13 15:36:19 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 10:57 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -867,11 +868,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- line->fill_rgba >> 24, -- (line->fill_rgba >> 16) & 0xff, -- (line->fill_rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // line->fill_rgba >> 24, -+ // (line->fill_rgba >> 16) & 0xff, -+ // (line->fill_rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Only in .: foo-canvas-line.h -Only in .: foo-canvas-marshal.list -diff -u ./foo-canvas-pixbuf.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-pixbuf.c ---- ./foo-canvas-pixbuf.c Fri Apr 23 06:29:26 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-pixbuf.c Thu May 13 15:36:21 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Only in .: foo-canvas-pixbuf.h -diff -u ./foo-canvas-polygon.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-polygon.c ---- ./foo-canvas-polygon.c Fri Jun 13 14:22:58 2003 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-polygon.c Thu May 13 15:36:22 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:35 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -273,7 +274,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -394,7 +395,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -795,7 +796,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Only in .: foo-canvas-polygon.h -diff -u ./foo-canvas-rect-ellipse.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-rect-ellipse.c ---- ./foo-canvas-rect-ellipse.c Wed Jul 16 18:29:04 2003 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-rect-ellipse.c Thu May 13 15:36:23 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 13 13:51 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -300,7 +301,7 @@ - *py2 = cy2; - - /* Some safety fudging */ -- -+ - *px1 -= 2; - *py1 -= 2; - *px2 += 2; -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -981,7 +982,7 @@ - - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); -- -+ - if (re->fill_set) { - if ((re->fill_color & 0xff) != 255) { - GdkRectangle *rectangles; -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1167,6 +1168,9 @@ - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); - -+ if (cy1 >= cy2) foo_canvas_item_hide(item); -+ else foo_canvas_item_show(item); -+ - update_rect = make_rect (cx1, cy1, cx2+1, cy2+1); - #if 0 - foo_canvas_request_redraw (item->canvas, -@@ -1191,7 +1195,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1348,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Only in .: foo-canvas-rect-ellipse.h -diff -u ./foo-canvas-text.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-text.c ---- ./foo-canvas-text.c Fri Apr 23 06:36:54 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-text.c Thu May 13 15:36:25 2004 -@@ -1,6 +1,7 @@ -+/* Last edited: May 11 11:41 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* -- * $Id: foo-canvas-text.c,v 1.7 2004/04/23 05:36:54 jody Exp $ -+ * $Id: foo-canvas-text.c,v 1.1 2004/05/13 14:36:25 rnc Exp $ - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. - * -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1227,11 +1228,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- text->rgba >> 24, -- (text->rgba >> 16) & 0xff, -- (text->rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // text->rgba >> 24, -+ // (text->rgba >> 16) & 0xff, -+ // (text->rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1537,7 +1539,8 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1570,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Only in .: foo-canvas-text.h -Only in .: foo-canvas-util.c -Only in .: foo-canvas-util.h -diff -u ./foo-canvas-widget.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-widget.c ---- ./foo-canvas-widget.c Tue May 20 14:56:08 2003 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-widget.c Thu May 13 15:36:27 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -452,8 +453,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -494,8 +495,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in .: foo-canvas-widget.h -diff -u ./foo-canvas.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.c ---- ./foo-canvas.c Thu Mar 11 21:51:42 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.c Thu May 13 15:36:17 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 12 15:39 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -290,7 +291,7 @@ - redraw_and_repick_if_mapped (FooCanvasItem *item) - { - if (item->object.flags & FOO_CANVAS_ITEM_MAPPED) { -- foo_canvas_item_request_redraw (item); -+ foo_canvas_item_request_redraw (item); - item->canvas->need_repick = TRUE; - } - } -@@ -1535,10 +1536,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2074,7 +2075,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2294,8 +2296,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -3082,15 +3084,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3100,7 +3122,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3108,14 +3131,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3249,7 +3273,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3312,16 +3337,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3361,16 +3387,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3387,16 +3414,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3422,11 +3450,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3449,10 +3477,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -diff -u ./foo-canvas.h /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.h ---- ./foo-canvas.h Thu Mar 11 21:51:43 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.h Thu May 13 15:36:18 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 12 08:36 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -Only in .: libfoocanvas.h -Only in .: libfoocanvas.pc.in -Only in .: libfoocanvastypes.c -Only in /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/: support diff --git a/foocanvas/support/libfoocanvas-0.1.tar.gz b/foocanvas/support/libfoocanvas-0.1.tar.gz deleted file mode 100755 index a6a663999fe63b68ae066d4aa62c04608df21922..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-0.1.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20050211.patch b/foocanvas/support/libfoocanvas-20050211.patch deleted file mode 100755 index 3b23c4908acf50c367d2872bb03edbbd2a3cf7f2..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20050211.patch +++ /dev/null @@ -1,758 +0,0 @@ -Only in .: .cvsignore -Only in /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/: CVS -Only in .: Makefile.am -Only in .: foo-canvas-i18n.h -diff -u ./foo-canvas-line.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-line.c ---- ./foo-canvas-line.c Fri Mar 12 16:30:49 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-line.c Thu May 13 15:36:19 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 10:57 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -867,11 +868,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- line->fill_rgba >> 24, -- (line->fill_rgba >> 16) & 0xff, -- (line->fill_rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // line->fill_rgba >> 24, -+ // (line->fill_rgba >> 16) & 0xff, -+ // (line->fill_rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Only in .: foo-canvas-line.h -Only in .: foo-canvas-marshal.list -diff -u ./foo-canvas-pixbuf.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-pixbuf.c ---- ./foo-canvas-pixbuf.c Fri Apr 23 06:31:12 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-pixbuf.c Thu May 13 15:36:21 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Only in .: foo-canvas-pixbuf.h -diff -u ./foo-canvas-polygon.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-polygon.c ---- ./foo-canvas-polygon.c Sat Dec 4 05:01:22 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-polygon.c Fri Feb 11 16:45:52 2005 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 11 16:45 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -261,9 +262,9 @@ - double width; - int i; - -- if (poly->num_points == 0) -- return FALSE; -- -+ if (poly->num_points == 0) -+ return FALSE; -+ - /* Compute bounds of vertices */ - - x1 = x2 = poly->coords[0]; -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -293,7 +294,7 @@ - *by1 = y1; - *bx2 = x2; - *by2 = y2; -- return TRUE; -+ return TRUE; - } - - /* Computes the bounding box of the polygon, in canvas coordinates. Assumes that the number of points in the polygon is -@@ -309,8 +310,8 @@ - - item = FOO_CANVAS_ITEM (poly); - -- if (!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -- return FALSE; -+ if(!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -+ return FALSE; - - bbox_x0 += i2w_dx; - bbox_y0 += i2w_dy; -@@ -325,7 +326,7 @@ - *by1 = bbox_y0 - 1; - *bx2 = bbox_x1 + 1; - *by2 = bbox_y1 + 1; -- return TRUE; -+ return TRUE; - } - - /* Sets the points of the polygon item to the specified ones. If needed, it will add a point to -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -679,8 +680,8 @@ - set_stipple (poly->fill_gc, &poly->fill_stipple, poly->fill_stipple, TRUE); - set_stipple (poly->outline_gc, &poly->outline_stipple, poly->outline_stipple, TRUE); - -- if (get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -- foo_canvas_update_bbox (item, x1, y1, x2, y2); -+ if(get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -+ foo_canvas_update_bbox (item, x1, y1, x2, y2); - } - - static void -@@ -801,7 +802,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Only in .: foo-canvas-polygon.h -diff -u ./foo-canvas-rect-ellipse.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-rect-ellipse.c ---- ./foo-canvas-rect-ellipse.c Wed Jul 14 12:04:02 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-rect-ellipse.c Fri Feb 11 16:27:50 2005 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 11 16:27 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -300,7 +301,7 @@ - *py2 = cy2; - - /* Some safety fudging */ -- -+ - *px1 -= 2; - *py1 -= 2; - *px2 += 2; -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -981,7 +982,7 @@ - - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); -- -+ - if (re->fill_set) { - if ((re->fill_color & 0xff) != 255) { - GdkRectangle *rectangles; -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1167,6 +1168,9 @@ - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); - -+ if (cy1 >= cy2) foo_canvas_item_hide(item); -+ else foo_canvas_item_show(item); -+ - update_rect = make_rect (cx1, cy1, cx2+1, cy2+1); - #if 0 - foo_canvas_request_redraw (item->canvas, -@@ -1191,7 +1195,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1348,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Only in .: foo-canvas-rect-ellipse.h -diff -u ./foo-canvas-text.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-text.c ---- ./foo-canvas-text.c Fri Apr 23 06:36:54 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-text.c Thu May 13 15:36:25 2004 -@@ -1,6 +1,7 @@ -+/* Last edited: May 11 11:41 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* -- * $Id: foo-canvas-text.c,v 1.7 2004/04/23 05:36:54 jody Exp $ -+ * $Id: foo-canvas-text.c,v 1.1 2004/05/13 14:36:25 rnc Exp $ - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. - * -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1227,11 +1228,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- text->rgba >> 24, -- (text->rgba >> 16) & 0xff, -- (text->rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // text->rgba >> 24, -+ // (text->rgba >> 16) & 0xff, -+ // (text->rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1537,7 +1539,8 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1570,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Only in .: foo-canvas-text.h -Only in .: foo-canvas-util.c -Only in .: foo-canvas-util.h -diff -u ./foo-canvas-widget.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-widget.c ---- ./foo-canvas-widget.c Tue May 20 14:39:31 2003 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas-widget.c Thu May 13 15:36:27 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -452,8 +453,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -494,8 +495,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in .: foo-canvas-widget.h -diff -u ./foo-canvas.c /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.c ---- ./foo-canvas.c Wed Oct 20 14:53:43 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.c Fri Feb 11 16:31:03 2005 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 11 16:31 2005 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -290,7 +291,7 @@ - redraw_and_repick_if_mapped (FooCanvasItem *item) - { - if (item->object.flags & FOO_CANVAS_ITEM_MAPPED) { -- foo_canvas_item_request_redraw (item); -+ foo_canvas_item_request_redraw (item); - item->canvas->need_repick = TRUE; - } - } -@@ -1535,10 +1536,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2074,7 +2075,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2294,8 +2296,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2782,12 +2784,12 @@ - - canvas = FOO_CANVAS (widget); - -- if (emit_event (canvas, (GdkEvent *) event)) -- return TRUE; -- if (event->type == GDK_KEY_RELEASE) -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -- else -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); -+ if (emit_event (canvas, (GdkEvent *) event)) -+ return TRUE; -+ if (event->type == GDK_KEY_RELEASE) -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -+ else -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); - } - - -@@ -2967,13 +2969,13 @@ - add_idle (FooCanvas *canvas) - { - if (!canvas->idle_id) { -- /* We let the update idle handler have higher priority -- * than the redraw idle handler so the canvas state -- * will be updated during the expose event. canvas in -- * expose_event. -+ /* We let the update idle handler have higher priority -+ * than the redraw idle handler so the canvas state -+ * will be updated during the expose event. canvas in -+ * expose_event. - */ - canvas->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW - 20, -- idle_handler, canvas, NULL); -+ idle_handler, canvas, NULL); - } - } - -@@ -3093,15 +3095,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3111,7 +3133,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3119,14 +3142,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3260,7 +3284,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3323,16 +3348,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3372,16 +3398,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3398,16 +3425,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3433,11 +3461,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3460,10 +3488,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -diff -u ./foo-canvas.h /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.h ---- ./foo-canvas.h Tue Mar 2 14:32:55 2004 -+++ /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/foo-canvas.h Thu May 13 15:36:18 2004 -@@ -1,3 +1,4 @@ -+/* Last edited: May 12 08:36 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -Only in .: libfoocanvas.h -Only in .: libfoocanvas.pc.in -Only in .: libfoocanvastypes.c -Only in /nfs/team71/analysis/rds/workspace/ZMap/foocanvas/: support diff --git a/foocanvas/support/libfoocanvas-20050211.tar.gz b/foocanvas/support/libfoocanvas-20050211.tar.gz deleted file mode 100755 index 7dfd3fa58feebc6a96168a69aad2f5ca86e9fd6b..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20050211.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20050225.patch b/foocanvas/support/libfoocanvas-20050225.patch deleted file mode 100755 index 73ac01b75226309ca93830736a6533067436caa9..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20050225.patch +++ /dev/null @@ -1,786 +0,0 @@ -Index: foo-canvas-line.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-line.c,v -retrieving revision 1.6 -diff -u -r1.6 foo-canvas-line.c ---- foo-canvas-line.c 12 Mar 2004 16:30:49 -0000 1.6 -+++ foo-canvas-line.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 10:57 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -867,11 +868,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- line->fill_rgba >> 24, -- (line->fill_rgba >> 16) & 0xff, -- (line->fill_rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // line->fill_rgba >> 24, -+ // (line->fill_rgba >> 16) & 0xff, -+ // (line->fill_rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Index: foo-canvas-pixbuf.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-pixbuf.c,v -retrieving revision 1.8 -diff -u -r1.8 foo-canvas-pixbuf.c ---- foo-canvas-pixbuf.c 23 Apr 2004 05:31:12 -0000 1.8 -+++ foo-canvas-pixbuf.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Index: foo-canvas-polygon.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-polygon.c,v -retrieving revision 1.6 -diff -u -r1.6 foo-canvas-polygon.c ---- foo-canvas-polygon.c 4 Dec 2004 05:01:22 -0000 1.6 -+++ foo-canvas-polygon.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 11 16:45 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -261,9 +262,9 @@ - double width; - int i; - -- if (poly->num_points == 0) -- return FALSE; -- -+ if (poly->num_points == 0) -+ return FALSE; -+ - /* Compute bounds of vertices */ - - x1 = x2 = poly->coords[0]; -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -293,7 +294,7 @@ - *by1 = y1; - *bx2 = x2; - *by2 = y2; -- return TRUE; -+ return TRUE; - } - - /* Computes the bounding box of the polygon, in canvas coordinates. Assumes that the number of points in the polygon is -@@ -309,8 +310,8 @@ - - item = FOO_CANVAS_ITEM (poly); - -- if (!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -- return FALSE; -+ if(!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -+ return FALSE; - - bbox_x0 += i2w_dx; - bbox_y0 += i2w_dy; -@@ -325,7 +326,7 @@ - *by1 = bbox_y0 - 1; - *bx2 = bbox_x1 + 1; - *by2 = bbox_y1 + 1; -- return TRUE; -+ return TRUE; - } - - /* Sets the points of the polygon item to the specified ones. If needed, it will add a point to -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -679,8 +680,8 @@ - set_stipple (poly->fill_gc, &poly->fill_stipple, poly->fill_stipple, TRUE); - set_stipple (poly->outline_gc, &poly->outline_stipple, poly->outline_stipple, TRUE); - -- if (get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -- foo_canvas_update_bbox (item, x1, y1, x2, y2); -+ if(get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -+ foo_canvas_update_bbox (item, x1, y1, x2, y2); - } - - static void -@@ -801,7 +802,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Index: foo-canvas-rect-ellipse.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-rect-ellipse.c,v -retrieving revision 1.10 -diff -u -r1.10 foo-canvas-rect-ellipse.c ---- foo-canvas-rect-ellipse.c 14 Jul 2004 11:04:02 -0000 1.10 -+++ foo-canvas-rect-ellipse.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -300,7 +301,7 @@ - *py2 = cy2; - - /* Some safety fudging */ -- -+ - *px1 -= 2; - *py1 -= 2; - *px2 += 2; -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -981,7 +982,7 @@ - - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); -- -+ - if (re->fill_set) { - if ((re->fill_color & 0xff) != 255) { - GdkRectangle *rectangles; -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Index: foo-canvas-text.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-text.c,v -retrieving revision 1.7 -diff -u -r1.7 foo-canvas-text.c ---- foo-canvas-text.c 23 Apr 2004 05:36:54 -0000 1.7 -+++ foo-canvas-text.c 25 Feb 2005 16:12:35 -0000 -@@ -1,6 +1,7 @@ -+/* Last edited: May 11 11:41 2004 (rnc) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* -- * $Id: foo-canvas-text.c,v 1.7 2004/04/23 05:36:54 jody Exp $ -+ * $Id: foo-canvas-text.c,v 1.1 2004/05/13 14:36:25 rnc Exp $ - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. - * -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1227,11 +1228,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- text->rgba >> 24, -- (text->rgba >> 16) & 0xff, -- (text->rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // text->rgba >> 24, -+ // (text->rgba >> 16) & 0xff, -+ // (text->rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1537,7 +1539,8 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1570,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Index: foo-canvas-widget.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-widget.c,v -retrieving revision 1.3 -diff -u -r1.3 foo-canvas-widget.c ---- foo-canvas-widget.c 20 May 2003 13:39:31 -0000 1.3 -+++ foo-canvas-widget.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -452,8 +453,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -494,8 +495,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Index: foo-canvas.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.c,v -retrieving revision 1.24 -diff -u -r1.24 foo-canvas.c ---- foo-canvas.c 20 Oct 2004 13:53:43 -0000 1.24 -+++ foo-canvas.c 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 14 15:23 2005 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -290,7 +291,7 @@ - redraw_and_repick_if_mapped (FooCanvasItem *item) - { - if (item->object.flags & FOO_CANVAS_ITEM_MAPPED) { -- foo_canvas_item_request_redraw (item); -+ foo_canvas_item_request_redraw (item); - item->canvas->need_repick = TRUE; - } - } -@@ -1535,10 +1536,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2074,7 +2075,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2294,8 +2296,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2782,12 +2784,12 @@ - - canvas = FOO_CANVAS (widget); - -- if (emit_event (canvas, (GdkEvent *) event)) -- return TRUE; -- if (event->type == GDK_KEY_RELEASE) -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -- else -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); -+ if (emit_event (canvas, (GdkEvent *) event)) -+ return TRUE; -+ if (event->type == GDK_KEY_RELEASE) -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -+ else -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); - } - - -@@ -2967,13 +2969,13 @@ - add_idle (FooCanvas *canvas) - { - if (!canvas->idle_id) { -- /* We let the update idle handler have higher priority -- * than the redraw idle handler so the canvas state -- * will be updated during the expose event. canvas in -- * expose_event. -+ /* We let the update idle handler have higher priority -+ * than the redraw idle handler so the canvas state -+ * will be updated during the expose event. canvas in -+ * expose_event. - */ - canvas->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW - 20, -- idle_handler, canvas, NULL); -+ idle_handler, canvas, NULL); - } - } - -@@ -3093,15 +3095,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3111,7 +3133,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3119,14 +3142,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3260,7 +3284,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3323,16 +3348,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3372,16 +3398,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3398,16 +3425,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3433,11 +3461,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3460,10 +3488,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3989,3 +4017,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap() -+{ -+ // do nothing -+} -+ -+/* Last edited: Feb 14 15:21 2005 (rds) */ -Index: foo-canvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.h,v -retrieving revision 1.4 -diff -u -r1.4 foo-canvas.h ---- foo-canvas.h 2 Mar 2004 14:32:55 -0000 1.4 -+++ foo-canvas.h 25 Feb 2005 16:12:35 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 14 15:22 2005 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +531,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(); -+ - G_END_DECLS - -+ - #endif -+ diff --git a/foocanvas/support/libfoocanvas-20050225.tar.gz b/foocanvas/support/libfoocanvas-20050225.tar.gz deleted file mode 100755 index c21a6f9a3ed37f8cace0f68f8734bf9b51a973aa..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20050225.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20060104.patch b/foocanvas/support/libfoocanvas-20060104.patch deleted file mode 100755 index bfd6484f3e575fb6c4c2a379968db626dc388632..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20060104.patch +++ /dev/null @@ -1,802 +0,0 @@ -Index: foo-canvas-line.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-line.c,v -retrieving revision 1.7 -diff -u -u -r1.7 foo-canvas-line.c ---- foo-canvas-line.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-line.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 10:57 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -867,11 +868,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- line->fill_rgba >> 24, -- (line->fill_rgba >> 16) & 0xff, -- (line->fill_rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // line->fill_rgba >> 24, -+ // (line->fill_rgba >> 16) & 0xff, -+ // (line->fill_rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Index: foo-canvas-pixbuf.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-pixbuf.c,v -retrieving revision 1.9 -diff -u -u -r1.9 foo-canvas-pixbuf.c ---- foo-canvas-pixbuf.c 4 Apr 2005 15:13:29 -0000 1.9 -+++ foo-canvas-pixbuf.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Index: foo-canvas-polygon.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-polygon.c,v -retrieving revision 1.7 -diff -u -u -r1.7 foo-canvas-polygon.c ---- foo-canvas-polygon.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-polygon.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jan 4 10:58 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -261,9 +262,9 @@ - double width; - int i; - -- if (poly->num_points == 0) -- return FALSE; -- -+ if (poly->num_points == 0) -+ return FALSE; -+ - /* Compute bounds of vertices */ - - x1 = x2 = poly->coords[0]; -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -293,7 +294,7 @@ - *by1 = y1; - *bx2 = x2; - *by2 = y2; -- return TRUE; -+ return TRUE; - } - - /* Computes the bounding box of the polygon, in canvas coordinates. Assumes that the number of points in the polygon is -@@ -309,8 +310,8 @@ - - item = FOO_CANVAS_ITEM (poly); - -- if (!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -- return FALSE; -+ if(!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1)) -+ return FALSE; - - bbox_x0 += i2w_dx; - bbox_y0 += i2w_dy; -@@ -325,7 +326,7 @@ - *by1 = bbox_y0 - 1; - *bx2 = bbox_x1 + 1; - *by2 = bbox_y1 + 1; -- return TRUE; -+ return TRUE; - } - - /* Sets the points of the polygon item to the specified ones. If needed, it will add a point to -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,12 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -- -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -679,8 +677,8 @@ - set_stipple (poly->fill_gc, &poly->fill_stipple, poly->fill_stipple, TRUE); - set_stipple (poly->outline_gc, &poly->outline_stipple, poly->outline_stipple, TRUE); - -- if (get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -- foo_canvas_update_bbox (item, x1, y1, x2, y2); -+ if(get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy)) -+ foo_canvas_update_bbox (item, x1, y1, x2, y2); - } - - static void -@@ -801,7 +799,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Index: foo-canvas-rect-ellipse.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-rect-ellipse.c,v -retrieving revision 1.12 -diff -u -u -r1.12 foo-canvas-rect-ellipse.c ---- foo-canvas-rect-ellipse.c 4 Apr 2005 15:13:29 -0000 1.12 -+++ foo-canvas-rect-ellipse.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -300,7 +301,7 @@ - *py2 = cy2; - - /* Some safety fudging */ -- -+ - *px1 -= 2; - *py1 -= 2; - *px2 += 2; -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -981,7 +982,7 @@ - - foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1); - foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2); -- -+ - if (re->fill_set) { - if ((re->fill_color & 0xff) != 255) { - GdkRectangle *rectangles; -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Index: foo-canvas-text.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-text.c,v -retrieving revision 1.8 -diff -u -u -r1.8 foo-canvas-text.c ---- foo-canvas-text.c 4 Apr 2005 15:13:29 -0000 1.8 -+++ foo-canvas-text.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jan 4 12:21 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c,v 1.8 2005/04/04 15:13:29 mortenw Exp $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1227,11 +1228,11 @@ - break; - - case PROP_FILL_COLOR: -- g_value_take_string (value, -- g_strdup_printf ("#%02x%02x%02x", -- text->rgba >> 24, -- (text->rgba >> 16) & 0xff, -- (text->rgba >> 8) & 0xff)); -+ //g_value_take_string (value, -+ // g_strdup_printf ("#%02x%02x%02x", -+ // text->rgba >> 24, -+ // (text->rgba >> 16) & 0xff, -+ // (text->rgba >> 8) & 0xff)); - break; - - case PROP_FILL_COLOR_GDK: { -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1537,7 +1539,8 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1570,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Index: foo-canvas-widget.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-widget.c,v -retrieving revision 1.5 -diff -u -u -r1.5 foo-canvas-widget.c ---- foo-canvas-widget.c 13 May 2005 03:34:36 -0000 1.5 -+++ foo-canvas-widget.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Index: foo-canvas.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.c,v -retrieving revision 1.25 -diff -u -u -r1.25 foo-canvas.c ---- foo-canvas.c 4 Apr 2005 15:13:29 -0000 1.25 -+++ foo-canvas.c 4 Jan 2006 12:22:56 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jun 15 08:19 2005 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -290,7 +291,7 @@ - redraw_and_repick_if_mapped (FooCanvasItem *item) - { - if (item->object.flags & FOO_CANVAS_ITEM_MAPPED) { -- foo_canvas_item_request_redraw (item); -+ foo_canvas_item_request_redraw (item); - item->canvas->need_repick = TRUE; - } - } -@@ -1535,10 +1536,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2074,7 +2075,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2294,8 +2296,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2782,12 +2784,12 @@ - - canvas = FOO_CANVAS (widget); - -- if (emit_event (canvas, (GdkEvent *) event)) -- return TRUE; -- if (event->type == GDK_KEY_RELEASE) -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -- else -- return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); -+ if (emit_event (canvas, (GdkEvent *) event)) -+ return TRUE; -+ if (event->type == GDK_KEY_RELEASE) -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event); -+ else -+ return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event); - } - - -@@ -2967,13 +2969,13 @@ - add_idle (FooCanvas *canvas) - { - if (!canvas->idle_id) { -- /* We let the update idle handler have higher priority -- * than the redraw idle handler so the canvas state -- * will be updated during the expose event. canvas in -- * expose_event. -+ /* We let the update idle handler have higher priority -+ * than the redraw idle handler so the canvas state -+ * will be updated during the expose event. canvas in -+ * expose_event. - */ - canvas->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW - 20, -- idle_handler, canvas, NULL); -+ idle_handler, canvas, NULL); - } - } - -@@ -3093,15 +3095,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3111,7 +3133,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3119,14 +3142,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3260,7 +3284,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3323,16 +3348,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3372,16 +3398,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3398,16 +3425,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3433,11 +3461,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3460,10 +3488,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3989,3 +4017,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Feb 14 15:21 2005 (rds) */ -Index: foo-canvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.h,v -retrieving revision 1.4 -diff -u -u -r1.4 foo-canvas.h ---- foo-canvas.h 2 Mar 2004 14:32:55 -0000 1.4 -+++ foo-canvas.h 4 Jan 2006 12:22:57 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jun 15 08:20 2005 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +531,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ diff --git a/foocanvas/support/libfoocanvas-20060104.tar.gz b/foocanvas/support/libfoocanvas-20060104.tar.gz deleted file mode 100755 index d1c788cc58ab4969044a4f3576a71dea48a61874..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20060104.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20061018.patch b/foocanvas/support/libfoocanvas-20061018.patch deleted file mode 100755 index 3713c93452cb586ae58b95e67ee7c97933b23371..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20061018.patch +++ /dev/null @@ -1,742 +0,0 @@ -Index: foo-canvas-line.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-line.c,v -retrieving revision 1.7 -diff -u -w -r1.7 foo-canvas-line.c ---- foo-canvas-line.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-line.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Index: foo-canvas-pixbuf.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-pixbuf.c,v -retrieving revision 1.9 -diff -u -w -r1.9 foo-canvas-pixbuf.c ---- foo-canvas-pixbuf.c 4 Apr 2005 15:13:29 -0000 1.9 -+++ foo-canvas-pixbuf.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Index: foo-canvas-polygon.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-polygon.c,v -retrieving revision 1.7 -diff -u -w -r1.7 foo-canvas-polygon.c ---- foo-canvas-polygon.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-polygon.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Index: foo-canvas-rect-ellipse.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-rect-ellipse.c,v -retrieving revision 1.12 -diff -u -w -r1.12 foo-canvas-rect-ellipse.c ---- foo-canvas-rect-ellipse.c 4 Apr 2005 15:13:29 -0000 1.12 -+++ foo-canvas-rect-ellipse.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Index: foo-canvas-text.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-text.c,v -retrieving revision 1.8 -diff -u -w -r1.8 foo-canvas-text.c ---- foo-canvas-text.c 4 Apr 2005 15:13:29 -0000 1.8 -+++ foo-canvas-text.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c,v 1.8 2005/04/04 15:13:29 mortenw Exp $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Index: foo-canvas-widget.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-widget.c,v -retrieving revision 1.5 -diff -u -w -r1.5 foo-canvas-widget.c ---- foo-canvas-widget.c 13 May 2005 03:34:36 -0000 1.5 -+++ foo-canvas-widget.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Index: foo-canvas.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.c,v -retrieving revision 1.26 -diff -u -w -r1.26 foo-canvas.c ---- foo-canvas.c 14 Mar 2006 00:13:44 -0000 1.26 -+++ foo-canvas.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:59 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -295,6 +296,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +341,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -1370,7 +1370,7 @@ - group = FOO_CANVAS_GROUP (item); - - (* group_parent_class->update) (item, i2w_dx, i2w_dy, flags); -- -+ /* if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ */ - bbox_x0 = 0; - bbox_y0 = 0; - bbox_x1 = 0; -@@ -1398,6 +1398,8 @@ - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ /* } */ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1542,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2080,7 +2082,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2302,8 +2305,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -3101,15 +3104,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3142,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3151,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3293,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3357,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3407,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3434,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3470,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3497,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4028,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Feb 14 15:21 2005 (rds) */ -Index: foo-canvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.h,v -retrieving revision 1.4 -diff -u -w -r1.4 foo-canvas.h ---- foo-canvas.h 2 Mar 2004 14:32:55 -0000 1.4 -+++ foo-canvas.h 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jun 15 08:20 2005 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +531,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -Index: libfoocanvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/libfoocanvas.h,v -retrieving revision 1.1.1.1 -diff -u -w -r1.1.1.1 libfoocanvas.h ---- libfoocanvas.h 11 Feb 2002 04:23:32 -0000 1.1.1.1 -+++ libfoocanvas.h 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -34,6 +35,9 @@ - #include <libfoocanvas/foo-canvas-widget.h> - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> -+ -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ - - G_BEGIN_DECLS - diff --git a/foocanvas/support/libfoocanvas-20061018.tar.gz b/foocanvas/support/libfoocanvas-20061018.tar.gz deleted file mode 100755 index dcf79e28afa0266834b44003016c23f284bbb8d5..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20061018.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20070831.patch b/foocanvas/support/libfoocanvas-20070831.patch deleted file mode 100755 index a1eba54d805ac7a549741d82e48106883ce1e028..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20070831.patch +++ /dev/null @@ -1,742 +0,0 @@ -Index: foo-canvas-line.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-line.c,v -retrieving revision 1.7 -diff -u -w -r1.7 foo-canvas-line.c ---- foo-canvas-line.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-line.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Index: foo-canvas-pixbuf.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-pixbuf.c,v -retrieving revision 1.9 -diff -u -w -r1.9 foo-canvas-pixbuf.c ---- foo-canvas-pixbuf.c 4 Apr 2005 15:13:29 -0000 1.9 -+++ foo-canvas-pixbuf.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Index: foo-canvas-polygon.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-polygon.c,v -retrieving revision 1.7 -diff -u -w -r1.7 foo-canvas-polygon.c ---- foo-canvas-polygon.c 4 Apr 2005 15:13:29 -0000 1.7 -+++ foo-canvas-polygon.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Index: foo-canvas-rect-ellipse.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-rect-ellipse.c,v -retrieving revision 1.12 -diff -u -w -r1.12 foo-canvas-rect-ellipse.c ---- foo-canvas-rect-ellipse.c 4 Apr 2005 15:13:29 -0000 1.12 -+++ foo-canvas-rect-ellipse.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Index: foo-canvas-text.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-text.c,v -retrieving revision 1.8 -diff -u -w -r1.8 foo-canvas-text.c ---- foo-canvas-text.c 4 Apr 2005 15:13:29 -0000 1.8 -+++ foo-canvas-text.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c,v 1.8 2005/04/04 15:13:29 mortenw Exp $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Index: foo-canvas-widget.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas-widget.c,v -retrieving revision 1.5 -diff -u -w -r1.5 foo-canvas-widget.c ---- foo-canvas-widget.c 13 May 2005 03:34:36 -0000 1.5 -+++ foo-canvas-widget.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Index: foo-canvas.c -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.c,v -retrieving revision 1.26 -diff -u -w -r1.26 foo-canvas.c ---- foo-canvas.c 14 Mar 2006 00:13:44 -0000 1.26 -+++ foo-canvas.c 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:59 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -295,6 +296,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +341,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -1370,7 +1370,7 @@ - group = FOO_CANVAS_GROUP (item); - - (* group_parent_class->update) (item, i2w_dx, i2w_dy, flags); -- -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - bbox_x0 = 0; - bbox_y0 = 0; - bbox_x1 = 0; -@@ -1398,6 +1398,8 @@ - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ } -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1542,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -2080,7 +2082,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2302,8 +2305,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -3101,15 +3104,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3142,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3151,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3293,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3357,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3407,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3434,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3470,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3497,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4028,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Feb 14 15:21 2005 (rds) */ -Index: foo-canvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/foo-canvas.h,v -retrieving revision 1.4 -diff -u -w -r1.4 foo-canvas.h ---- foo-canvas.h 2 Mar 2004 14:32:55 -0000 1.4 -+++ foo-canvas.h 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jun 15 08:20 2005 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -371,7 +372,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +458,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +531,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -Index: libfoocanvas.h -=================================================================== -RCS file: /cvs/gnome/foocanvas/libfoocanvas/libfoocanvas.h,v -retrieving revision 1.1.1.1 -diff -u -w -r1.1.1.1 libfoocanvas.h ---- libfoocanvas.h 11 Feb 2002 04:23:32 -0000 1.1.1.1 -+++ libfoocanvas.h 19 Oct 2006 08:48:55 -0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -34,6 +35,9 @@ - #include <libfoocanvas/foo-canvas-widget.h> - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> -+ -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ - - G_BEGIN_DECLS - diff --git a/foocanvas/support/libfoocanvas-20070831.tar.gz b/foocanvas/support/libfoocanvas-20070831.tar.gz deleted file mode 100755 index f76153bffaae089c2a3c5e66a090e48f0c190e0e..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20070831.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20070905.patch b/foocanvas/support/libfoocanvas-20070905.patch deleted file mode 100755 index c31559fccb14b6403bdcb67eed078155e8ad5506..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20070905.patch +++ /dev/null @@ -1,1010 +0,0 @@ -Only in ./: aclocal.m4 -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2007-09-05 16:43:23.933000000 +0100 -+++ ./autogen.sh 2007-09-05 16:43:25.809000000 +0100 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -Only in ./: autom4te.cache -Only in ./: config.guess -Only in ./: config.h -Only in ./: config.h.in -Only in ./: config.log -Only in ./: config.status -Only in ./: config.sub -Only in ./: configure -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2007-09-05 16:43:23.880000000 +0100 -+++ ./configure.in 2007-09-05 16:43:25.819000000 +0100 -@@ -3,7 +3,7 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -Only in ./demos: canvas-arrowhead.o -Only in ./demos: canvas_demo -Only in ./demos: canvas-features.o -Only in ./demos: canvas-fifteen.o -Only in ./demos: canvas.o -Only in ./demos: canvas-primitives.o -Only in ./demos: canvas-scalability.o -Only in ./demos: .deps -Only in ./demos: .libs -Only in ./demos: Makefile -Only in ./demos: Makefile.in -Only in ./: depcomp -Only in ./: gtk-doc.make -Only in ./: INSTALL -Only in ./: install-sh -Only in ./libfoocanvas: .deps -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2007-09-05 16:43:23.013000000 +0100 -+++ ./libfoocanvas/foo-canvas.c 2007-09-05 17:28:06.622000000 +0100 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -2080,7 +2164,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2302,8 +2387,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -3101,15 +3186,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3224,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3233,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3375,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3439,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3489,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3516,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3552,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3579,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4110,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Sep 5 17:28 2007 (edgrif) */ -Only in ./libfoocanvas: foo-canvas.c.~1~ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2007-09-05 16:43:22.583000000 +0100 -+++ ./libfoocanvas/foo-canvas.h 2007-09-05 13:17:27.000000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Sep 5 08:49 2007 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -371,7 +383,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +469,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +542,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2007-09-05 16:43:22.766000000 +0100 -+++ ./libfoocanvas/foo-canvas-line.c 2007-09-05 16:43:25.848000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Only in ./libfoocanvas: foo-canvas-line.lo -Only in ./libfoocanvas: foo-canvas-line.o -Only in ./libfoocanvas: foo-canvas.lo -Only in ./libfoocanvas: foo-canvas-marshal.c -Only in ./libfoocanvas: foo-canvas-marshal.h -Only in ./libfoocanvas: foo-canvas-marshal.lo -Only in ./libfoocanvas: foo-canvas-marshal.o -Only in ./libfoocanvas: foo-canvas.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2007-09-05 16:43:22.898000000 +0100 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2007-09-05 16:43:25.860000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Only in ./libfoocanvas: foo-canvas-pixbuf.lo -Only in ./libfoocanvas: foo-canvas-pixbuf.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2007-09-05 16:43:22.744000000 +0100 -+++ ./libfoocanvas/foo-canvas-polygon.c 2007-09-05 16:43:25.872000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Only in ./libfoocanvas: foo-canvas-polygon.lo -Only in ./libfoocanvas: foo-canvas-polygon.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2007-09-05 16:43:22.788000000 +0100 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2007-09-05 16:43:25.886000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Only in ./libfoocanvas: foo-canvas-rect-ellipse.lo -Only in ./libfoocanvas: foo-canvas-rect-ellipse.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2007-09-05 16:43:22.704000000 +0100 -+++ ./libfoocanvas/foo-canvas-text.c 2007-09-05 16:43:25.918000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Only in ./libfoocanvas: foo-canvas-text.c.orig -Only in ./libfoocanvas: foo-canvas-text.lo -Only in ./libfoocanvas: foo-canvas-text.o -Only in ./libfoocanvas: foo-canvas-util.lo -Only in ./libfoocanvas: foo-canvas-util.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2007-09-05 16:43:22.681000000 +0100 -+++ ./libfoocanvas/foo-canvas-widget.c 2007-09-05 16:43:25.930000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foo-canvas-widget.lo -Only in ./libfoocanvas: foo-canvas-widget.o -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -Only in ./libfoocanvas: foozmap-canvas-line-glyph.lo -Only in ./libfoocanvas: foozmap-canvas-line-glyph.o -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2007-09-05 16:43:22.642000000 +0100 -+++ ./libfoocanvas/libfoocanvas.h 2007-09-05 16:43:25.975000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,9 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -Only in ./libfoocanvas: libfoocanvas.la -Only in ./libfoocanvas: libfoocanvas.pc -Only in ./libfoocanvas: libfoocanvastypes.lo -Only in ./libfoocanvas: libfoocanvastypes.o -Only in ./libfoocanvas: .libs -Only in ./libfoocanvas: Makefile -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2007-09-05 16:43:22.916000000 +0100 -+++ ./libfoocanvas/Makefile.am 2007-09-05 16:43:25.831000000 +0100 -@@ -22,6 +22,7 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ -@@ -36,6 +37,7 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ -Only in ./libfoocanvas: Makefile.in -Only in ./: libtool -Only in ./: ltmain.sh -Only in ./: Makefile -Only in ./: Makefile.in -Only in ./: missing -Only in ./: mkinstalldirs -Only in ./po: Makefile.in.in -Only in ./: stamp-h1 diff --git a/foocanvas/support/libfoocanvas-20070905.tar.gz b/foocanvas/support/libfoocanvas-20070905.tar.gz deleted file mode 100755 index d8f7defd97d5f6c0b393302d931d8efbfdbd5412..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20070905.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20071015.patch b/foocanvas/support/libfoocanvas-20071015.patch deleted file mode 100755 index 550e83c86f8deb0c4bd2e4ef561fc8eca716488f..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20071015.patch +++ /dev/null @@ -1,1017 +0,0 @@ -Only in ./: aclocal.m4 -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2007-10-15 12:13:33.175000000 +0100 -+++ ./autogen.sh 2007-10-15 12:13:35.445000000 +0100 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -Only in ./: autom4te.cache -Only in ./: config.guess -Only in ./: config.h -Only in ./: config.h.in -Only in ./: config.log -Only in ./: config.status -Only in ./: config.sub -Only in ./: configure -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2007-10-15 12:13:33.123000000 +0100 -+++ ./configure.in 2007-10-15 12:14:04.144000000 +0100 -@@ -3,7 +3,7 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -@@ -53,7 +53,7 @@ - AC_SUBST(HTML_DIR, $with_html_dir) - fi - --GTK_DOC_CHECK([1.0]) -+dnl GTK_DOC_CHECK([1.0]) - - AC_CONFIG_FILES([ - Makefile -Only in ./: configure.in.~1~ -Only in ./demos: canvas-arrowhead.o -Only in ./demos: canvas_demo -Only in ./demos: canvas-features.o -Only in ./demos: canvas-fifteen.o -Only in ./demos: canvas.o -Only in ./demos: canvas-primitives.o -Only in ./demos: canvas-scalability.o -Only in ./demos: .deps -Only in ./demos: .libs -Only in ./demos: Makefile -Only in ./demos: Makefile.in -Only in ./: depcomp -Only in ./: INSTALL -Only in ./: install-sh -Only in ./libfoocanvas: .deps -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2007-10-15 12:13:32.312000000 +0100 -+++ ./libfoocanvas/foo-canvas.c 2007-10-15 12:13:35.509000000 +0100 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -2080,7 +2164,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2302,8 +2387,8 @@ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -3101,15 +3186,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3224,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3233,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3375,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3439,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3489,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3516,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3552,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3579,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4110,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Sep 5 17:28 2007 (edgrif) */ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2007-10-15 12:13:31.901000000 +0100 -+++ ./libfoocanvas/foo-canvas.h 2007-10-15 12:13:35.539000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Sep 5 08:49 2007 (edgrif) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -371,7 +383,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +469,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +542,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2007-10-15 12:13:32.069000000 +0100 -+++ ./libfoocanvas/foo-canvas-line.c 2007-10-15 12:13:35.582000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -Only in ./libfoocanvas: foo-canvas-line.lo -Only in ./libfoocanvas: foo-canvas-line.o -Only in ./libfoocanvas: foo-canvas.lo -Only in ./libfoocanvas: foo-canvas-marshal.c -Only in ./libfoocanvas: foo-canvas-marshal.h -Only in ./libfoocanvas: foo-canvas-marshal.lo -Only in ./libfoocanvas: foo-canvas-marshal.o -Only in ./libfoocanvas: foo-canvas.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2007-10-15 12:13:32.197000000 +0100 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2007-10-15 12:13:35.702000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -Only in ./libfoocanvas: foo-canvas-pixbuf.lo -Only in ./libfoocanvas: foo-canvas-pixbuf.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2007-10-15 12:13:32.048000000 +0100 -+++ ./libfoocanvas/foo-canvas-polygon.c 2007-10-15 12:13:35.740000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -Only in ./libfoocanvas: foo-canvas-polygon.lo -Only in ./libfoocanvas: foo-canvas-polygon.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2007-10-15 12:13:32.090000000 +0100 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2007-10-15 12:13:35.772000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -Only in ./libfoocanvas: foo-canvas-rect-ellipse.lo -Only in ./libfoocanvas: foo-canvas-rect-ellipse.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2007-10-15 12:13:32.010000000 +0100 -+++ ./libfoocanvas/foo-canvas-text.c 2007-10-15 12:13:35.807000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -Only in ./libfoocanvas: foo-canvas-text.lo -Only in ./libfoocanvas: foo-canvas-text.o -Only in ./libfoocanvas: foo-canvas-util.lo -Only in ./libfoocanvas: foo-canvas-util.o -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2007-10-15 12:13:31.990000000 +0100 -+++ ./libfoocanvas/foo-canvas-widget.c 2007-10-15 12:13:35.834000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foo-canvas-widget.lo -Only in ./libfoocanvas: foo-canvas-widget.o -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -Only in ./libfoocanvas: foozmap-canvas-line-glyph.lo -Only in ./libfoocanvas: foozmap-canvas-line-glyph.o -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2007-10-15 12:13:31.954000000 +0100 -+++ ./libfoocanvas/libfoocanvas.h 2007-10-15 12:13:35.851000000 +0100 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,9 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -Only in ./libfoocanvas: libfoocanvas.la -Only in ./libfoocanvas: libfoocanvas.pc -Only in ./libfoocanvas: libfoocanvastypes.lo -Only in ./libfoocanvas: libfoocanvastypes.o -Only in ./libfoocanvas: .libs -Only in ./libfoocanvas: Makefile -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2007-10-15 12:13:32.215000000 +0100 -+++ ./libfoocanvas/Makefile.am 2007-10-15 12:13:35.879000000 +0100 -@@ -22,6 +22,7 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ -@@ -36,6 +37,7 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ -Only in ./libfoocanvas: Makefile.in -Only in ./: libtool -Only in ./: ltmain.sh -Only in ./: Makefile -Only in ./: Makefile.in -Only in ./: missing -Only in ./: mkinstalldirs -Only in ./po: Makefile.in.in -Only in ./: stamp-h1 diff --git a/foocanvas/support/libfoocanvas-20071015.tar.gz b/foocanvas/support/libfoocanvas-20071015.tar.gz deleted file mode 100755 index 67ef7353ead1f7a16ca48b1ca35275589ae3d4ec..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20071015.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20071109.patch b/foocanvas/support/libfoocanvas-20071109.patch deleted file mode 100755 index ac3446ced15ca04464f71c112875b1f18b89dde8..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20071109.patch +++ /dev/null @@ -1,1122 +0,0 @@ -Only in ./: aclocal.m4 -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2007-11-05 16:53:02.000000000 +0000 -+++ ./autogen.sh 2007-11-05 16:53:03.000000000 +0000 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -Only in ./: autom4te.cache -Only in ./: config.guess -Only in ./: config.h.in -Only in ./: config.sub -Only in ./: configure -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2007-11-05 16:53:02.000000000 +0000 -+++ ./configure.in 2007-11-05 16:53:03.000000000 +0000 -@@ -3,7 +3,7 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -Only in ./demos: Makefile.in -Only in ./: depcomp -Only in ./: gmon.out -Only in ./: gtk-doc.make -Only in ./: INSTALL -Only in ./: install-sh -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas.c 2007-11-09 12:11:20.008557041 +0000 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -1703,6 +1787,9 @@ - - enum { - DRAW_BACKGROUND, -+ DRAWN_ITEMS, -+ BEGIN_UPDATE, -+ END_UPDATE, - LAST_SIGNAL - }; - -@@ -2053,6 +2140,35 @@ - G_TYPE_NONE, 4, - G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); - -+ canvas_signals[DRAWN_ITEMS] = -+ g_signal_new ("drawn_items", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__INT_INT_INT_INT, -+ G_TYPE_NONE, 4, -+ G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); -+ -+ canvas_signals[BEGIN_UPDATE] = -+ g_signal_new ("begin_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ canvas_signals[END_UPDATE] = -+ g_signal_new ("end_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ - atk_registry_set_factory_type (atk_get_default_registry (), - FOO_TYPE_CANVAS, - foo_canvas_accessible_factory_get_type ()); -@@ -2080,7 +2196,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2298,12 +2415,12 @@ - int old_zoom_xofs, old_zoom_yofs; - int changed_x = FALSE, changed_y = FALSE; - int canvas_width, canvas_height; -- -+ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2867,10 +2984,14 @@ - g_source_remove (canvas->idle_id); - canvas->idle_id = 0; - } -+ - if (canvas->need_update) { - g_return_val_if_fail (!canvas->doing_update, FALSE); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; -+ - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - - g_return_val_if_fail (canvas->doing_update, FALSE); -@@ -2878,6 +2999,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Hmmm. Would like to queue antiexposes if the update marked -@@ -2888,16 +3011,20 @@ - event->area.x, event->area.y, - event->area.width, event->area.height); - -- if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED) -+ if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED){ - (* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->draw) (canvas->root, -- canvas->layout.bin_window, -- event); -- -+ canvas->layout.bin_window, -+ event); -+ } - - - /* Chain up to get exposes on child widgets */ - GTK_WIDGET_CLASS (canvas_parent_class)->expose_event (widget, event); - -+ g_signal_emit (G_OBJECT (canvas), canvas_signals[DRAWN_ITEMS], 0, -+ event->area.x, event->area.y, -+ event->area.width, event->area.height); -+ - return FALSE; - } - -@@ -2919,11 +3046,12 @@ - do_update (FooCanvas *canvas) - { - /* Cause the update if necessary */ -- - update_again: - if (canvas->need_update) { - g_return_if_fail (!canvas->doing_update); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - -@@ -2932,6 +3060,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Pick new current item */ -@@ -2949,6 +3079,8 @@ - if (canvas->need_update) { - goto update_again; - } -+ -+ return ; - } - - /* Idle handler for the canvas. It deals with pending updates and redraws. */ -@@ -3026,7 +3158,7 @@ - (canvas->scroll_x2 == x2) && (canvas->scroll_y2 == y2)) { - return; - } -- -+ - /* - * Set the new scrolling region. If possible, do not move the visible contents of the - * canvas. -@@ -3101,15 +3233,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3271,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3280,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3422,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3486,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3536,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3563,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3599,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3626,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4157,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Nov 9 12:11 2007 (rds) */ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas.h 2007-11-09 10:56:04.895677663 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Nov 9 10:56 2007 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -341,6 +353,7 @@ - #define FOO_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS)) - #define FOO_CANVAS_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS, FooCanvasClass)) - -+typedef void (*FooCanvasUpdateSignal)(FooCanvas *canvas, gpointer user_data); - - struct _FooCanvas { - GtkLayout layout; -@@ -371,7 +384,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +470,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +543,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-line.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list ./libfoocanvas/foo-canvas-marshal.list ---- ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-marshal.list 2007-11-09 11:11:00.397948830 +0000 -@@ -1,2 +1,3 @@ - VOID:INT,INT,INT,INT - BOOLEAN:BOXED -+VOID:VOID -Only in ./libfoocanvas: foo-canvas-marshal.list~ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-polygon.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-text.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-widget.c 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/libfoocanvas.h 2007-11-05 16:53:03.000000000 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,9 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2007-11-05 16:53:02.000000000 +0000 -+++ ./libfoocanvas/Makefile.am 2007-11-05 16:53:03.000000000 +0000 -@@ -22,6 +22,7 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ -@@ -36,6 +37,7 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ -Only in ./libfoocanvas: Makefile.in -Only in ./: ltmain.sh -Only in ./: Makefile.in -Only in ./: missing -Only in ./: mkinstalldirs -Only in ./po: Makefile.in.in -Only in ./: www.bytefresh.com diff --git a/foocanvas/support/libfoocanvas-20071109.tar.gz b/foocanvas/support/libfoocanvas-20071109.tar.gz deleted file mode 100755 index 661d98c24780dcb4808c250a2aee9d761f1b3afa..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20071109.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20071116.patch b/foocanvas/support/libfoocanvas-20071116.patch deleted file mode 100755 index aeba763cf2eef2756b79fd2194a19703b34b9c55..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20071116.patch +++ /dev/null @@ -1,1114 +0,0 @@ -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2007-11-16 10:21:09.992332032 +0000 -+++ ./autogen.sh 2007-11-16 10:21:10.161306063 +0000 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2007-11-16 10:21:09.990332339 +0000 -+++ ./configure.in 2007-11-16 10:24:27.899916340 +0000 -@@ -3,7 +3,8 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+dnl [dist-bz2] removed from the AM_INIT_AUTOMAKE() -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -@@ -53,7 +54,8 @@ - AC_SUBST(HTML_DIR, $with_html_dir) - fi - --GTK_DOC_CHECK([1.0]) -+dnl MAC OS X doesn't like this... (requires gtk-doc, which requires a million other packages) -+dnl GTK_DOC_CHECK([1.0]) - - AC_CONFIG_FILES([ - Makefile -Only in ./: configure.in~ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2007-11-16 10:21:09.953338025 +0000 -+++ ./libfoocanvas/foo-canvas.c 2007-11-16 10:21:10.164305602 +0000 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -1703,6 +1787,9 @@ - - enum { - DRAW_BACKGROUND, -+ DRAWN_ITEMS, -+ BEGIN_UPDATE, -+ END_UPDATE, - LAST_SIGNAL - }; - -@@ -2053,6 +2140,35 @@ - G_TYPE_NONE, 4, - G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); - -+ canvas_signals[DRAWN_ITEMS] = -+ g_signal_new ("drawn_items", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__INT_INT_INT_INT, -+ G_TYPE_NONE, 4, -+ G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); -+ -+ canvas_signals[BEGIN_UPDATE] = -+ g_signal_new ("begin_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ canvas_signals[END_UPDATE] = -+ g_signal_new ("end_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ - atk_registry_set_factory_type (atk_get_default_registry (), - FOO_TYPE_CANVAS, - foo_canvas_accessible_factory_get_type ()); -@@ -2080,7 +2196,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2298,12 +2415,12 @@ - int old_zoom_xofs, old_zoom_yofs; - int changed_x = FALSE, changed_y = FALSE; - int canvas_width, canvas_height; -- -+ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2867,10 +2984,14 @@ - g_source_remove (canvas->idle_id); - canvas->idle_id = 0; - } -+ - if (canvas->need_update) { - g_return_val_if_fail (!canvas->doing_update, FALSE); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; -+ - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - - g_return_val_if_fail (canvas->doing_update, FALSE); -@@ -2878,6 +2999,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Hmmm. Would like to queue antiexposes if the update marked -@@ -2888,16 +3011,20 @@ - event->area.x, event->area.y, - event->area.width, event->area.height); - -- if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED) -+ if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED){ - (* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->draw) (canvas->root, -- canvas->layout.bin_window, -- event); -- -+ canvas->layout.bin_window, -+ event); -+ } - - - /* Chain up to get exposes on child widgets */ - GTK_WIDGET_CLASS (canvas_parent_class)->expose_event (widget, event); - -+ g_signal_emit (G_OBJECT (canvas), canvas_signals[DRAWN_ITEMS], 0, -+ event->area.x, event->area.y, -+ event->area.width, event->area.height); -+ - return FALSE; - } - -@@ -2919,11 +3046,12 @@ - do_update (FooCanvas *canvas) - { - /* Cause the update if necessary */ -- - update_again: - if (canvas->need_update) { - g_return_if_fail (!canvas->doing_update); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - -@@ -2932,6 +3060,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Pick new current item */ -@@ -2949,6 +3079,8 @@ - if (canvas->need_update) { - goto update_again; - } -+ -+ return ; - } - - /* Idle handler for the canvas. It deals with pending updates and redraws. */ -@@ -3026,7 +3158,7 @@ - (canvas->scroll_x2 == x2) && (canvas->scroll_y2 == y2)) { - return; - } -- -+ - /* - * Set the new scrolling region. If possible, do not move the visible contents of the - * canvas. -@@ -3101,15 +3233,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3271,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3280,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3422,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3486,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3536,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3563,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3599,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3626,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4157,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Nov 9 12:11 2007 (rds) */ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2007-11-16 10:21:09.934340945 +0000 -+++ ./libfoocanvas/foo-canvas.h 2007-11-16 10:21:10.165305448 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Nov 9 10:56 2007 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -341,6 +353,7 @@ - #define FOO_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS)) - #define FOO_CANVAS_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS, FooCanvasClass)) - -+typedef void (*FooCanvasUpdateSignal)(FooCanvas *canvas, gpointer user_data); - - struct _FooCanvas { - GtkLayout layout; -@@ -371,7 +384,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +470,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +543,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2007-11-16 10:21:09.942339715 +0000 -+++ ./libfoocanvas/foo-canvas-line.c 2007-11-16 10:21:10.166305295 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list ./libfoocanvas/foo-canvas-marshal.list ---- ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list 2007-11-16 10:21:09.935340791 +0000 -+++ ./libfoocanvas/foo-canvas-marshal.list 2007-11-16 10:21:10.166305295 +0000 -@@ -1,2 +1,3 @@ - VOID:INT,INT,INT,INT - BOOLEAN:BOXED -+VOID:VOID -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2007-11-16 10:21:09.948338793 +0000 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2007-11-16 10:21:10.167305141 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2007-11-16 10:21:09.941339869 +0000 -+++ ./libfoocanvas/foo-canvas-polygon.c 2007-11-16 10:21:10.167305141 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2007-11-16 10:21:09.943339562 +0000 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2007-11-16 10:21:10.168304987 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2007-11-16 10:21:09.939340176 +0000 -+++ ./libfoocanvas/foo-canvas-text.c 2007-11-16 10:21:10.169304834 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:38 2006 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1479,14 +1481,14 @@ - PangoRectangle log_rect; - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); -- -- if (text->clip) { -+ /* if (text->clip) { // original */ -+ /* if (!text->clip) { // broken for clipped !!! ;) */ -+ if(1) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1529,7 +1531,9 @@ - return 0.0; - } - -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) - best = dist; - -@@ -1537,7 +1541,10 @@ - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ -+ /* guessing that the x factor is OK here. RNGC */ -+ /* using x factor here as that is what is used in foo-canvas.c ... */ -+ return best / item->canvas->pixels_per_unit_x; - } - - static void -@@ -1567,8 +1574,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2007-11-16 10:21:09.938340330 +0000 -+++ ./libfoocanvas/foo-canvas-widget.c 2007-11-16 10:21:10.170304680 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2007-11-16 10:21:09.936340637 +0000 -+++ ./libfoocanvas/libfoocanvas.h 2007-11-16 10:21:10.170304680 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Aug 1 11:42 2006 (edgrif) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,9 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+ -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2007-11-16 10:21:09.948338793 +0000 -+++ ./libfoocanvas/Makefile.am 2007-11-16 10:21:10.170304680 +0000 -@@ -22,6 +22,7 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ -@@ -36,6 +37,7 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ diff --git a/foocanvas/support/libfoocanvas-20071116.tar.gz b/foocanvas/support/libfoocanvas-20071116.tar.gz deleted file mode 100755 index c6d9d76ce5b0028b7bae8993d6dbbecd5bf2a99e..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20071116.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20080311.patch b/foocanvas/support/libfoocanvas-20080311.patch deleted file mode 100755 index 6c946a16d39057631dad9dfab8380ebcdfd1e4e7..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20080311.patch +++ /dev/null @@ -1,1166 +0,0 @@ -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2008-03-11 09:54:13.000000000 +0000 -+++ ./autogen.sh 2008-03-11 09:54:14.000000000 +0000 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2008-03-11 09:54:13.000000000 +0000 -+++ ./configure.in 2008-03-11 09:54:14.179121814 +0000 -@@ -3,7 +3,8 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+dnl [dist-bz2] removed from the AM_INIT_AUTOMAKE() -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -@@ -53,7 +54,8 @@ - AC_SUBST(HTML_DIR, $with_html_dir) - fi - --GTK_DOC_CHECK([1.0]) -+dnl MAC OS X doesn't like this... (requires gtk-doc, which requires a million other packages) -+dnl GTK_DOC_CHECK([1.0]) - - AC_CONFIG_FILES([ - Makefile -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas.c 2008-03-11 09:54:14.184121047 +0000 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -1703,6 +1787,9 @@ - - enum { - DRAW_BACKGROUND, -+ DRAWN_ITEMS, -+ BEGIN_UPDATE, -+ END_UPDATE, - LAST_SIGNAL - }; - -@@ -2053,6 +2140,35 @@ - G_TYPE_NONE, 4, - G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); - -+ canvas_signals[DRAWN_ITEMS] = -+ g_signal_new ("drawn_items", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__INT_INT_INT_INT, -+ G_TYPE_NONE, 4, -+ G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); -+ -+ canvas_signals[BEGIN_UPDATE] = -+ g_signal_new ("begin_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ canvas_signals[END_UPDATE] = -+ g_signal_new ("end_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ - atk_registry_set_factory_type (atk_get_default_registry (), - FOO_TYPE_CANVAS, - foo_canvas_accessible_factory_get_type ()); -@@ -2080,7 +2196,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2298,12 +2415,12 @@ - int old_zoom_xofs, old_zoom_yofs; - int changed_x = FALSE, changed_y = FALSE; - int canvas_width, canvas_height; -- -+ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2867,10 +2984,14 @@ - g_source_remove (canvas->idle_id); - canvas->idle_id = 0; - } -+ - if (canvas->need_update) { - g_return_val_if_fail (!canvas->doing_update, FALSE); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; -+ - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - - g_return_val_if_fail (canvas->doing_update, FALSE); -@@ -2878,6 +2999,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Hmmm. Would like to queue antiexposes if the update marked -@@ -2888,16 +3011,20 @@ - event->area.x, event->area.y, - event->area.width, event->area.height); - -- if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED) -+ if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED){ - (* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->draw) (canvas->root, -- canvas->layout.bin_window, -- event); -- -+ canvas->layout.bin_window, -+ event); -+ } - - - /* Chain up to get exposes on child widgets */ - GTK_WIDGET_CLASS (canvas_parent_class)->expose_event (widget, event); - -+ g_signal_emit (G_OBJECT (canvas), canvas_signals[DRAWN_ITEMS], 0, -+ event->area.x, event->area.y, -+ event->area.width, event->area.height); -+ - return FALSE; - } - -@@ -2919,11 +3046,12 @@ - do_update (FooCanvas *canvas) - { - /* Cause the update if necessary */ -- - update_again: - if (canvas->need_update) { - g_return_if_fail (!canvas->doing_update); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - -@@ -2932,6 +3060,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Pick new current item */ -@@ -2949,6 +3079,8 @@ - if (canvas->need_update) { - goto update_again; - } -+ -+ return ; - } - - /* Idle handler for the canvas. It deals with pending updates and redraws. */ -@@ -3026,7 +3158,7 @@ - (canvas->scroll_x2 == x2) && (canvas->scroll_y2 == y2)) { - return; - } -- -+ - /* - * Set the new scrolling region. If possible, do not move the visible contents of the - * canvas. -@@ -3101,15 +3233,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3271,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3280,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3422,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3486,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3536,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3563,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3599,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3626,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4157,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Nov 9 12:11 2007 (rds) */ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas.h 2008-03-11 09:54:14.186120740 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Nov 9 10:56 2007 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -341,6 +353,7 @@ - #define FOO_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS)) - #define FOO_CANVAS_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS, FooCanvasClass)) - -+typedef void (*FooCanvasUpdateSignal)(FooCanvas *canvas, gpointer user_data); - - struct _FooCanvas { - GtkLayout layout; -@@ -371,7 +384,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +470,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +543,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-line.c 2008-03-11 09:54:14.187120586 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list ./libfoocanvas/foo-canvas-marshal.list ---- ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-marshal.list 2008-03-11 09:54:14.188120433 +0000 -@@ -1,2 +1,3 @@ - VOID:INT,INT,INT,INT - BOOLEAN:BOXED -+VOID:VOID -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2008-03-11 09:54:14.189120279 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-polygon.c 2008-03-11 09:54:14.190120126 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2008-03-11 09:54:14.192119819 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-text.c 2008-03-11 10:00:08.749684858 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 1 14:44 2008 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1460,12 +1462,20 @@ - PangoLayoutIter *iter; - int x1, y1, x2, y2; - int dx, dy; -- double dist, best; -+ int icx, icy; -+ double dist, best, wx, wy; - - text = FOO_CANVAS_TEXT (item); - - *actual_item = item; - -+ wx = text->x; -+ wy = text->y; -+ -+ foo_canvas_item_i2w(item, &wx, &wy); -+ -+ foo_canvas_w2c(item->canvas, wx, wy, &icx, &icy); -+ - /* The idea is to build bounding rectangles for each of the lines of - * text (clipped by the clipping rectangle, if it is activated) and see - * whether the point is inside any of these. If it is, we are done. -@@ -1480,13 +1490,12 @@ - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); - -- if (text->clip) { -+ if(text->clip) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1502,10 +1511,10 @@ - if ((x1 >= x2) || (y1 >= y2)) - continue; - } else { -- x1 = text->x; -- y1 = text->y; -- x2 = log_rect.width; -- y2 = log_rect.height; -+ x1 = icx + PANGO_PIXELS(log_rect.x); -+ y1 = icy + PANGO_PIXELS(log_rect.y); -+ x2 = x1 + PANGO_PIXELS(log_rect.width); -+ y2 = y1 + PANGO_PIXELS(log_rect.height); - } - - /* Calculate distance from point to rectangle */ -@@ -1529,15 +1538,21 @@ - return 0.0; - } - -+ /* convert to difference in world coords as that's -+ * what $best is measured in. */ -+ dx /= item->canvas->pixels_per_unit_x; -+ dy /= item->canvas->pixels_per_unit_y; -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) -- best = dist; -+ best = dist; - - } while (pango_layout_iter_next_line(iter)); - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ return best; - } - - static void -@@ -1567,8 +1582,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/foo-canvas-widget.c 2008-03-11 09:54:14.194119512 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foozmap-canvas-floating-group.c -Only in ./libfoocanvas: foozmap-canvas-floating-group.h -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -Only in ./libfoocanvas: foozmap-canvas-text.c -Only in ./libfoocanvas: foozmap-canvas-text.h -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/libfoocanvas.h 2008-03-11 10:00:44.301226557 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jan 24 09:17 2008 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,10 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+#include <libfoocanvas/foozmap-canvas-text.h> -+#include <libfoocanvas/foozmap-canvas-floating-group.h> -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2008-03-11 09:54:13.000000000 +0000 -+++ ./libfoocanvas/Makefile.am 2008-03-11 10:00:26.684931225 +0000 -@@ -22,10 +22,13 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ - foo-canvas-text.h \ -+ foozmap-canvas-text.h \ -+ foozmap-canvas-floating-group.h \ - foo-canvas-util.h \ - foo-canvas-widget.h \ - foo-canvas.h \ -@@ -36,10 +39,13 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ - foo-canvas-text.c \ -+ foozmap-canvas-text.c \ -+ foozmap-canvas-floating-group.c \ - foo-canvas-util.c \ - foo-canvas-widget.c \ - foo-canvas.c \ diff --git a/foocanvas/support/libfoocanvas-20080311.tar.gz b/foocanvas/support/libfoocanvas-20080311.tar.gz deleted file mode 100755 index 47fa6c586612847e1c4581aedeca2ba699a51181..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20080311.tar.gz and /dev/null differ diff --git a/foocanvas/support/libfoocanvas-20080320.patch b/foocanvas/support/libfoocanvas-20080320.patch deleted file mode 100755 index 108132777ad699ac0bf431642276e9a4ef3c8867..0000000000000000000000000000000000000000 --- a/foocanvas/support/libfoocanvas-20080320.patch +++ /dev/null @@ -1,1166 +0,0 @@ -diff -u -r ../foocanvas.latest/autogen.sh ./autogen.sh ---- ../foocanvas.latest/autogen.sh 2008-03-20 16:05:00.971628013 +0000 -+++ ./autogen.sh 2008-03-20 16:05:01.311575791 +0000 -@@ -41,5 +41,5 @@ - exit 1 - fi - --REQUIRED_AUTOMAKE_VERSION=1.5 -+REQUIRED_AUTOMAKE_VERSION=1.9 - GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen -diff -u -r ../foocanvas.latest/configure.in ./configure.in ---- ../foocanvas.latest/configure.in 2008-03-20 16:05:00.969628320 +0000 -+++ ./configure.in 2008-03-20 16:05:01.311575791 +0000 -@@ -3,7 +3,8 @@ - AC_CONFIG_SRCDIR([libfoocanvas/foo-canvas.c]) - - AC_CONFIG_HEADERS([config.h]) --AM_INIT_AUTOMAKE([dist-bz2]) -+dnl [dist-bz2] removed from the AM_INIT_AUTOMAKE() -+AM_INIT_AUTOMAKE([]) - - AM_MAINTAINER_MODE - -@@ -53,7 +54,8 @@ - AC_SUBST(HTML_DIR, $with_html_dir) - fi - --GTK_DOC_CHECK([1.0]) -+dnl MAC OS X doesn't like this... (requires gtk-doc, which requires a million other packages) -+dnl GTK_DOC_CHECK([1.0]) - - AC_CONFIG_FILES([ - Makefile -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.c ./libfoocanvas/foo-canvas.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas.c 2008-03-20 16:05:00.932634003 +0000 -+++ ./libfoocanvas/foo-canvas.c 2008-03-20 16:05:01.313575484 +0000 -@@ -78,7 +78,7 @@ - - static void foo_canvas_request_update (FooCanvas *canvas); - static void group_add (FooCanvasGroup *group, -- FooCanvasItem *item); -+ FooCanvasItem *item, FooCanvasGroupPosition position); - static void group_remove (FooCanvasGroup *group, - FooCanvasItem *item); - static void redraw_and_repick_if_mapped (FooCanvasItem *item); -@@ -190,17 +190,56 @@ - } - - -+/** -+ * foo_canvas_item_new: -+ * @parent: The parent group for the new item. -+ * @type: The object type of the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated, -+ * used to configure the item. For example, "fill_color", "black", -+ * "width_units", 5.0, NULL. -+ * @Varargs: -+ * -+ * Creates a new canvas item with @parent as its parent group. The item is -+ * created at the top of its parent's stack, and starts up as visible. The item -+ * is of the specified @type, for example, it can be -+ * foo_canvas_rect_get_type(). The list of object arguments/value pairs is -+ * used to configure the item. -+ * -+ * Return value: The newly-created item. -+ **/ -+FooCanvasItem * -+foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...) -+{ -+ FooCanvasItem *item; -+ va_list args; -+ -+ g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL); -+ g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL); -+ -+ item = FOO_CANVAS_ITEM (g_object_new (type, NULL)); -+ -+ va_start (args, first_arg_name); -+ foo_canvas_item_construct_position (item, parent, position, first_arg_name, args); -+ va_end (args); -+ -+ return item; -+} -+ -+ - /* Performs post-creation operations on a canvas item (adding it to its parent - * group, etc.) - */ - static void --item_post_create_setup (FooCanvasItem *item) -+item_post_create_setup (FooCanvasItem *item, FooCanvasGroupPosition position) - { - GtkObject *obj; - - obj = GTK_OBJECT (item); - -- group_add (FOO_CANVAS_GROUP (item->parent), item); -+ group_add (FOO_CANVAS_GROUP (item->parent), item, position); - - redraw_and_repick_if_mapped (item); - } -@@ -224,7 +263,7 @@ - } else if (g_value_get_object (value)) { - item->parent = FOO_CANVAS_ITEM (g_value_get_object (value)); - item->canvas = item->parent->canvas; -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); - } - break; - case ITEM_PROP_VISIBLE: -@@ -282,7 +321,34 @@ - - g_object_set_valist (G_OBJECT (item), first_arg_name, args); - -- item_post_create_setup (item); -+ item_post_create_setup (item, FOO_CANVAS_GROUP_TOP); -+} -+ -+ -+/** -+ * foo_canvas_item_construct_position: -+ * @item: An unconstructed canvas item. -+ * @parent: The parent group for the item. -+ * @position: puts new item at bottom (FOO_CANVAS_GROUP_BOTTOM) or top (FOO_CANVAS_GROUP_TOP) -+ * of parents stack of child items. -+ * @first_arg_name: The name of the first argument for configuring the item. -+ * @args: The list of arguments used to configure the item. -+ * -+ * Constructs a canvas item; meant for use only by item implementations. -+ **/ -+void -+foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args) -+{ -+ g_return_if_fail (FOO_IS_CANVAS_GROUP (parent)); -+ g_return_if_fail (FOO_IS_CANVAS_ITEM (item)); -+ -+ item->parent = FOO_CANVAS_ITEM (parent); -+ item->canvas = item->parent->canvas; -+ -+ g_object_set_valist (G_OBJECT (item), first_arg_name, args); -+ -+ item_post_create_setup (item, position); - } - - -@@ -295,6 +361,7 @@ - } - } - -+ - /* Destroy handler for canvas items */ - static void - foo_canvas_item_destroy (GtkObject *object) -@@ -339,10 +406,8 @@ - - if (item->parent) - group_remove (FOO_CANVAS_GROUP (item->parent), item); -- - item->canvas = NULL; - } -- - GTK_OBJECT_CLASS (item_parent_class)->destroy (object); - } - -@@ -992,7 +1057,7 @@ - group_remove (FOO_CANVAS_GROUP (item->parent), item); - item->parent = FOO_CANVAS_ITEM (new_group); - /* item->canvas is unchanged. */ -- group_add (new_group, item); -+ group_add (new_group, item, FOO_CANVAS_GROUP_TOP); - - /* Redraw and repick */ - -@@ -1376,6 +1441,7 @@ - bbox_x1 = 0; - bbox_y1 = 0; - -+ if(item->object.flags & FOO_CANVAS_ITEM_VISIBLE){ - for (list = group->item_list; list; list = list->next) { - i = list->data; - -@@ -1394,10 +1460,14 @@ - bbox_y1 = MAX (bbox_y1, i->y2); - } - } -+ -+ } - item->x1 = bbox_x0; - item->y1 = bbox_y0; - item->x2 = bbox_x1; - item->y2 = bbox_y1; -+ -+ return ; - } - - /* Unrealize handler for canvas groups */ -@@ -1540,10 +1610,10 @@ - has_point = TRUE; - } else - has_point = FALSE; -- -+ /* guessing that the x factor is OK here. RNGC */ - if (has_point - && point_item -- && ((int) (dist * item->canvas->pixels_per_unit + 0.5) -+ && ((int) (dist * item->canvas->pixels_per_unit_x + 0.5) - <= item->canvas->close_enough)) { - best = dist; - *actual_item = point_item; -@@ -1553,7 +1623,7 @@ - return best; - } - --static void -+void - foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy) - { - FooCanvasGroup *group; -@@ -1642,16 +1712,30 @@ - - /* Adds an item to a group */ - static void --group_add (FooCanvasGroup *group, FooCanvasItem *item) -+group_add (FooCanvasGroup *group, FooCanvasItem *item, FooCanvasGroupPosition position) - { - g_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); - -- if (!group->item_list) { -- group->item_list = g_list_append (group->item_list, item); -- group->item_list_end = group->item_list; -- } else -- group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ if (position == FOO_CANVAS_GROUP_TOP) -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_append (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list_end = g_list_append (group->item_list_end, item)->next; -+ } -+ else -+ { -+ if (!group->item_list) { -+ group->item_list = g_list_prepend (group->item_list, item); -+ group->item_list_end = group->item_list; -+ } else -+ group->item_list = g_list_prepend (group->item_list, item); -+ } -+ -+ -+ - - if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE && - group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) { -@@ -1703,6 +1787,9 @@ - - enum { - DRAW_BACKGROUND, -+ DRAWN_ITEMS, -+ BEGIN_UPDATE, -+ END_UPDATE, - LAST_SIGNAL - }; - -@@ -2053,6 +2140,35 @@ - G_TYPE_NONE, 4, - G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); - -+ canvas_signals[DRAWN_ITEMS] = -+ g_signal_new ("drawn_items", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__INT_INT_INT_INT, -+ G_TYPE_NONE, 4, -+ G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); -+ -+ canvas_signals[BEGIN_UPDATE] = -+ g_signal_new ("begin_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ canvas_signals[END_UPDATE] = -+ g_signal_new ("end_update", -+ G_TYPE_FROM_CLASS (object_class), -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, NULL, -+ foo_canvas_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ - atk_registry_set_factory_type (atk_get_default_registry (), - FOO_TYPE_CANVAS, - foo_canvas_accessible_factory_get_type ()); -@@ -2080,7 +2196,8 @@ - canvas->scroll_x2 = canvas->layout.width; - canvas->scroll_y2 = canvas->layout.height; - -- canvas->pixels_per_unit = 1.0; -+ canvas->pixels_per_unit_x = 1.0; -+ canvas->pixels_per_unit_y = 1.0; - - canvas->pick_event.type = GDK_LEAVE_NOTIFY; - canvas->pick_event.crossing.x = 0; -@@ -2298,12 +2415,12 @@ - int old_zoom_xofs, old_zoom_yofs; - int changed_x = FALSE, changed_y = FALSE; - int canvas_width, canvas_height; -- -+ - canvas_width = GTK_WIDGET (canvas)->allocation.width; - canvas_height = GTK_WIDGET (canvas)->allocation.height; - -- scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5); -- scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5); -+ scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit_x + 0.5); -+ scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit_y + 0.5); - - right_limit = scroll_width - canvas_width; - bottom_limit = scroll_height - canvas_height; -@@ -2867,10 +2984,14 @@ - g_source_remove (canvas->idle_id); - canvas->idle_id = 0; - } -+ - if (canvas->need_update) { - g_return_val_if_fail (!canvas->doing_update, FALSE); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; -+ - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - - g_return_val_if_fail (canvas->doing_update, FALSE); -@@ -2878,6 +2999,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Hmmm. Would like to queue antiexposes if the update marked -@@ -2888,16 +3011,20 @@ - event->area.x, event->area.y, - event->area.width, event->area.height); - -- if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED) -+ if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED){ - (* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->draw) (canvas->root, -- canvas->layout.bin_window, -- event); -- -+ canvas->layout.bin_window, -+ event); -+ } - - - /* Chain up to get exposes on child widgets */ - GTK_WIDGET_CLASS (canvas_parent_class)->expose_event (widget, event); - -+ g_signal_emit (G_OBJECT (canvas), canvas_signals[DRAWN_ITEMS], 0, -+ event->area.x, event->area.y, -+ event->area.width, event->area.height); -+ - return FALSE; - } - -@@ -2919,11 +3046,12 @@ - do_update (FooCanvas *canvas) - { - /* Cause the update if necessary */ -- - update_again: - if (canvas->need_update) { - g_return_if_fail (!canvas->doing_update); - -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[BEGIN_UPDATE], 0); -+ - canvas->doing_update = TRUE; - foo_canvas_item_invoke_update (canvas->root, 0, 0, 0); - -@@ -2932,6 +3060,8 @@ - canvas->doing_update = FALSE; - - canvas->need_update = FALSE; -+ -+ g_signal_emit(G_OBJECT (canvas), canvas_signals[END_UPDATE], 0); - } - - /* Pick new current item */ -@@ -2949,6 +3079,8 @@ - if (canvas->need_update) { - goto update_again; - } -+ -+ return ; - } - - /* Idle handler for the canvas. It deals with pending updates and redraws. */ -@@ -3026,7 +3158,7 @@ - (canvas->scroll_x2 == x2) && (canvas->scroll_y2 == y2)) { - return; - } -- -+ - /* - * Set the new scrolling region. If possible, do not move the visible contents of the - * canvas. -@@ -3101,15 +3233,35 @@ - - /** - * foo_canvas_set_pixels_per_unit: -- * @canvas: A canvas. -+ * @canvas: A canvas - * @n: The number of pixels that correspond to one canvas unit. - * - * Sets the zooming factor of a canvas by specifying the number of pixels that - * correspond to one canvas unit. -+ * This is retained for backwards compatibility and just calls -+ * foo_canvas_set_pixels_per_unit_xy, passing the number of pixels/unit twice. - **/ - void - foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n) - { -+ foo_canvas_set_pixels_per_unit_xy(canvas, n, n); -+ return; -+} -+ -+ -+/** -+ * foo_canvas_set_pixels_per_unit_xy: -+ * @canvas: A canvas. -+ * @x: The number of pixels that correspond to one canvas unit on the x axis. -+ * @y: The number of pixels that correspond to one canvas unit on the y axis. -+ * -+ * Sets the zooming factor of a canvas by specifying the number of pixels that -+ * correspond to one canvas unit. -+ * Having two zooming factors enables asymmetric zooming. -+ **/ -+void -+foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y) -+{ - GtkWidget *widget; - double cx, cy; - int x1, y1; -@@ -3119,7 +3271,8 @@ - gint attributes_mask; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); -- g_return_if_fail (n > FOO_CANVAS_EPSILON); -+ /* guessing that the x factor is OK here. RNCG */ -+ g_return_if_fail (x > FOO_CANVAS_EPSILON); - - widget = GTK_WIDGET (canvas); - -@@ -3127,14 +3280,15 @@ - center_y = widget->allocation.height / 2; - - /* Find the coordinates of the screen center in units. */ -- cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs; -- cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs; -+ cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit_x + canvas->scroll_x1 + canvas->zoom_xofs; -+ cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit_y + canvas->scroll_y1 + canvas->zoom_yofs; - - /* Now calculate the new offset of the upper left corner. (round not truncate) */ -- x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5; -- y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5; -+ x1 = ((cx - canvas->scroll_x1) * x) - center_x + .5; -+ y1 = ((cy - canvas->scroll_y1) * y) - center_y + .5; - -- canvas->pixels_per_unit = n; -+ canvas->pixels_per_unit_x = x; -+ canvas->pixels_per_unit_y = y; - - if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) { - canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE; -@@ -3268,7 +3422,8 @@ - foo_canvas_w2c (canvas, x, y, &cx, &cy); - - dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item); -- if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough) -+ /* guessing the x factor is OK here. RNGC */ -+ if ((int) (dist * canvas->pixels_per_unit_x + 0.5) <= canvas->close_enough) - return item; - else - return NULL; -@@ -3331,16 +3486,17 @@ - void - foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5); -+ *cx = floor ((wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs + 0.5); - if (cy) -- *cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5); -+ *cy = floor ((wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs + 0.5); - } - - /** -@@ -3380,16 +3536,17 @@ - void - foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (cx) -- *cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs; -+ *cx = (wx - canvas->scroll_x1)*zoom_x + canvas->zoom_xofs; - if (cy) -- *cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs; -+ *cy = (wy - canvas->scroll_y1)*zoom_y + canvas->zoom_yofs; - } - - -@@ -3406,16 +3563,17 @@ - void - foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy) - { -- double zoom; -+ double zoom_x, zoom_y; - - g_return_if_fail (FOO_IS_CANVAS (canvas)); - -- zoom = canvas->pixels_per_unit; -+ zoom_x = canvas->pixels_per_unit_x; -+ zoom_y = canvas->pixels_per_unit_y; - - if (wx) -- *wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1; -+ *wx = (cx - canvas->zoom_xofs)/zoom_x + canvas->scroll_x1; - if (wy) -- *wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1; -+ *wy = (cy - canvas->zoom_yofs)/zoom_y + canvas->scroll_y1; - } - - -@@ -3441,11 +3599,11 @@ - - if (worldx) - *worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_x); - - if (worldy) - *worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs) -- / canvas->pixels_per_unit); -+ / canvas->pixels_per_unit_y); - } - - -@@ -3468,10 +3626,10 @@ - g_return_if_fail (FOO_IS_CANVAS (canvas)); - - if (winx) -- *winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; -+ *winx = (canvas->pixels_per_unit_x)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs; - - if (winy) -- *winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; -+ *winy = (canvas->pixels_per_unit_y)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs; - } - - -@@ -3999,3 +4157,11 @@ - FOO_TYPE_CANVAS_ITEM, - foo_canvas_item_accessible_factory_get_type ()); - } -+ -+void -+foo_canvas_zmap(void) -+{ -+ /* do nothing */ -+} -+ -+/* Last edited: Nov 9 12:11 2007 (rds) */ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas.h ./libfoocanvas/foo-canvas.h ---- ../foocanvas.latest/libfoocanvas/foo-canvas.h 2008-03-20 16:05:00.912637075 +0000 -+++ ./libfoocanvas/foo-canvas.h 2008-03-20 16:05:01.314575330 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Nov 9 10:56 2007 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation -@@ -101,6 +102,11 @@ - FOO_CANVAS_UPDATE_DEEP = 1 << 1 - }; - -+ -+/* Special positions for putting new items at top or bottom of group. */ -+typedef enum {FOO_CANVAS_GROUP_BOTTOM = -1, FOO_CANVAS_GROUP_TOP = -2} FooCanvasGroupPosition ; -+ -+ - #define FOO_TYPE_CANVAS_ITEM (foo_canvas_item_get_type ()) - #define FOO_CANVAS_ITEM(obj) (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem)) - #define FOO_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass)) -@@ -186,10 +192,16 @@ - FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type, - const gchar *first_arg_name, ...); - -+FooCanvasItem *foo_canvas_item_new_position (FooCanvasGroup *parent, GType type, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, ...); -+ - /* Constructors for use in derived classes and language wrappers */ - void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent, - const gchar *first_arg_name, va_list args); - -+void foo_canvas_item_construct_position (FooCanvasItem *item, FooCanvasGroup *parent, FooCanvasGroupPosition position, -+ const gchar *first_arg_name, va_list args); -+ - /* Configure an item using the standard Gtk argument mechanism. The last - * argument must be a NULL pointer. - */ -@@ -341,6 +353,7 @@ - #define FOO_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS)) - #define FOO_CANVAS_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS, FooCanvasClass)) - -+typedef void (*FooCanvasUpdateSignal)(FooCanvas *canvas, gpointer user_data); - - struct _FooCanvas { - GtkLayout layout; -@@ -371,7 +384,8 @@ - double scroll_x2, scroll_y2; - - /* Scaling factor to be used for display */ -- double pixels_per_unit; -+ double pixels_per_unit_x; -+ double pixels_per_unit_y; - - /* Idle handler ID */ - guint idle_id; -@@ -456,6 +470,10 @@ - /* Sets the number of pixels that correspond to one unit in world coordinates */ - void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n); - -+/* Sets the number of pixels corresponding to one unit in world coordinates -+ * separately on x and y axes, allowing asymmetric zooming. */ -+void foo_canvas_set_pixels_per_unit_xy (FooCanvas *canvas, double x, double y); -+ - /* Wether the canvas centers the scroll region if it is smaller than the window */ - void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region); - -@@ -525,6 +543,10 @@ - */ - void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc); - -+void foo_canvas_zmap(void); -+ - G_END_DECLS - -+ - #endif -+ -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-line.c ./libfoocanvas/foo-canvas-line.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-line.c 2008-03-20 16:05:00.921635692 +0000 -+++ ./libfoocanvas/foo-canvas-line.c 2008-03-20 16:05:01.315575177 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 18 18:34 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -338,7 +339,7 @@ - /* Add possible over-estimate for wide lines */ - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -466,7 +467,7 @@ - return; - - if (line->width_pixels) -- width = line->width / line->item.canvas->pixels_per_unit; -+ width = line->width / line->item.canvas->pixels_per_unit_x; - else - width = line->width; - -@@ -477,9 +478,9 @@ - shape_c = line->shape_c + width / 2.0; - - if (line->width_pixels) { -- shape_a /= line->item.canvas->pixels_per_unit; -- shape_b /= line->item.canvas->pixels_per_unit; -- shape_c /= line->item.canvas->pixels_per_unit; -+ shape_a /= line->item.canvas->pixels_per_unit_x; -+ shape_b /= line->item.canvas->pixels_per_unit_x; -+ shape_c /= line->item.canvas->pixels_per_unit_x; - } - - shape_a += 0.001; -@@ -600,7 +601,7 @@ - if (line->width_pixels) - width = (int) line->width; - else -- width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (line->width * line->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (line->gc, - width, -@@ -1126,12 +1127,12 @@ - */ - - if (line->width_pixels) -- width = line->width / item->canvas->pixels_per_unit; -+ width = line->width / item->canvas->pixels_per_unit_x; - else - width = line->width; - -- if (width < (1.0 / item->canvas->pixels_per_unit)) -- width = 1.0 / item->canvas->pixels_per_unit; -+ if (width < (1.0 / item->canvas->pixels_per_unit_x)) -+ width = 1.0 / item->canvas->pixels_per_unit_x; - - changed_miter_to_bevel = 0; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list ./libfoocanvas/foo-canvas-marshal.list ---- ../foocanvas.latest/libfoocanvas/foo-canvas-marshal.list 2008-03-20 16:05:00.914636767 +0000 -+++ ./libfoocanvas/foo-canvas-marshal.list 2008-03-20 16:05:01.315575177 +0000 -@@ -1,2 +1,3 @@ - VOID:INT,INT,INT,INT - BOOLEAN:BOXED -+VOID:VOID -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c ./libfoocanvas/foo-canvas-pixbuf.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-pixbuf.c 2008-03-20 16:05:00.927634771 +0000 -+++ ./libfoocanvas/foo-canvas-pixbuf.c 2008-03-20 16:05:01.315575177 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:33 2004 (rnc) */ - /* GNOME libraries - GdkPixbuf item for the GNOME canvas - * - * Copyright (C) 1999 The Free Software Foundation -@@ -564,13 +565,13 @@ - } - - if (priv->x_in_pixels) { -- x = i2w_dx + priv->x / item->canvas->pixels_per_unit; -+ x = i2w_dx + priv->x / item->canvas->pixels_per_unit_x; - } else { - x = i2w_dx + priv->x; - } - - if (priv->y_in_pixels) { -- y = i2w_dy + priv->y / item->canvas->pixels_per_unit; -+ y = i2w_dy + priv->y / item->canvas->pixels_per_unit_y; - } else { - y = i2w_dy + priv->y; - } -@@ -582,7 +583,7 @@ - } - - if (priv->width_in_pixels) -- width /= item->canvas->pixels_per_unit; -+ width /= item->canvas->pixels_per_unit_x; - - if (priv->height_set) { - height = priv->height; -@@ -591,7 +592,7 @@ - } - - if (priv->height_in_pixels) -- height /= item->canvas->pixels_per_unit; -+ height /= item->canvas->pixels_per_unit_y; - - - switch (priv->anchor) { -@@ -781,8 +782,8 @@ - pixbuf = priv->pixbuf; - - *actual_item = item; -- -- no_hit = item->canvas->pixels_per_unit * 2 + 10; -+ /* guessing that the x factor is OK here. RNGC */ -+ no_hit = item->canvas->pixels_per_unit_x * 2 + 10; - - if (!priv->pixbuf) - return no_hit; -@@ -823,13 +824,13 @@ - priv = gcp->priv; - - if (priv->x_in_pixels) { -- priv->x += dx * item->canvas->pixels_per_unit; -+ priv->x += dx * item->canvas->pixels_per_unit_x; - } else { - priv->x += dx; - } - - if (priv->y_in_pixels) { -- priv->y += dy * item->canvas->pixels_per_unit; -+ priv->y += dy * item->canvas->pixels_per_unit_y; - } else { - priv->y += dy; - } -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c ./libfoocanvas/foo-canvas-polygon.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-polygon.c 2008-03-20 16:05:00.919635999 +0000 -+++ ./libfoocanvas/foo-canvas-polygon.c 2008-03-20 16:05:01.316575023 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Oct 19 09:39 2006 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -276,7 +277,7 @@ - /* Add outline width */ - - if (poly->width_pixels) -- width = poly->width / poly->item.canvas->pixels_per_unit; -+ width = poly->width / poly->item.canvas->pixels_per_unit_x; - else - width = poly->width; - -@@ -400,7 +401,7 @@ - if (poly->width_pixels) - width = (int) poly->width; - else -- width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (poly->width * poly->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (poly->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); -@@ -595,15 +596,16 @@ - static void - get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value) - { -- GdkColor *color; -+ GdkColor color; - GdkColormap *colormap; - -- color = g_new (GdkColor, 1); -- color->pixel = pixel; -+ //color = g_new (GdkColor, 1); -+ //color->pixel = pixel; - -- colormap = gtk_widget_get_colormap (GTK_WIDGET (poly)); -- gdk_rgb_find_color (colormap, color); -- g_value_set_boxed (value, color); -+ colormap = gtk_widget_get_colormap (GTK_WIDGET (FOO_CANVAS_ITEM(poly)->canvas)); -+ gdk_colormap_query_color(colormap, pixel, &color); -+ //gdk_rgb_find_color (colormap, color); -+ g_value_set_boxed (value, &color); - } - - static void -@@ -801,7 +803,7 @@ - - if (poly->outline_set) { - if (poly->width_pixels) -- width = poly->width / item->canvas->pixels_per_unit; -+ width = poly->width / item->canvas->pixels_per_unit_x; - else - width = poly->width; - -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c ./libfoocanvas/foo-canvas-rect-ellipse.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-rect-ellipse.c 2008-03-20 16:05:00.922635539 +0000 -+++ ./libfoocanvas/foo-canvas-rect-ellipse.c 2008-03-20 16:05:01.316575023 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 25 11:09 2005 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -281,7 +282,7 @@ - item = FOO_CANVAS_ITEM (re); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -352,7 +353,7 @@ - if (re->width_pixels) - width = (int) re->width; - else -- width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width = (int) (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - gdk_gc_set_line_attributes (re->outline_gc, width, - GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER); -@@ -734,7 +735,7 @@ - re = FOO_CANVAS_RE (item); - - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1065,7 +1066,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0; -+ hwidth = (re->width / item->canvas->pixels_per_unit_x) / 2.0; - else - hwidth = re->width / 2.0; - -@@ -1191,7 +1192,7 @@ - if (re->width_pixels) - width_pixels = (int) re->width; - else -- width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5); -+ width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit_x + 0.5); - - width_lt = width_pixels / 2; - width_rb = (width_pixels + 1) / 2; -@@ -1344,7 +1345,7 @@ - - if (re->outline_set) { - if (re->width_pixels) -- width = re->width / item->canvas->pixels_per_unit; -+ width = re->width / item->canvas->pixels_per_unit_x; - else - width = re->width; - } else -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-text.c ./libfoocanvas/foo-canvas-text.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-text.c 2008-03-20 16:05:00.918636153 +0000 -+++ ./libfoocanvas/foo-canvas-text.c 2008-03-20 16:05:01.317574870 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Feb 1 14:44 2008 (rds) */ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - /* - * $Id: foo-canvas-text.c 52 2005-04-04 15:13:29Z mortenw $ -@@ -615,8 +616,8 @@ - /* Get canvas pixel coordinates for clip rectangle position */ - - foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy); -- text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit; -- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit; -+ text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit_x; -+ text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit_y; - - /* Anchor text */ - -@@ -976,7 +977,7 @@ - case PROP_WRAP_WIDTH: { - double w = fabs (g_value_get_double (value)); - pango_layout_set_width (text->layout, -- w * text->item.canvas->pixels_per_unit * PANGO_SCALE); -+ w * text->item.canvas->pixels_per_unit_x * PANGO_SCALE); - - break; - } -@@ -1252,11 +1253,11 @@ - break; - - case PROP_TEXT_WIDTH: -- g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit_x); - break; - - case PROP_TEXT_HEIGHT: -- g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit); -+ g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit_y); - break; - - default: -@@ -1309,7 +1310,8 @@ - if (text->rise_set) - add_attr (attr_list, pango_attr_rise_new (text->rise)); - -- zoom = text->item.canvas->pixels_per_unit; -+ /* guessing that the x factor is OK here. RNGC */ -+ zoom = text->item.canvas->pixels_per_unit_x; - if (fabs (zoom - 1.) > 1e-4) { - PangoAttribute *attr = pango_attr_scale_new (zoom); - attr->start_index = 0; -@@ -1460,12 +1462,20 @@ - PangoLayoutIter *iter; - int x1, y1, x2, y2; - int dx, dy; -- double dist, best; -+ int icx, icy; -+ double dist, best, wx, wy; - - text = FOO_CANVAS_TEXT (item); - - *actual_item = item; - -+ wx = text->x; -+ wy = text->y; -+ -+ foo_canvas_item_i2w(item, &wx, &wy); -+ -+ foo_canvas_w2c(item->canvas, wx, wy, &icx, &icy); -+ - /* The idea is to build bounding rectangles for each of the lines of - * text (clipped by the clipping rectangle, if it is activated) and see - * whether the point is inside any of these. If it is, we are done. -@@ -1480,13 +1490,12 @@ - - pango_layout_iter_get_line_extents (iter, NULL, &log_rect); - -- if (text->clip) { -+ if(text->clip) { - x1 = PANGO_PIXELS (log_rect.x); - y1 = PANGO_PIXELS (log_rect.y); - x2 = PANGO_PIXELS (log_rect.x+log_rect.width); - y2 = PANGO_PIXELS (log_rect.y+log_rect.height); - -- - if (x1 < text->clip_cx) - x1 = text->clip_cx; - -@@ -1502,10 +1511,10 @@ - if ((x1 >= x2) || (y1 >= y2)) - continue; - } else { -- x1 = text->x; -- y1 = text->y; -- x2 = log_rect.width; -- y2 = log_rect.height; -+ x1 = icx + PANGO_PIXELS(log_rect.x); -+ y1 = icy + PANGO_PIXELS(log_rect.y); -+ x2 = x1 + PANGO_PIXELS(log_rect.width); -+ y2 = y1 + PANGO_PIXELS(log_rect.height); - } - - /* Calculate distance from point to rectangle */ -@@ -1529,15 +1538,21 @@ - return 0.0; - } - -+ /* convert to difference in world coords as that's -+ * what $best is measured in. */ -+ dx /= item->canvas->pixels_per_unit_x; -+ dy /= item->canvas->pixels_per_unit_y; -+ - dist = sqrt (dx * dx + dy * dy); -+ - if (dist < best) -- best = dist; -+ best = dist; - - } while (pango_layout_iter_next_line(iter)); - - pango_layout_iter_free(iter); - -- return best / item->canvas->pixels_per_unit; -+ return best; - } - - static void -@@ -1567,8 +1582,8 @@ - width = text->clip_width; - height = text->clip_height; - } else { -- width = text->max_width / item->canvas->pixels_per_unit; -- height = text->height / item->canvas->pixels_per_unit; -+ width = text->max_width / item->canvas->pixels_per_unit_x; -+ height = text->height / item->canvas->pixels_per_unit_y; - } - - switch (text->anchor) { -diff -u -r ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c ./libfoocanvas/foo-canvas-widget.c ---- ../foocanvas.latest/libfoocanvas/foo-canvas-widget.c 2008-03-20 16:05:00.916636460 +0000 -+++ ./libfoocanvas/foo-canvas-widget.c 2008-03-20 16:05:01.318574716 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: May 11 11:42 2004 (rnc) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -456,8 +457,8 @@ - witem->cwidth = (int) (witem->width + 0.5); - witem->cheight = (int) (witem->height + 0.5); - } else { -- witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5); -- witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5); -+ witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit_x + 0.5); -+ witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit_y + 0.5); - } - - gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight); -@@ -516,8 +517,8 @@ - - foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1); - -- x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit; -- y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit; -+ x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit_x; -+ y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit_y; - - /* Is point inside widget bounds? */ - -Only in ./libfoocanvas: foozmap-canvas-floating-group.c -Only in ./libfoocanvas: foozmap-canvas-floating-group.h -Only in ./libfoocanvas: foozmap-canvas-line-glyph.c -Only in ./libfoocanvas: foozmap-canvas-line-glyph.h -Only in ./libfoocanvas: foozmap-canvas-text.c -Only in ./libfoocanvas: foozmap-canvas-text.h -diff -u -r ../foocanvas.latest/libfoocanvas/libfoocanvas.h ./libfoocanvas/libfoocanvas.h ---- ../foocanvas.latest/libfoocanvas/libfoocanvas.h 2008-03-20 16:05:00.915636614 +0000 -+++ ./libfoocanvas/libfoocanvas.h 2008-03-20 16:05:01.318574716 +0000 -@@ -1,3 +1,4 @@ -+/* Last edited: Jan 24 09:17 2008 (rds) */ - /* - * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation - * All rights reserved. -@@ -35,6 +36,10 @@ - #include <libfoocanvas/foo-canvas-rect-ellipse.h> - #include <libfoocanvas/foo-canvas-util.h> - -+#include <libfoocanvas/foozmap-canvas-line-glyph.h> -+#include <libfoocanvas/foozmap-canvas-text.h> -+#include <libfoocanvas/foozmap-canvas-floating-group.h> -+ - G_BEGIN_DECLS - - GType foo_canvas_points_get_type (void); -diff -u -r ../foocanvas.latest/libfoocanvas/Makefile.am ./libfoocanvas/Makefile.am ---- ../foocanvas.latest/libfoocanvas/Makefile.am 2008-03-20 16:05:00.927634771 +0000 -+++ ./libfoocanvas/Makefile.am 2008-03-20 16:05:01.318574716 +0000 -@@ -22,10 +22,13 @@ - - libfoocanvasinclude_HEADERS = \ - foo-canvas-line.h \ -+ foozmap-canvas-line-glyph.h \ - foo-canvas-pixbuf.h \ - foo-canvas-polygon.h \ - foo-canvas-rect-ellipse.h \ - foo-canvas-text.h \ -+ foozmap-canvas-text.h \ -+ foozmap-canvas-floating-group.h \ - foo-canvas-util.h \ - foo-canvas-widget.h \ - foo-canvas.h \ -@@ -36,10 +39,13 @@ - foo-canvas-marshal.list \ - foo-canvas-i18n.h \ - foo-canvas-line.c \ -+ foozmap-canvas-line-glyph.c \ - foo-canvas-pixbuf.c \ - foo-canvas-polygon.c \ - foo-canvas-rect-ellipse.c \ - foo-canvas-text.c \ -+ foozmap-canvas-text.c \ -+ foozmap-canvas-floating-group.c \ - foo-canvas-util.c \ - foo-canvas-widget.c \ - foo-canvas.c \ diff --git a/foocanvas/support/libfoocanvas-20080320.tar.gz b/foocanvas/support/libfoocanvas-20080320.tar.gz deleted file mode 100755 index 5b13b0d8034387741d18b39acf0a6239f94d8fb2..0000000000000000000000000000000000000000 Binary files a/foocanvas/support/libfoocanvas-20080320.tar.gz and /dev/null differ diff --git a/foocanvas/support/untar_patch.sh b/foocanvas/support/untar_patch.sh deleted file mode 100755 index 7779621ccb48f9b39eeff067ad80ef0a83d70351..0000000000000000000000000000000000000000 --- a/foocanvas/support/untar_patch.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -############################################################ -# -# script to untar and patch libfoocanvas for us. -# Set the following: - -FOOCANVAS_VERSION=20070831 - -# -# -############################################################ - -PACKAGE=libfoocanvas-${FOOCANVAS_VERSION} - -THISSCRIPT=`basename $0` -SUPPORTDIR=`dirname $0` # directory we can cd to - CALLEDDIR=`pwd` - -cd $SUPPORTDIR -SUPPORTDIR=`pwd` # and find the actual path - -if [ ! -z $WORKSPACE ]; then - CALLEDDIR=$WORKSPACE -fi - -cd $CALLEDDIR - -tar -zxf $SUPPORTDIR/${PACKAGE}.tar.gz - -cd ${PACKAGE}/libfoocanvas - -patch -p0 -u < $SUPPORTDIR/${PACKAGE}.patch - -echo "run ./configure, make, make install in '$CALLEDDIR/$PACKAGE'"