added use of non-preemptive keylistener to simple-at test.
[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 (0, (float) atof (argv[1]),
25                                        (float) atof (argv[1]));
26   }
27   sleep (4);
28   return 0;
29 }
30
31 Accessibility_Magnifier 
32 get_magnifier()
33 {
34   static Accessibility_Magnifier magnifier = NULL;
35   static gboolean is_error = FALSE;
36   CORBA_Object oclient;
37   char *obj_id;
38   
39   if (!magnifier && !is_error)
40   {
41     CORBA_exception_init (&ev);
42     obj_id = "OAFIID:Accessibility_Util_Magnifier:proto0.1";
43
44     oclient = bonobo_activation_activate_from_id (obj_id, 0, NULL, &ev);
45     if (ev._major != CORBA_NO_EXCEPTION) {
46       fprintf (stderr,
47             ("Activation error: during magnifier activation: %s\n"),
48             CORBA_exception_id(&ev));
49       CORBA_exception_free(&ev);
50       is_error = TRUE;
51     }
52
53     if (CORBA_Object_is_nil (oclient, &ev))
54     {
55       g_error ("Could not locate magnifier");
56       is_error = TRUE;
57     }
58
59     magnifier = (Accessibility_Magnifier) oclient;
60
61     /* bonobo_activate (); ? */
62   }
63
64   return magnifier;
65 }
66
67 void
68 magnifier_set_roi(int zoom_region, int x, int y, int w, int h)
69 {
70   Accessibility_Magnifier magnifier = get_magnifier();
71
72   if (magnifier)
73        Accessibility_Magnifier_setROI (magnifier,
74                                       (const CORBA_short) zoom_region,
75                                       (const CORBA_long) x,
76                                       (const CORBA_long) y,
77                                       (const CORBA_long) x+w,
78                                       (const CORBA_long) y+h,
79                                       &ev);
80 }
81
82 void
83 magnifier_set_magnification (int zoom_region, float mag_factor_x, float mag_factor_y)
84 {
85   Accessibility_Magnifier magnifier = get_magnifier();
86
87   if (magnifier)
88        Accessibility_Magnifier_setMagFactor (magnifier,
89                                              (const CORBA_short) zoom_region,
90                                              (const CORBA_float) mag_factor_x,
91                                              (const CORBA_float) mag_factor_y,
92                                              &ev);
93 }
94