summaryrefslogtreecommitdiff
path: root/atspi/atspi-component.c
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2010-11-01 13:54:51 -0400
committerMike Gorse <mgorse@novell.com>2010-11-01 13:54:51 -0400
commit46931677d227523bbaf5405e2b715bbf1f6cd776 (patch)
treec933ee691f1f30ce1e03ba31aa1fa572e1747a4d /atspi/atspi-component.c
parent5544649ae7afb697e59ca8e9c2b8694f2a8dea39 (diff)
downloadat-spi2-core-46931677d227523bbaf5405e2b715bbf1f6cd776.tar.gz
Started work on component interface; various fixes and cleanups
Diffstat (limited to 'atspi/atspi-component.c')
-rw-r--r--atspi/atspi-component.c254
1 files changed, 254 insertions, 0 deletions
diff --git a/atspi/atspi-component.c b/atspi/atspi-component.c
new file mode 100644
index 00000000..d105f206
--- /dev/null
+++ b/atspi/atspi-component.c
@@ -0,0 +1,254 @@
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2001, 2002 Sun Microsystems Inc.,
+ * Copyright 2001, 2002 Ximian, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ *
+ * AtspiComponent function implementations
+ *
+ */
+
+#include "atspi-private.h"
+
+/**
+ * atspi_component_contains:
+ * @obj: a pointer to the #AtspiComponent to query.
+ * @x: a #long specifying the x coordinate in question.
+ * @y: a #long specifying the y coordinate in question.
+ * @ctype: the desired coordinate system of the point (@x, @y)
+ * (e.g. CSPI_COORD_TYPE_WINDOW, CSPI_COORD_TYPE_SCREEN).
+ *
+ * Query whether a given #AtspiComponent contains a particular point.
+ *
+ * Returns: a #TRUE if the specified component contains the point (@x, @y),
+ * otherwise #FALSE.
+ **/
+gboolean
+atspi_component_contains (AtspiComponent *obj,
+ gint x,
+ gint y,
+ AtspiCoordType ctype, GError **error)
+{
+ dbus_bool_t retval = FALSE;
+ dbus_int32_t d_x = x, d_y = y;
+ dbus_uint16_t d_ctype = ctype;
+
+ g_return_val_if_fail (obj != NULL, FALSE);
+
+ _atspi_dbus_call (obj, atspi_interface_component, "Contains", error, "iin=>b", d_x, d_y, d_ctype, &retval);
+
+ return retval;
+}
+
+/**
+ * atspi_component_get_accessible_at_point:
+ * @obj: a pointer to the #AtspiComponent to query.
+ * @x: a #gint specifying the x coordinate of the point in question.
+ * @y: a #gint specifying the y coordinate of the point in question.
+ * @ctype: the coordinate system of the point (@x, @y)
+ * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
+ *
+ * Get the accessible child at a given coordinate within an #AtspiComponent.
+ *
+ * Returns: a pointer to an #AtspiAccessible child of the specified component
+ * which contains the point (@x, @y), or NULL of no child contains
+ * the point.
+ **/
+AtspiAccessible *
+atspi_component_get_accessible_at_point (AtspiComponent *obj,
+ gint x,
+ gint y,
+ AtspiCoordType ctype, GError **error)
+{
+ dbus_int32_t d_x = x, d_y = y;
+ dbus_uint16_t d_ctype = ctype;
+ DBusMessage *reply;
+ char *path = NULL;
+ AtspiAccessible *retval = NULL;
+
+ g_return_val_if_fail (obj != NULL, FALSE);
+
+ reply = _atspi_dbus_call_partial (obj, atspi_interface_component, "GetAccessibleAtPoint", error, "iin", d_x, d_y, d_ctype);
+
+ return _atspi_dbus_return_accessible_from_message (reply);
+}
+
+/**
+ * atspi_component_get_extents:
+ * @obj: a pointer to the #AtspiComponent to query.
+ * @x: a pointer to a #int into which the minimum x coordinate will be returned.
+ * @y: a pointer to a #int into which the minimum y coordinate will be returned.
+ * @width: a pointer to a #int into which the x extents (width) will be returned.
+ * @height: a pointer to a #int into which the y extents (height) will be returned.
+ * @ctype: the desired coordinate system into which to return the results,
+ * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
+ *
+ * Get the bounding box of the specified #AtspiComponent.
+ *
+ **/
+AtspiBoundingBox
+atspi_component_get_extents (AtspiComponent *obj,
+ gint *x,
+ gint *y,
+ gint *width,
+ gint *height,
+ AtspiCoordType ctype, GError **error)
+{
+ dbus_int16_t d_ctype = ctype;
+ AtspiBoundingBox bbox;
+
+ g_return_if_fail (obj != NULL);
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetExtents", error, "n=>(iiii)", d_ctype, &bbox);
+ return bbox;
+}
+
+/**
+ * atspi_component_get_position:
+ * @obj: a pointer to the #AtspiComponent to query.
+ * @ctype: the desired coordinate system into which to return the results,
+ * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
+ *
+ * returns: A #AtspiPoint giving the position.
+ * Get the minimum x and y coordinates of the specified #AtspiComponent.
+ *
+ **/
+AtspiPoint
+atspi_component_get_position (AtspiComponent *obj,
+ AtspiCoordType ctype, GError **error)
+{
+ dbus_int32_t d_x, d_y;
+ dbus_uint16_t d_ctype = ctype;
+ AtspiPoint ret;
+
+ ret.x = ret.y = 0;
+
+ if (!obj)
+ return ret;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetPosition", error, "n=>ii", d_ctype, &d_x, &d_y);
+
+ ret.x = d_x;
+ ret.y = d_y;
+ return ret;
+}
+
+/**
+ * atspi_component_get_size:
+ * @obj: a pointer to the #AtspiComponent to query.
+ * returns: A #AtspiPoint giving the siize.
+ *
+ * Get the size of the specified #AtspiComponent.
+ *
+ **/
+AtspiPoint
+atspi_component_get_size (AtspiComponent *obj, GError **error)
+{
+ dbus_int32_t d_w, d_h;
+ AtspiPoint ret;
+
+ ret.x = ret.y = 0;
+ if (!obj)
+ return ret;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetSize", error, "=>ii", &d_w, &d_h);
+ ret.x = d_w;
+ ret.y = d_h;
+ return ret;
+}
+
+/**
+ * atspi_component_get_layer:
+ * @obj: a pointer to the #AtspiComponent to query.
+ *
+ * Query which layer the component is painted into, to help determine its
+ * visibility in terms of stacking order.
+ *
+ * Returns: the #AtspiComponentLayer into which this component is painted.
+ **/
+AtspiComponentLayer
+atspi_component_get_layer (AtspiComponent *obj, GError **error)
+{
+ dbus_uint32_t zlayer = 0;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetLayer", error, "=>u", &zlayer);
+
+ return zlayer;
+}
+
+/**
+ * atspi_component_get_mdi_z_order:
+ * @obj: a pointer to the #AtspiComponent to query.
+ *
+ * Query the z stacking order of a component which is in the MDI or window
+ * layer. (Bigger z-order numbers mean nearer the top)
+ *
+ * Returns: a short integer indicating the stacking order of the component
+ * in the MDI layer, or -1 if the component is not in the MDI layer.
+ **/
+gshort
+atspi_component_get_mdi_z_order (AtspiComponent *obj, GError **error)
+{
+ dbus_uint16_t retval = -1;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetMDIZOrder", error, "=>n", &retval);
+
+ return retval;
+}
+
+/**
+ * atspi_component_grab_focus:
+ * @obj: a pointer to the #AtspiComponent on which to operate.
+ *
+ * Attempt to set the keyboard input focus to the specified
+ * #AtspiComponent.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ *
+ **/
+gboolean
+atspi_component_grab_focus (AtspiComponent *obj, GError **error)
+{
+ dbus_bool_t retval = FALSE;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GrabFocus", error, "=>b", &retval);
+
+ return retval;
+}
+
+/**
+ * atspi_component_get_alpha:
+ * @obj: The #AtspiComponent to be queried.
+ *
+ * Get the opacity/alpha value of a component, if alpha blending is in use.
+ *
+ * Returns: the opacity value of a component, as a double between 0.0 and 1.0.
+ **/
+gdouble
+atspi_component_get_alpha (AtspiComponent *obj, GError **error)
+{
+ double retval = 1;
+
+ _atspi_dbus_call (obj, atspi_interface_component, "GetAlpha", error, "=>d", &retval);
+
+ return retval;
+}