Added directory 'util' for accessibility-related
[platform/core/uifw/at-spi2-atk.git] / util / mag_control.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 int main(int argc, char ** argv){
10
11   if (!bonobo_init (&argc, argv))
12   {
13     g_error ("Could not initialize Bonobo");
14   }
15
16   CORBA_exception_init (&ev);
17   
18   if(argc == 1){
19           get_magnifier ();
20   }
21
22   else {
23           printf ("setting mag factor to %f\n", (float) atof (argv[1]));
24           magnifier_set_magnification ((float) atof (argv[1]));
25   }
26   sleep (4);
27   return 0;
28 }
29
30 Accessibility_Magnifier 
31 get_magnifier()
32 {
33   static Accessibility_Magnifier magnifier = NULL;
34   static gboolean is_error = FALSE;
35   CORBA_Object oclient;
36   char *obj_id;
37   
38   if (!magnifier && !is_error)
39   {
40     CORBA_exception_init (&ev);
41     obj_id = "OAFIID:Accessibility_Util_Magnifier:proto0.1";
42
43     oclient = bonobo_activation_activate_from_id (obj_id, 0, NULL, &ev);
44     if (ev._major != CORBA_NO_EXCEPTION) {
45       fprintf (stderr,
46             ("Activation error: during magnifier activation: %s\n"),
47             CORBA_exception_id(&ev));
48       CORBA_exception_free(&ev);
49       is_error = TRUE;
50     }
51
52     if (CORBA_Object_is_nil (oclient, &ev))
53     {
54       g_error ("Could not locate magnifier");
55       is_error = TRUE;
56     }
57
58     magnifier = (Accessibility_Magnifier) oclient;
59
60     /* bonobo_activate (); ? */
61   }
62
63   return magnifier;
64 }
65
66 void
67 magnifier_set_roi(int x, int y, int w, int h)
68 {
69   Accessibility_Magnifier magnifier = get_magnifier();
70
71   if (magnifier)
72        Accessibility_Magnifier_setROI (magnifier,
73                                       (const CORBA_long) x,
74                                       (const CORBA_long) y,
75                                       (const CORBA_long) x+w,
76                                       (const CORBA_long) y+h,
77                                       &ev);
78 }
79
80 void
81 magnifier_set_magnification (float mag_factor)
82 {
83   Accessibility_Magnifier magnifier = get_magnifier();
84
85   if (magnifier)
86        Accessibility_Magnifier__set_MagFactor (magnifier,
87                                                (const CORBA_short)
88                                                    ((short) mag_factor),
89                                                &ev);
90 }
91