2001-11-20 Michael Meeks <michael@ximian.com>
[platform/core/uifw/at-spi2-atk.git] / libspi / image.c
index 6428ff8..b957849 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
-/*
- * component.c : bonobo wrapper for accessible component implementation
- *
- */
-#include <config.h>
-#include <bonobo/Bonobo.h>
+/* image.c : implements the Image interface */
 
+#include <config.h>
 #include <stdio.h>
+#include <libspi/image.h>
 
-/*
- * This pulls the CORBA definitions for the "Accessibility::Accessible" server
- */
-#include <libspi/Accessibility.h>
-
-/*
- * This pulls the definition of the image bonobo object
- */
-#include "image.h"
-
-/*
- * Static function declarations
- */
+/* Static function declarations */
 
 static void
-image_class_init (ImageClass *klass);
+spi_image_class_init (SpiImageClass *klass);
 static void
-image_init (Image *image);
+spi_image_init (SpiImage *image);
 static void
-image_finalize (GObject *obj);
+spi_image_finalize (GObject *obj);
 static void 
 impl_getImagePosition (PortableServer_Servant _servant,
                       CORBA_long * x, CORBA_long * y,
@@ -66,21 +51,21 @@ impl__get_imageDescription (PortableServer_Servant _servant,
 static GObjectClass *parent_class;
 
 GType
-image_get_type (void)
+spi_image_get_type (void)
 {
   static GType type = 0;
 
   if (!type) {
     static const GTypeInfo tinfo = {
-      sizeof (ImageClass),
+      sizeof (SpiImageClass),
       (GBaseInitFunc) NULL,
       (GBaseFinalizeFunc) NULL,
-      (GClassInitFunc) image_class_init,
+      (GClassInitFunc) spi_image_class_init,
       (GClassFinalizeFunc) NULL,
       NULL, /* class data */
-      sizeof (Image),
+      sizeof (SpiImage),
       0, /* n preallocs */
-      (GInstanceInitFunc) image_init,
+      (GInstanceInitFunc) spi_image_init,
                         NULL /* value table */
     };
 
@@ -93,22 +78,22 @@ image_get_type (void)
                               BONOBO_OBJECT_TYPE,
                               POA_Accessibility_Image__init,
                               NULL,
-                              G_STRUCT_OFFSET (ImageClass, epv),
+                              G_STRUCT_OFFSET (SpiImageClass, epv),
                               &tinfo,
-                              "AccessibleImage");
+                              "SpiAccessibleImage");
   }
 
   return type;
 }
 
 static void
-image_class_init (ImageClass *klass)
+spi_image_class_init (SpiImageClass *klass)
 {
   GObjectClass * object_class = (GObjectClass *) klass;
   POA_Accessibility_Image__epv *epv = &klass->epv;
   parent_class = g_type_class_peek_parent (klass);
 
-  object_class->finalize = image_finalize;
+  object_class->finalize = spi_image_finalize;
 
 
   /* Initialize epv table */
@@ -119,24 +104,26 @@ image_class_init (ImageClass *klass)
 }
 
 static void
-image_init (Image *image)
+spi_image_init (SpiImage *image)
 {
 }
 
 static void
-image_finalize (GObject *obj)
+spi_image_finalize (GObject *obj)
 {
-  Image *image = IMAGE (obj);
-  image->atk_image = NULL;
+  SpiImage *image = SPI_IMAGE (obj);
+  g_object_unref (image->atko);
+  image->atko = NULL;
   parent_class->finalize (obj);
 }
 
-Image *
-image_new (AtkImage *image)
+SpiImage *
+spi_image_interface_new (AtkObject *obj)
 {
-  Image *new_image = 
-    IMAGE(g_object_new (IMAGE_TYPE, NULL));
-  new_image->atk_image = image;
+  SpiImage *new_image = 
+    SPI_IMAGE(g_object_new (SPI_IMAGE_TYPE, NULL));
+  new_image->atko = obj;
+  g_object_ref (obj);
   return new_image;
 }
 
@@ -148,8 +135,8 @@ impl_getImagePosition (PortableServer_Servant _servant,
                       const CORBA_short coordType,
                       CORBA_Environment * ev)
 {
-  Image *image = IMAGE (bonobo_object_from_servant(_servant));
-  atk_image_get_image_position (image->atk_image,
+  SpiImage *image = SPI_IMAGE (bonobo_object_from_servant(_servant));
+  atk_image_get_image_position (ATK_IMAGE(image->atko),
                                (gint *) x, (gint *) y,
                                (AtkCoordType) coordType);
 }
@@ -161,20 +148,27 @@ impl_getImageSize (PortableServer_Servant _servant,
                   CORBA_long * width, CORBA_long * height,
                            CORBA_Environment * ev)
 {
-  Image *image = IMAGE (bonobo_object_from_servant(_servant));
-  atk_image_get_image_size (image->atk_image,
+  SpiImage *image = SPI_IMAGE (bonobo_object_from_servant(_servant));
+  atk_image_get_image_size (ATK_IMAGE(image->atko),
                            (gint *) width, (gint *) height);
 }
 
 
 
 static CORBA_string 
-impl__get_imageDescription (PortableServer_Servant _servant,
-                         CORBA_Environment * ev)
+impl__get_imageDescription (PortableServer_Servant servant,
+                           CORBA_Environment     *ev)
 {
-  Image *image = IMAGE (bonobo_object_from_servant(_servant));
-  return CORBA_string_dup (
-                          atk_image_get_image_description (image->atk_image));
+  SpiImage *image;
+  const char *rv;
+
+  image = SPI_IMAGE (bonobo_object_from_servant (servant));
+
+  rv = atk_image_get_image_description (ATK_IMAGE (image->atko));
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }