Support Tizen 3.0
[profile/ivi/ico-uxf-weston-plugin.git] / tests / test-eflapp.c
1 #ifdef HAVE_CONFIG_H
2 #undef HAVE_CONFIG_H
3 #endif
4
5 #ifdef HAVE_CONFIG_H
6
7 #include "config.h"
8 #else
9 #define __UNUSED__
10 #define PACKAGE_EXAMPLES_DIR "."
11 #endif
12
13 #include <Ecore.h>
14 #include <Ecore_Evas.h>
15 #include <stdio.h>
16
17 #define WIDTH  (520)
18 #define HEIGHT (380)
19
20 static Ecore_Evas *ee;
21 static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
22
23 static Evas_Object *bg, *r1, *r2, *r3; /* "sub" canvas objects */
24 static Evas_Object *border, *img; /* canvas objects */
25
26 static void
27 _on_destroy(Ecore_Evas *ee __UNUSED__)
28 {
29     ecore_main_loop_quit();
30 }
31
32 static void
33 _resize_cb(Ecore_Evas *ee)
34 {
35     int x, y, w, h, ow, oh;
36     int rw, rh;
37
38     evas_object_geometry_get(img, &x, &y, &ow, &oh);
39     ecore_evas_geometry_get(ee, &x, &y, &w, &h);
40     ecore_evas_request_geometry_get(ee, NULL, NULL, &rw, &rh);
41     fprintf(stderr, "EFL-App resize x/y=%d/%d req=%d/%d w/h=%d/%d obj=%d/%d\n", x, y, rw, rh, w, h, ow, oh); fflush(stderr);
42 }
43
44 int
45 main(int argc, char *argv[])
46 {
47     Evas *canvas, *sub_canvas;
48     Ecore_Evas *sub_ee;
49     int     i;
50     int     width;
51     int     height;
52     unsigned int    color;
53     int     r, g, b, a;
54     int     rr, gg, bb;
55     int     appno = 1;
56     char    sTitle[64];
57
58     width = WIDTH;
59     height = HEIGHT;
60     color = 0xc0c0c0c0;
61     for (i = 1; i < argc; i++)  {
62         if (argv[i][0] == '@')  {
63             appno = strtol(&argv[i][1], (char **)0, 0);
64         }
65         if (argv[i][0] != '-')  continue;
66         if (strncasecmp(argv[i], "-width=", 7) == 0)    {
67             width = strtol(&argv[i][7], (char **)0, 0);
68         }
69         else if (strncasecmp(argv[i], "-height=", 8) == 0)  {
70             height = strtol(&argv[i][8], (char **)0, 0);
71         }
72         else if (strncasecmp(argv[i], "-color=", 7) == 0)   {
73             color = strtoul(&argv[i][7], (char **)0, 0);
74         }
75     }
76
77     ecore_evas_init();
78
79     /* this will give you a window with an Evas canvas under the first
80      * engine available */
81     ee = ecore_evas_new(NULL, 0, 0, width, height, "frame=0");
82     if (!ee) goto error;
83
84     ecore_evas_size_min_set(ee, width/4, height/4);
85     ecore_evas_size_max_set(ee, width*4, height*4);
86
87     ecore_evas_callback_resize_set(ee, _resize_cb);
88
89     ecore_evas_callback_delete_request_set(ee, _on_destroy);
90     sprintf(sTitle, "EFL_Native_Application_%d", appno);
91     ecore_evas_title_set(ee, sTitle);
92     ecore_evas_show(ee);
93
94     canvas = ecore_evas_get(ee);
95
96     bg = evas_object_rectangle_add(canvas);
97     rr = (color>>16)&0x0ff;
98     gg = (color>>8)&0x0ff;
99     bb = color&0x0ff;
100     a = (color>>24)&0x0ff;
101     r = (rr * a) / 255;
102     g = (gg * a) / 255;
103     b = (bb * a) / 255;
104     evas_object_color_set(bg, r, g, b, a); /* bg color */
105     evas_object_move(bg, 0, 0); /* at origin */
106     evas_object_resize(bg, width, height); /* covers full canvas */
107     evas_object_show(bg);
108
109     /* this is a border around the image containing a scene of another
110      * canvas */
111     border = evas_object_image_filled_add(canvas);
112     evas_object_image_file_set(border, border_img_path, NULL);
113     evas_object_image_border_set(border, 3, 3, 3, 3);
114     evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE);
115
116     evas_object_move(border, width / 6, height / 6);
117     evas_object_resize(border, (2 * width) / 3, (2 * height) / 3);
118     evas_object_show(border);
119
120     img = ecore_evas_object_image_new(ee);
121     evas_object_image_filled_set(img, EINA_TRUE);
122     evas_object_image_size_set(
123         img, ((2 * width) / 3) - 6, ((2 * height) / 3) - 6);
124     sub_ee = ecore_evas_object_ecore_evas_get(img);
125     sub_canvas = ecore_evas_object_evas_get(img);
126
127     evas_object_move(img, (width / 6) + 3, (height / 6) + 3);
128
129     /* apply the same size on both! */
130     evas_object_resize(img, ((2 * width) / 3) - 6, ((2 * height) / 3) - 6);
131     ecore_evas_resize(sub_ee, ((2 * width) / 3) - 6, ((2 * height) / 3) - 6);
132
133     r1 = evas_object_rectangle_add(sub_canvas);
134     evas_object_color_set(r1, gg, bb, rr, 255);
135     evas_object_move(r1, 10, 10);
136     evas_object_resize(r1, 100, 100);
137     evas_object_show(r1);
138
139     r2 = evas_object_rectangle_add(sub_canvas);
140     r = rr * 128 / 256;
141     g = gg * 128 / 256;
142     b = bb * 128 / 256;
143     evas_object_color_set(r2, b, g, r, 128);
144     evas_object_move(r2, 10, 10);
145     evas_object_resize(r2, 50, 50);
146     evas_object_show(r2);
147
148     r3 = evas_object_rectangle_add(sub_canvas);
149     evas_object_color_set(r3, bb, rr, gg, 255);
150     evas_object_move(r3, 60, 60);
151     evas_object_resize(r3, 50, 50);
152     evas_object_show(r3);
153
154     evas_object_show(img);
155     ecore_main_loop_begin();
156
157     ecore_evas_free(ee);
158     ecore_evas_shutdown();
159
160     return 0;
161
162 error:
163     fprintf(stderr, "You got to have at least one Evas engine built"
164             " and linked up to ecore-evas for this example to run properly.\n");
165     ecore_evas_shutdown();
166     return -1;
167 }
168