Added directory 'util' for accessibility-related
[platform/core/uifw/at-spi2-atk.git] / util / mag_client.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <libbonobo.h>
4 #include "Magnifier.h"
5 #include "mag_client.h"
6
7 static CORBA_Environment ev;
8
9 Accessibility_Magnifier 
10 get_magnifier()
11 {
12   static Accessibility_Magnifier magnifier = NULL;
13   static gboolean is_error = FALSE;
14   CORBA_Object oclient;
15   char *obj_id;
16   
17   if (!magnifier && !is_error)
18   {
19     CORBA_exception_init (&ev);
20     obj_id = "OAFIID:Accessibility_Util_Magnifier:proto0.1";
21
22     oclient = bonobo_activation_activate_from_id (obj_id, 0, NULL, &ev);
23     if (ev._major != CORBA_NO_EXCEPTION) {
24       fprintf (stderr,
25             ("Activation error: during magnifier activation: %s\n"),
26             CORBA_exception_id(&ev));
27       CORBA_exception_free(&ev);
28       is_error = TRUE;
29     }
30
31     if (CORBA_Object_is_nil (oclient, &ev))
32     {
33       g_error ("Could not locate magnifier");
34       is_error = TRUE;
35     }
36
37     magnifier = (Accessibility_Magnifier) oclient;
38
39     /* bonobo_activate (); ? */
40   }
41
42   return magnifier;
43 }
44
45 void
46 magnifier_set_roi(int x, int y, int w, int h)
47 {
48   Accessibility_Magnifier magnifier = get_magnifier();
49
50   if (magnifier)
51        Accessibility_Magnifier_setROI (magnifier,
52                                       (const CORBA_long) x,
53                                       (const CORBA_long) y,
54                                       (const CORBA_long) x+w,
55                                       (const CORBA_long) y+h,
56                                       &ev);
57 }
58
59 void
60 magnifier_set_magnification (float mag_factor)
61 {
62   Accessibility_Magnifier magnifier = get_magnifier();
63
64   if (magnifier)
65        Accessibility_Magnifier__set_MagFactor (magnifier,
66                                                (const CORBA_short)
67                                                    ((short) mag_factor),
68                                                &ev);
69 }
70