[gnome-mag] D-BUS implementation of ZoomRegion properties exposed throw the PropertyBag.



commit b6cdaffd3121f61bc17654ad10fac1e7c2767f60
Author: Carlos Eduardo Rodrigues DiÃgenes <cerdiogenes gmail com>
Date:   Mon Feb 1 12:25:16 2010 -0200

    D-BUS implementation of ZoomRegion properties exposed throw the PropertyBag.

 configure.in                             |    6 +-
 magnifier/Makefile.am                    |    2 +-
 magnifier/magnifier.c                    |   36 --
 magnifier/zoom-region.c                  |  456 +++++++++++++++++++++++++-
 magnifier/zoom-region.h                  |   78 ++++--
 xml/org.freedesktop.gnome.ZoomRegion.xml |  413 ++++++++++++++++++++++--
 xml/spec.xml                             |  527 ------------------------------
 7 files changed, 885 insertions(+), 633 deletions(-)
---
diff --git a/configure.in b/configure.in
index 73cc787..9255b21 100644
--- a/configure.in
+++ b/configure.in
@@ -13,21 +13,21 @@ AC_CONFIG_MACRO_DIR([m4])
 dnl libtool versioning from libgnome
 
 GNOME_MAG_MAJOR_VERSION=0
-GNOME_MAG_MINOR_VERSION=15
+GNOME_MAG_MINOR_VERSION=16
 GNOME_MAG_INTERFACE_AGE=10
 dnl below should change if the interface has additions, changes, removals.
 GNOME_MAG_CURRENT=`expr $GNOME_MAG_MINOR_VERSION - $GNOME_MAG_INTERFACE_AGE`
 
 dnl increment any time the source you release changes; set to
 dnl 0 if you increment CURRENT
-GNOME_MAG_REVISION=9
+GNOME_MAG_REVISION=0
 
 GNOME_MAG_MICRO_VERSION=$GNOME_MAG_REVISION
 
 dnl increment if any interfaces have been added; set to 0
 dnl  if any interfaces have been removed. removals has
 dnl  precedence over adding, so set to 0 if both happened.
-GNOME_MAG_AGE=3
+GNOME_MAG_AGE=4
 
 AC_SUBST(GNOME_MAG_CURRENT)
 AC_SUBST(GNOME_MAG_REVISION)
diff --git a/magnifier/Makefile.am b/magnifier/Makefile.am
index 2828ee7..c757711 100644
--- a/magnifier/Makefile.am
+++ b/magnifier/Makefile.am
@@ -104,7 +104,7 @@ $(IDL_OUT) : $(IDL) $(ORBIT_IDL)
 
 DONT_DIST_SOURCE = $(IDL_OUT)
 
-CLEANFILES += $(server_in_files) $(serverinfo_DATA)
+CLEANFILES += $(server_in_files) $(serverinfo_DATA) $(service_DATA)
 
 BUILT_SOURCES += magnifier-server.h magnifier-client.h zoom-region-server.h zoom-region-client.h
 
diff --git a/magnifier/magnifier.c b/magnifier/magnifier.c
index 4c3adba..c7fdfc8 100644
--- a/magnifier/magnifier.c
+++ b/magnifier/magnifier.c
@@ -976,40 +976,6 @@ magnifier_get_property (BonoboPropertyBag *bag,
 	};
 }
 
-static void
-magnifier_set_target_size (gpointer data)
-{
-	Magnifier *magnifier = (Magnifier *) data;
-
-	magnifier->target_bounds.x1 = 0;
-	magnifier->target_bounds.y1 = 0;
-	magnifier->target_bounds.x2 = 150;
-	magnifier->target_bounds.y2 = 150;
-
-	if (magnifier->priv->overlay)
-		gdk_window_move_resize (magnifier->priv->overlay,
-					magnifier->target_bounds.x1,
-					magnifier->target_bounds.y1,
-					magnifier->target_bounds.x2 -
-					magnifier->target_bounds.x1,
-					magnifier->target_bounds.y2 -
-					magnifier->target_bounds.y1);
-	else
-		gtk_window_move (GTK_WINDOW (magnifier->priv->w),
-				 magnifier->target_bounds.x1,
-				 magnifier->target_bounds.y1);
-
-	gtk_window_resize (GTK_WINDOW (magnifier->priv->w),
-			   magnifier->target_bounds.x2 - magnifier->target_bounds.x1,
-			   magnifier->target_bounds.y2 - magnifier->target_bounds.y1);
-	gmag_gs_check_set_struts (magnifier);
-	DBG(fprintf (stderr, "Set target size: \t%d,%d to %d,%d\n", 
-		      magnifier->target_bounds.x1, magnifier->target_bounds.y1, magnifier->target_bounds.x2, magnifier->target_bounds.y2));
-	if (!strcmp (magnifier->target_display_name, magnifier->source_display_name) && 
-	    (magnifier->target_screen_num == magnifier->source_screen_num)) 
-	    magnifier_adjust_source_size (magnifier);
-}
-
 gboolean
 impl_dbus_magnifier_set_source_display (Magnifier *magnifier, gchar *source_display)
 {
@@ -1738,8 +1704,6 @@ impl_dbus_magnifier_create_zoom_region (Magnifier *magnifier,
 				   	const gint32 **roi,
 				   	const gint32 **viewport)
 {
-	magnifier_set_target_size (magnifier);
-
 	ZoomRegion *zoom_region = zoom_region_new();
 
 	DBG (fprintf (stderr, "Create zoom region: \tzoom %f,%f, viewport %d,%d to %d,%d\n", (float) zx, (float) zy, (*viewport)[0]/*x1*/, (*viewport)[1]/*y1*/, (*viewport)[2]/*x2*/, (*viewport)[3]/*y3*/));
diff --git a/magnifier/zoom-region.c b/magnifier/zoom-region.c
index 0c8e12b..9352e17 100644
--- a/magnifier/zoom-region.c
+++ b/magnifier/zoom-region.c
@@ -2550,6 +2550,308 @@ zoom_region_update_borders (ZoomRegion *zoom_region)
 	gtk_fixed_move (GTK_FIXED (((Magnifier *)zoom_region->priv->parent)->priv->canvas), zoom_region->priv->w, zoom_region->viewport.x1 + zoom_region->border_size_left, zoom_region->viewport.y1 + zoom_region->border_size_top);
 }
 
+gboolean
+impl_dbus_zoom_region_set_managed (ZoomRegion *zoom_region, gboolean managed)
+{
+	zoom_region->is_managed = managed;
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_managed (ZoomRegion *zoom_region)
+{
+	return zoom_region->is_managed;
+}
+
+gboolean
+impl_dbus_zoom_region_set_poll_mouse (ZoomRegion *zoom_region, gboolean poll_mouse)
+{
+	zoom_region->poll_mouse = poll_mouse;
+	if (zoom_region->poll_mouse) {
+		g_message ("Adding polling timer");
+		zoom_region->priv->update_pointer_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE,
+									   200,
+									   zoom_region_update_pointer_timeout,
+									   zoom_region,
+									   NULL);
+	} else if (zoom_region->priv->update_pointer_id) {
+		g_message ("Removing polling time");
+		g_source_remove (zoom_region->priv->update_pointer_id);
+		zoom_region->priv->update_pointer_id = 0;
+	}
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_poll_mouse (ZoomRegion *zoom_region)
+{
+	return zoom_region->poll_mouse;
+}
+
+gboolean
+impl_dbus_zoom_region_set_draw_cursor (ZoomRegion *zoom_region, gboolean draw_cursor)
+{
+	zoom_region->draw_cursor = draw_cursor;
+	if (!zoom_region->draw_cursor) {
+		zoom_region_unpaint_cursor (zoom_region, NULL);
+	}
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_draw_cursor (ZoomRegion *zoom_region)
+{
+	return zoom_region->draw_cursor;
+}
+
+gboolean
+impl_dbus_zoom_region_set_invert (ZoomRegion *zoom_region, gboolean invert)
+{
+	zoom_region->invert = invert;
+	zoom_region_update_current (zoom_region);
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_invert (ZoomRegion *zoom_region)
+{
+	return zoom_region->invert;
+}
+
+gboolean
+impl_dbus_zoom_region_set_smoothscroll (ZoomRegion *zoom_region, gshort smoothscroll)
+{
+	zoom_region->smooth_scroll_policy = smoothscroll;
+	
+	return TRUE;
+}
+
+gshort
+impl_dbus_zoom_region_get_smoothscroll (ZoomRegion *zoom_region)
+{
+	return zoom_region->smooth_scroll_policy;
+}
+
+gboolean
+impl_dbus_zoom_region_set_colorblind (ZoomRegion *zoom_region, gshort colorblind)
+{
+	zoom_region->color_blind_filter = colorblind;
+	zoom_region_update_current (zoom_region);
+	
+	return TRUE;
+}
+
+gshort
+impl_dbus_zoom_region_get_colorblind (ZoomRegion *zoom_region)
+{
+	return zoom_region->color_blind_filter;
+}
+
+gboolean
+impl_dbus_zoom_region_set_smoothing (ZoomRegion *zoom_region, gchar *smoothing)
+{
+	zoom_region->smoothing = g_strdup (smoothing);
+	if (!strncmp (zoom_region->smoothing, "bilinear", 8)) {
+		zoom_region->priv->gdk_interp_type = GDK_INTERP_BILINEAR;
+	} else {
+		zoom_region->priv->gdk_interp_type = GDK_INTERP_NEAREST;
+	}
+	zoom_region_update_current (zoom_region);
+	
+	return TRUE;
+}
+
+gchar*
+impl_dbus_zoom_region_get_smoothing (ZoomRegion *zoom_region)
+{
+	return g_strdup (zoom_region->smoothing);
+}
+
+gboolean
+impl_dbus_zoom_region_set_testpattern (ZoomRegion *zoom_region, gboolean test)
+{
+	zoom_region->priv->test = test;
+	if (zoom_region->priv->source_drawable) {
+		g_object_unref (zoom_region->priv->source_drawable);
+		zoom_region->priv->source_drawable = NULL;
+	}
+	zoom_region_update_current (zoom_region);
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_testpattern (ZoomRegion *zoom_region)
+{
+	return zoom_region->priv->test;
+}
+
+gboolean
+impl_dbus_zoom_region_set_bordersizes (ZoomRegion *zoom_region, gint32 **bordersizes)
+{
+	zoom_region->border_size_left   = (*bordersizes)[0];
+	zoom_region->border_size_top    = (*bordersizes)[1];
+	zoom_region->border_size_right  = (*bordersizes)[2];
+	zoom_region->border_size_bottom = (*bordersizes)[3];
+	zoom_region_update_borders (zoom_region);
+	
+	return TRUE;
+}
+
+GArray*
+impl_dbus_zoom_region_get_bordersizes (ZoomRegion *zoom_region)
+{
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gint32));
+	
+	g_array_append_val (ret, zoom_region->border_size_left);
+	g_array_append_val (ret, zoom_region->border_size_top);
+	g_array_append_val (ret, zoom_region->border_size_right);
+	g_array_append_val (ret, zoom_region->border_size_bottom);
+	
+	return ret;
+}
+
+gboolean
+impl_dbus_zoom_region_set_bordercolor (ZoomRegion *zoom_region, guint32 bordercolor)
+{
+	zoom_region->border_color = bordercolor;
+	zoom_region_paint_border (zoom_region);
+	
+	return TRUE;
+}
+
+guint32
+impl_dbus_zoom_region_get_bordercolor (ZoomRegion *zoom_region)
+{
+	return zoom_region->border_color;
+}
+
+gboolean
+impl_dbus_zoom_region_set_xalign (ZoomRegion *zoom_region, gint32 align)
+{
+	zoom_region->x_align_policy = align;
+	zoom_region_align (zoom_region);
+	
+	return TRUE;
+}
+
+gint32
+impl_dbus_zoom_region_get_xalign (ZoomRegion *zoom_region)
+{
+	return zoom_region->x_align_policy;
+}
+
+gboolean
+impl_dbus_zoom_region_set_yalign (ZoomRegion *zoom_region, gint32 align)
+{
+	zoom_region->y_align_policy = align;
+	zoom_region_align (zoom_region);
+	
+	return TRUE;
+}
+
+gint32
+impl_dbus_zoom_region_get_yalign (ZoomRegion *zoom_region)
+{
+	return zoom_region->y_align_policy;
+}
+
+gboolean
+impl_dbus_zoom_region_set_viewport (ZoomRegion *zoom_region, gint32 **viewport)
+{
+	GNOME_Magnifier_RectBounds *bounds = g_malloc (sizeof (GNOME_Magnifier_RectBounds));
+
+	bounds->x1 = (*viewport)[0];
+	bounds->y1 = (*viewport)[1];
+	bounds->x2 = (*viewport)[2];
+	bounds->y2 = (*viewport)[3];
+	
+	zoom_region_set_viewport (zoom_region, bounds);
+	
+	g_free (bounds);
+	
+	return TRUE;
+}
+
+GArray*
+impl_dbus_zoom_region_get_viewport (ZoomRegion *zoom_region)
+{
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gint32));
+	
+	g_array_append_val (ret, zoom_region->viewport.x1);
+	g_array_append_val (ret, zoom_region->viewport.y1);
+	g_array_append_val (ret, zoom_region->viewport.x2);
+	g_array_append_val (ret, zoom_region->viewport.y2);
+	
+	return ret;
+}
+
+gboolean
+impl_dbus_zoom_region_set_timing_test (ZoomRegion *zoom_region, gint32 timing_iterations)
+{
+	zoom_region->timing_iterations = timing_iterations;
+	timing_test = TRUE;
+	
+	return TRUE;
+}
+
+gint32
+impl_dbus_zoom_region_get_timing_test (ZoomRegion *zoom_region)
+{
+	return zoom_region->timing_iterations;
+}
+
+gboolean
+impl_dbus_zoom_region_set_timing_output (ZoomRegion *zoom_region, gboolean timing_output)
+{
+	zoom_region->timing_output = timing_output;
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_timing_output (ZoomRegion *zoom_region)
+{
+	return zoom_region->timing_output;
+}
+
+gboolean
+impl_dbus_zoom_region_set_timing_pan_rate (ZoomRegion *zoom_region, gint32 timing_pan_rate)
+{
+	zoom_region->timing_pan_rate = timing_pan_rate;
+	timing_test = TRUE;
+	
+	return TRUE;
+}
+
+gint32
+impl_dbus_zoom_region_get_timing_pan_rate (ZoomRegion *zoom_region)
+{
+	return zoom_region->timing_pan_rate;
+}
+
+gboolean
+impl_dbus_zoom_region_set_exit_magnifier (ZoomRegion *zoom_region, gboolean exit_magnifier)
+{
+	zoom_region->exit_magnifier = exit_magnifier;
+	
+	return TRUE;
+}
+
+gboolean
+impl_dbus_zoom_region_get_exit_magnifier (ZoomRegion *zoom_region)
+{
+	return zoom_region->exit_magnifier;
+}
+
 static void
 zoom_region_set_property (BonoboPropertyBag *bag,
 			  BonoboArg *arg,
@@ -3217,7 +3519,7 @@ impl_dbus_zoom_region_dispose (ZoomRegion *zoom_region)
 }
 
 gboolean
-impl_dbus_zoom_region_set_mag_factor (ZoomRegion *zoom_region, const float mag_factor_x, const float mag_factor_y)
+impl_dbus_zoom_region_set_mag_factor (ZoomRegion *zoom_region, const gdouble mag_factor_x, const gdouble mag_factor_y)
 {
 #ifdef ZOOM_REGION_DEBUG
 	g_assert (zoom_region->alive);
@@ -3253,10 +3555,17 @@ impl_dbus_zoom_region_set_mag_factor (ZoomRegion *zoom_region, const float mag_f
 	return retval;
 }
 
-gboolean
+GArray*
 impl_dbus_zoom_region_get_mag_factor (ZoomRegion *zoom_region)
 {
-	return TRUE;
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gdouble));
+	
+	g_array_append_val (ret, zoom_region->xscale);
+	g_array_append_val (ret, zoom_region->yscale);
+
+	return ret;
 }
 
 gboolean
@@ -3339,22 +3648,54 @@ impl_dbus_zoom_region_set_roi (ZoomRegion *zoom_region, const gint32 **roi)
 	return TRUE;
 }
 
+/* TODO: Deprecate this RPC */
 gboolean
 impl_dbus_zoom_region_update_pointer (ZoomRegion *zoom_region)
 {
-	return TRUE;
+#ifdef ZOOM_REGION_DEBUG
+	g_assert (zoom_region->alive);
+#endif
+
+	zoom_region_update_cursor (zoom_region, 0, 0, NULL);
 }
 
 gboolean
-impl_dbus_zoom_region_mark_dirty (ZoomRegion *zoom_region)
+impl_dbus_zoom_region_mark_dirty (ZoomRegion *zoom_region, gint32 **bounds)
 {
+	GNOME_Magnifier_RectBounds *roi_dirty = g_malloc(sizeof(GNOME_Magnifier_RectBounds));
+	roi_dirty->x1 = (*bounds)[0];
+	roi_dirty->y1 = (*bounds)[1];
+	roi_dirty->x2 = (*bounds)[2];
+	roi_dirty->y2 = (*bounds)[3];
+
+#ifdef ZOOM_REGION_DEBUG
+	g_assert (zoom_region->alive);
+#endif
+	DEBUG_RECT ("mark dirty", zoom_region_rect_from_bounds (
+			    zoom_region, roi_dirty) );
+
+	zoom_region_update_pointer (zoom_region, TRUE);
+	/* XXX ? should we clip here, or wait till process_updates? */
+	zoom_region_queue_update (zoom_region, 
+	  zoom_region_clip_to_source (zoom_region, 
+	      zoom_region_rect_from_bounds (zoom_region, roi_dirty)));
+
 	return TRUE;
 }
 
-gboolean
+GArray*
 impl_dbus_zoom_region_get_roi (ZoomRegion *zoom_region)
 {
-	return TRUE;
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gint32));
+	
+	g_array_append_val (ret, zoom_region->roi.x1);
+	g_array_append_val (ret, zoom_region->roi.y1);
+	g_array_append_val (ret, zoom_region->roi.x2);
+	g_array_append_val (ret, zoom_region->roi.y2);
+	
+	return ret;
 }
 
 gboolean
@@ -3375,32 +3716,119 @@ impl_dbus_zoom_region_move_resize (ZoomRegion *zoom_region, const gint32 **viewp
 }
 
 gboolean
-impl_dbus_zoom_region_set_pointer_pos (ZoomRegion *zoom_region) {
+impl_dbus_zoom_region_set_pointer_pos (ZoomRegion *zoom_region, gint32 mouse_x, gint32 mouse_y)
+{
+	GdkRectangle paint_area, *clip = NULL;
+
+#ifdef ZOOM_REGION_DEBUG
+	g_assert (zoom_region->alive);
+#endif
+	DBG (fprintf (stderr, "Set Pointer: \t%ld,%ld\n", 
+		      (long) mouse_x, (long) mouse_y));
+
+	fprintf (stderr, "Set Pointer: \t%ld,%ld\n", 
+		      (long) mouse_x, (long) mouse_y);
+
+	zoom_region_set_cursor_pos (zoom_region, (int) mouse_x, (int) mouse_y);
+
+	if (GTK_IS_WIDGET (zoom_region->priv->w) && 
+	    GDK_IS_DRAWABLE (zoom_region->priv->w->window))
+	{
+	    gdk_drawable_get_size (
+		GDK_DRAWABLE (
+		    zoom_region->priv->w->window),
+		&paint_area.width, &paint_area.height);
+	    paint_area.x = 0;
+	    paint_area.y = 0;
+	    clip = &paint_area;
+	    paint_area = zoom_region_clip_to_source (
+		zoom_region, paint_area);
+	}
+	/* 
+	 * if we update the cursor now, it causes flicker if the client 
+	 * subsequently calls setROI, so we wait for a redraw.
+	 * Perhaps we should cue a redraw on idle instead?
+	 */
+
 	return TRUE;
 }
 
 gboolean
-impl_dbus_zoom_region_set_contrast (ZoomRegion *zoom_region)
+impl_dbus_zoom_region_set_contrast (ZoomRegion *zoom_region, gdouble R, gdouble G, gdouble B)
 {
+	gfloat t;
+
+#ifdef ZOOM_REGION_DEBUG
+	g_assert (zoom_region->alive);
+#endif
+	DBG (fprintf (stderr, "Set contrast: \t%f,%f %f\n", R, G, B));
+
+	/* if the contrast values are the same, this is a NOOP */
+	if (zoom_region->contrast_r == R &&
+	    zoom_region->contrast_g == G &&
+	    zoom_region->contrast_b == B)
+		return TRUE;
+
+	zoom_region->contrast_r = CLAMP_B_C (R);
+	zoom_region->contrast_g = CLAMP_B_C (G);
+	zoom_region->contrast_b = CLAMP_B_C (B);
+
+	zoom_region_update_current (zoom_region);
+
 	return TRUE;
 }
 
-gboolean
+GArray*
 impl_dbus_zoom_region_get_contrast (ZoomRegion *zoom_region)
 {
-	return TRUE;
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gdouble));
+	
+	g_array_append_val (ret, zoom_region->contrast_r);
+	g_array_append_val (ret, zoom_region->contrast_g);
+	g_array_append_val (ret, zoom_region->contrast_b);
+	
+	return ret;
 }
 
 gboolean
-impl_dbus_zoom_region_set_brightness (ZoomRegion *zoom_region)
+impl_dbus_zoom_region_set_brightness (ZoomRegion *zoom_region, gdouble R, gdouble G, gdouble B)
 {
+	gfloat t;
+
+#ifdef ZOOM_REGION_DEBUG
+	g_assert (zoom_region->alive);
+#endif
+	DBG (fprintf (stderr, "Set brightness: \t%f,%f %f\n", R, G, B));
+
+	/* if the contrast values are the same, this is a NOOP */
+	if (zoom_region->bright_r == R &&
+	    zoom_region->bright_g == G &&
+	    zoom_region->bright_b == B)
+		return TRUE;
+
+	zoom_region->bright_r = CLAMP_B_C (R);
+	zoom_region->bright_g = CLAMP_B_C (G);
+	zoom_region->bright_b = CLAMP_B_C (B);
+
+	zoom_region_update_current (zoom_region);
+	
 	return TRUE;
 }
 
-gboolean
+GArray*
 impl_dbus_zoom_region_get_brightness (ZoomRegion *zoom_region)
 {
-	return TRUE;
+	GArray *ret;
+	
+	ret = g_array_new (FALSE, FALSE, sizeof (gdouble));
+	
+	g_array_append_val (ret, zoom_region->bright_r);
+	g_array_append_val (ret, zoom_region->bright_g);
+	g_array_append_val (ret, zoom_region->bright_b);
+	
+	return ret;
 }
 
 /* could be called multiple times */
diff --git a/magnifier/zoom-region.h b/magnifier/zoom-region.h
index ef22889..f678fcd 100644
--- a/magnifier/zoom-region.h
+++ b/magnifier/zoom-region.h
@@ -52,14 +52,14 @@ typedef struct {
 	gchar *smoothing;
 	gchar *object_path;
 	gfloat contrast;
-	gfloat xscale;
-	gfloat yscale;
-	gfloat contrast_r;
-	gfloat contrast_g;
-	gfloat contrast_b;
-	gfloat bright_r;
-	gfloat bright_g;
-	gfloat bright_b;
+	gdouble xscale;
+	gdouble yscale;
+	gdouble contrast_r;
+	gdouble contrast_g;
+	gdouble contrast_b;
+	gdouble bright_r;
+	gdouble bright_g;
+	gdouble bright_b;
 	gint border_size_top;
 	gint border_size_left;
 	gint border_size_right;
@@ -94,20 +94,54 @@ GType     zoom_region_get_type (void);
 ZoomRegion *zoom_region_new     (void);
 
 /* D-BUS methods */
-gboolean impl_dbus_zoom_region_set_mag_factor (ZoomRegion *zoom_region, const float mag_factor_x,
-		const float mag_factor_y);
-gboolean impl_dbus_zoom_region_get_mag_factor (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_set_roi (ZoomRegion *zoom_region, const gint32 **roi);
-gboolean impl_dbus_zoom_region_update_pointer (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_mark_dirty (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_get_roi (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_move_resize (ZoomRegion *zoom_region, const gint32 **viewport);
-gboolean impl_dbus_zoom_region_dispose (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_set_pointer_pos (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_set_contrast (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_get_contrast (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_set_brightness (ZoomRegion *zoom_region);
-gboolean impl_dbus_zoom_region_get_brightness (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_mag_factor (ZoomRegion *zoom_region, const gdouble mag_factor_x,
+			const gdouble mag_factor_y);
+GArray*		impl_dbus_zoom_region_get_mag_factor (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_roi (ZoomRegion *zoom_region, const gint32 **roi);
+gboolean	impl_dbus_zoom_region_update_pointer (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_mark_dirty (ZoomRegion *zoom_region, gint32 **bounds);
+GArray*		impl_dbus_zoom_region_get_roi (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_move_resize (ZoomRegion *zoom_region, const gint32 **viewport);
+gboolean	impl_dbus_zoom_region_dispose (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_pointer_pos (ZoomRegion *zoom_region, gint32 mouse_x, gint32 mouse_y);
+gboolean	impl_dbus_zoom_region_set_contrast (ZoomRegion *zoom_region, gdouble R, gdouble G, gdouble B);
+GArray*		impl_dbus_zoom_region_get_contrast (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_brightness (ZoomRegion *zoom_region, gdouble R, gdouble G, gdouble B);
+GArray*		impl_dbus_zoom_region_get_brightness (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_managed (ZoomRegion *zoom_region, gboolean managed);
+gboolean	impl_dbus_zoom_region_get_managed (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_poll_mouse (ZoomRegion *zoom_region, gboolean poll_mouse);
+gboolean	impl_dbus_zoom_region_get_poll_mouse (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_draw_cursor (ZoomRegion *zoom_region, gboolean draw_cursor);
+gboolean	impl_dbus_zoom_region_get_draw_cursor (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_invert (ZoomRegion *zoom_region, gboolean invert);
+gboolean	impl_dbus_zoom_region_get_invert (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_smoothscroll (ZoomRegion *zoom_region, gshort smoothscroll);
+gshort		impl_dbus_zoom_region_get_smoothscroll (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_colorblind (ZoomRegion *zoom_region, gshort colorblind);
+gshort		impl_dbus_zoom_region_get_colorblind (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_smoothing (ZoomRegion *zoom_region, gchar *smoothing);
+gchar*		impl_dbus_zoom_region_get_smoothing (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_testpattern (ZoomRegion *zoom_region, gboolean test);
+gboolean	impl_dbus_zoom_region_get_testpattern (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_bordersizes (ZoomRegion *zoom_region, gint32 **bordersizes);
+GArray*		impl_dbus_zoom_region_get_bordersizes (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_bordercolor (ZoomRegion *zoom_region, guint32 bordercolor);
+guint32		impl_dbus_zoom_region_get_bordercolor (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_xalign (ZoomRegion *zoom_region, gint32 align);
+gint32		impl_dbus_zoom_region_get_xalign (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_yalign (ZoomRegion *zoom_region, gint32 align);
+gint32		impl_dbus_zoom_region_get_yalign (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_viewport (ZoomRegion *zoom_region, gint32 **viewport);
+GArray*		impl_dbus_zoom_region_get_viewport (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_timing_test (ZoomRegion *zoom_region, gint32 timing_iterations);
+gint32		impl_dbus_zoom_region_get_timing_test (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_timing_output (ZoomRegion *zoom_region, gboolean timing_output);
+gboolean	impl_dbus_zoom_region_get_timing_output (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_timing_pan_rate (ZoomRegion *zoom_region, gint32 timing_pan_rate);
+gint32		impl_dbus_zoom_region_get_timing_pan_rate (ZoomRegion *zoom_region);
+gboolean	impl_dbus_zoom_region_set_exit_magnifier (ZoomRegion *zoom_region, gboolean exit_magnifier);
+gboolean	impl_dbus_zoom_region_get_exit_magnifier (ZoomRegion *zoom_region);
 
 #ifdef __cplusplus
 }
diff --git a/xml/org.freedesktop.gnome.ZoomRegion.xml b/xml/org.freedesktop.gnome.ZoomRegion.xml
index c313ff2..38f3aa0 100755
--- a/xml/org.freedesktop.gnome.ZoomRegion.xml
+++ b/xml/org.freedesktop.gnome.ZoomRegion.xml
@@ -78,6 +78,7 @@
         </tp:docstring>
       </arg>
       <arg type="b" name="b_ret" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
         <tp:docstring>
           TRUE if operation succeeded, FALSE if the requested mag factor cannot
           be set. Returned in the 'b_ret' arg.
@@ -92,15 +93,10 @@
           getting mag-factor-x and mag-factor-y properties).
         </p>
        </tp:docstring>
-      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>
-      <arg type="d" name="magX" direction="out">
+      <arg type="ad" name="factors" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
         <tp:docstring>
-          the magnification factor in the x direction for the specified region.
-        </tp:docstring>
-      </arg>
-      <arg type="d" name="magY" direction="out">
-        <tp:docstring>
-          the magnification factor in the x direction for the specified region.
+          the magnification factor in the x and y direction for the specified region.
         </tp:docstring>
       </arg>
     </method>
@@ -160,7 +156,7 @@
       </tp:docstring>
       <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>
       <!-- note that 'dirtyRegion' is a RectBounds -->
-      <arg type="(iiii)" name="dirtyRegion" tp:type="RectBounds" direction="in">
+      <arg type="ai" name="dirtyRegion" tp:type="RectBounds" direction="in">
         <tp:docstring>
           the bounding box of the dirty region.
         </tp:docstring>
@@ -173,7 +169,8 @@
           Query a specific zoom region for its Roi.
         </p>
       </tp:docstring>
-      <arg type="(iiii)" name="Roi-ret" tp:type="RectBounds" direction="out">
+      <arg type="ai" name="Roi-ret" tp:type="RectBounds" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
         <tp:docstring>
           Returns the RectBounds bounding box of the zoom Roi.
         </tp:docstring>
@@ -264,21 +261,12 @@
         </p>
       </tp:docstring>
       <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>
-      <arg type="d" name="R" direction="out">
+      <arg type="ad" name="RGB" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
         <tp:docstring>
           the amount of red in the contrasted image
         </tp:docstring>
       </arg>
-      <arg type="d" name="G" direction="out">
-        <tp:docstring>
-          the amount of green in the contrasted image
-        </tp:docstring>
-      </arg>
-      <arg type="d" name="B" direction="out">
-        <tp:docstring>
-          the amount of blue in the contrasted image
-        </tp:docstring>
-      </arg>
     </method>
 
     <method name="setBrightness">
@@ -328,20 +316,385 @@
         </p>        
       </tp:docstring>
       <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>
-      <arg type="d" name="R" direction="out">
+      <arg type="d" name="RGB" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
         <tp:docstring>
           the brightness applied to the red component.
         </tp:docstring>
       </arg>
-      <arg type="d" name="G" direction="out">
-        <tp:docstring>
-          the brightness applied to the green component.
-        </tp:docstring>
+    </method>
+    
+    <method name="setManaged">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="managed" direction="in" />
+    </method>
+    
+    <method name="getManaged">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="managed" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
       </arg>
-      <arg type="d" name="B" direction="out">
-        <tp:docstring>
-          the brightness applied to the blue component.
-        </tp:docstring>
+    </method>
+    
+    <method name="setPollMouse">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="poll_mouse" direction="in" />
+    </method>
+    
+    <method name="getPollMouse">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="poll_mouse" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setDrawCursor">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="draw_cursor" direction="in" />
+    </method>
+    
+    <method name="getDrawCursor">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="draw_cursor" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setInvert">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="invert" direction="in" />
+    </method>
+    
+    <method name="getInvert">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="invert" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setSmoothscroll">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="n" name="smoothscroll" direction="in" />
+    </method>
+    
+    <method name="getSmoothscroll">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="n" name="smoothscroll" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setColorblind">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="n" name="colorblind" direction="in" />
+    </method>
+    
+    <method name="getColorblind">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="n" name="colorblind" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setSmoothing">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="s" name="smoothing" direction="in" />
+    </method>
+    
+    <method name="getSmoothing">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="s" name="smoothing" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setTestpattern">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="testpattern" direction="in" />
+    </method>
+    
+    <method name="getTestpattern">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="testpattern" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setBordersizes">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="ai" name="bordersizes" direction="in" />
+    </method>
+    
+    <method name="getBordersizes">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="ai" name="bordersizes" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setBordercolor">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="u" name="bordercolor" direction="in" />
+    </method>
+    
+    <method name="getBordercolor">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="u" name="bordercolor" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setXalign">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="align" direction="in" />
+    </method>
+    
+    <method name="getXalign">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="align" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setYalign">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="align" direction="in" />
+    </method>
+    
+    <method name="getYalign">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="align" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setViewport">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="ai" name="viewport" direction="in" />
+    </method>
+    
+    <method name="getViewport">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="ai" name="viewport" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setTimingTest">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="timing_test" direction="in" />
+    </method>
+    
+    <method name="getTimingTest">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="timing_test" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setTimingOutput">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="timing_output" direction="in" />
+    </method>
+    
+    <method name="getTimingOutput">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="timing_output" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setTimingPanRate">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="timing_pan_rate" direction="in" />
+    </method>
+    
+    <method name="getTimingPanRate">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="i" name="timing_pan_rate" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
+      </arg>
+    </method>
+    
+    <method name="setExitMagnifier">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="exit_magnifier" direction="in" />
+    </method>
+    
+    <method name="getExitMagnifier">
+      <tp:docstring>
+        <p>
+          TODO
+        </p>
+      </tp:docstring>
+      <annotation name="org.freedesktop.DBus.GLib.NoReply" value="true"/>    
+      <arg type="b" name="exit_magnifier" direction="out">
+        <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="" />
       </arg>
     </method>
     



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]