add tests for yuv rotated map thing. :)
[framework/uifw/expedite.git] / src / bin / image_data_ycbcr601pl_map_nearest_solid_rotate.c
1 #undef FNAME
2 #undef NAME
3 #undef ICON
4
5 /* metadata */
6 #define FNAME image_data_ycbcr601pl_map_nearest_solid_rotate_start
7 #define NAME "Image Data YCbCr 601 Pointer List Map Nearest Solid Rotate"
8 #define ICON "data.png"
9
10 #ifndef PROTO
11 # ifndef UI
12 #  include "main.h"
13
14 /* standard var */
15 static int done = 0;
16
17 /* private data */
18 static Evas_Object *o_images[1];
19 static unsigned char *yp = NULL, *up = NULL, *vp = NULL;
20
21 /* setup */
22 static void _setup(void)
23 {
24    int i, y;
25    FILE *f;
26    unsigned char **data, **lp;
27    Evas_Object *o;
28    for (i = 0; i < 1; i++)
29      {
30         o = evas_object_image_add(evas);
31         o_images[i] = o;
32         evas_object_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
33         evas_object_image_colorspace_set(o, EVAS_COLORSPACE_YCBCR422P601_PL);
34         evas_object_image_size_set(o, 640, 480);
35         evas_object_image_alpha_set(o, 0);
36         evas_object_image_fill_set(o, 0, 0, 640, 480);
37         evas_object_resize(o, 640, 480);
38         evas_object_image_smooth_scale_set(o, 0);
39         evas_object_show(o);
40         yp = malloc(640 * 480);
41         up = malloc(320 * 240);
42         vp = malloc(320 * 240);
43         f = fopen(build_path("tp.yuv"), "rb");
44         if (f)
45           {
46              fread(yp, 640 * 480, 1, f);
47              fread(up, 320 * 240, 1, f);
48              fread(vp, 320 * 240, 1, f);
49              fclose(f);
50           }
51         data = evas_object_image_data_get(o_images[i], 1);
52         lp = data;
53         for (y = 0; y < 480; y++)
54           {
55              *lp = yp + (y * 640);
56              lp++;
57           }
58         for (y = 0; y < 240; y++)
59           {
60              *lp = up + (y * 320);
61              lp++;
62           }
63         for (y = 0; y < 240; y++)
64           {
65              *lp = vp + (y * 320);
66              lp++;
67           }
68         evas_object_image_data_set(o_images[i], data);
69      }
70    done = 0;
71 }
72
73 /* cleanup */
74 static void _cleanup(void)
75 {
76    int i;
77    for (i = 0; i < 1; i++) evas_object_del(o_images[i]);
78    free(yp);
79    free(up);
80    free(vp);
81 }
82
83 /* loop - do things */
84 static void _loop(double t, int f)
85 {
86    int i;
87    Evas_Map *m;
88    Evas_Coord x, y, w, h;
89    m = evas_map_new(4);
90    evas_map_smooth_set(m, 0);
91    for (i = 0; i < 1; i++)
92      {
93         w = 640;
94         h = 480;
95         x = (win_w / 2) - (w / 2);
96         y = (win_h / 2) - (h / 2);
97
98         evas_map_util_points_populate_from_geometry(m, x, y, w, h, 0);
99
100         evas_map_util_rotate(m, f, x + (w / 2), y + (h / 2));
101
102         evas_object_map_enable_set(o_images[i], 1);
103         evas_object_map_set(o_images[i], m);
104      }
105    evas_map_free(m);
106    FPS_STD(NAME);
107 }
108
109 /* prepend special key handlers if interactive (before STD) */
110 static void _key(char *key)
111 {
112    KEY_STD;
113 }
114
115
116
117
118
119
120
121
122
123
124
125
126 /* template stuff - ignore */
127 # endif
128 #endif
129
130 #ifdef UI
131 _ui_menu_item_add(ICON, NAME, FNAME);
132 #endif
133
134 #ifdef PROTO
135 void FNAME(void);
136 #endif
137
138 #ifndef PROTO
139 # ifndef UI
140 void FNAME(void)
141 {
142    ui_func_set(_key, _loop);
143    _setup();
144 }
145 # endif
146 #endif
147 #undef FNAME
148 #undef NAME
149 #undef ICON