source: trunk/third/at-spi/libspi/image.c @ 18422

Revision 18422, 3.7 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18421, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4 *
5 * Copyright 2001 Sun Microsystems Inc.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
21 */
22
23/* image.c : implements the Image interface */
24
25#include <config.h>
26#include <stdio.h>
27#include <libspi/image.h>
28
29
30SpiImage *
31spi_image_interface_new (AtkObject *obj)
32{
33  SpiImage *new_image = g_object_new (SPI_IMAGE_TYPE, NULL);
34
35  spi_base_construct (SPI_BASE (new_image), G_OBJECT(obj));
36
37  return new_image;
38}
39
40static AtkImage *
41get_image_from_servant (PortableServer_Servant servant)
42{
43  SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
44
45  g_return_val_if_fail (object, NULL);
46  g_return_val_if_fail (ATK_IS_OBJECT(object->gobj), NULL);
47  return ATK_IMAGE (object->gobj);
48}
49
50static void
51impl_getImagePosition (PortableServer_Servant servant,
52                       CORBA_long * x, CORBA_long * y,
53                       const CORBA_short coordType,
54                       CORBA_Environment *ev)
55{
56  AtkImage *image = get_image_from_servant (servant);
57  gint ix, iy;
58
59  g_return_if_fail (image != NULL);
60
61  atk_image_get_image_position (image,
62                                &ix, &iy,
63                                (AtkCoordType) coordType);
64  *x = ix;
65  *y = iy;
66}
67
68static void
69impl_getImageSize (PortableServer_Servant servant,
70                   CORBA_long * width, CORBA_long * height,
71                   CORBA_Environment *ev)
72{
73  AtkImage *image = get_image_from_servant (servant);
74  gint iw, ih;
75 
76  g_return_if_fail (image != NULL);
77
78  atk_image_get_image_size (image,
79                            &iw, &ih);
80  *width = iw;
81  *height = ih;
82}
83
84static Accessibility_BoundingBox
85impl_getImageExtents (PortableServer_Servant servant,
86                      const CORBA_short      coordType,
87                      CORBA_Environment     *ev)
88{
89  AtkImage *image;
90  gint x, y, width, height;
91  Accessibility_BoundingBox bbox;
92
93  bbox.x = bbox.y = bbox.width = bbox.height = -1;
94
95  image = get_image_from_servant (servant);
96
97  if (image)
98    {
99      atk_image_get_image_size (image, &width, &height);
100      atk_image_get_image_position (image, &x, &y, coordType);
101
102      bbox.x = x;
103      bbox.y = y;
104      bbox.width = width;
105      bbox.height = height;
106    }
107
108  return bbox;
109}
110
111static CORBA_string
112impl__get_imageDescription (PortableServer_Servant servant,
113                            CORBA_Environment     *ev)
114{
115  const char *rv;
116  AtkImage   *image = get_image_from_servant (servant);
117
118  g_return_val_if_fail (image != NULL, CORBA_string_dup (""));
119
120  rv = atk_image_get_image_description (image);
121
122  if (rv)
123    {
124      return CORBA_string_dup (rv);
125    }
126  else
127    {
128      return CORBA_string_dup ("");
129    }
130}
131
132static void
133spi_image_class_init (SpiImageClass *klass)
134{
135  POA_Accessibility_Image__epv *epv = &klass->epv;
136
137  /* Initialize epv table */
138  epv->getImagePosition      = impl_getImagePosition;
139  epv->getImageSize          = impl_getImageSize;
140  epv->getImageExtents       = impl_getImageExtents;
141  epv->_get_imageDescription = impl__get_imageDescription;
142}
143
144static void
145spi_image_init (SpiImage *image)
146{
147}
148
149BONOBO_TYPE_FUNC_FULL (SpiImage,
150                       Accessibility_Image,
151                       SPI_TYPE_BASE,
152                       spi_image);
Note: See TracBrowser for help on using the repository browser.