1 /* This is a small demo of the high-performance GUIX graphics framework. */
2 
3 #include <stdio.h>
4 #include "tx_api.h"
5 #include "gx_api.h"
6 #include "gx_validation_utility.h"
7 
8 TEST_PARAM test_parameter = {
9     "guix_icon_button_24xrgb", /* Test name */
10     229, 386, 252, 414  /* Define the coordinates of the capture area.
11                          In this test, we only need to capture the pixelmap
12                          drawing area.  */
13 };
14 
15 static VOID      control_thread_entry(ULONG);
main(int argc,char ** argv)16 int main(int argc, char ** argv)
17 {
18     /* Parse the command line argument. */
19     gx_validation_setup(argc, argv);
20 
21     /* Start ThreadX system */
22     tx_kernel_enter();
23     return(0);
24 }
25 
tx_application_define(void * first_unused_memory)26 VOID tx_application_define(void *first_unused_memory)
27 {
28 
29     /* Create a dedicated thread to perform various operations
30        on the line drawing example. These operations simulate
31        user input. */
32     gx_validation_control_thread_create(control_thread_entry);
33 
34     /* Termiante the test if it runs for more than 100 ticks */
35     /* This function is not implemented yet. */
36     gx_validation_watchdog_create(100);
37 
38     /* Call the actual line example routine. */
39     gx_validation_application_define(first_unused_memory);
40 
41 }
42 
43 
44 /* Replace the default graphics driver with the validation driver. */
45 #ifdef win32_graphics_driver_setup_24xrgb
46 #undef win32_graphics_driver_setup_24xrgb
47 #endif
48 #define win32_graphics_driver_setup_24xrgb  gx_validation_graphics_driver_setup_24xrgb
49 
50 
51 #ifdef WIN32
52 #undef WIN32
53 #endif
54 
55 #include "gx_validation_wrapper.h"
56 #include "demo_guix_all_widgets.c"
57 
58 static GX_VALUE x_point[] = {228, 229, 235, 252, 253};
59 static GX_VALUE y_point[] = {385, 386, 399, 409, 410};
60 static ULONG event_type[] = {GX_EVENT_PEN_DOWN, GX_EVENT_PEN_UP};
61 
62 
63 char test_comment[256];
64 
65 /* This thread simulates user input.  Its priority is lower
66    than the GUIX thread, so that GUIX finishes an operation
67    before this thread is able to issue the next command. */
control_thread_entry(ULONG input)68 static VOID control_thread_entry(ULONG input)
69 {
70 int x_index, y_index, type_index;
71 GX_EVENT my_event;
72 int frame_id = 1;
73 GX_ICON_BUTTON *pButton;
74 
75     gx_widget_find(pButtonScreen, ID_ICON_BUTTON, 0, (GX_WIDGET **) &pButton);
76 
77     /* add transparent style */
78     gx_widget_style_add(pButton, GX_STYLE_TRANSPARENT);
79     gx_validation_set_frame_id(frame_id);
80     sprintf(test_comment, "add transparent style");
81     gx_validation_set_frame_comment(test_comment);
82     /* Force a screen refresh. */
83     gx_validation_screen_refresh();
84 
85 
86     frame_id++;
87 
88 
89     /* send pen down event.  */
90     memset(&my_event, 0, sizeof(GX_EVENT));
91     my_event.gx_event_type = GX_EVENT_PEN_DOWN;
92     my_event.gx_event_payload.gx_event_pointdata.gx_point_x = 235;
93     my_event.gx_event_payload.gx_event_pointdata.gx_point_y = 399;
94     my_event.gx_event_display_handle = 1;
95     gx_system_event_send(&my_event);
96     gx_validation_set_frame_id(frame_id);
97     sprintf(test_comment, "send pen down event");
98     gx_validation_set_frame_comment(test_comment);
99      /* Force a screen refresh. */
100     gx_validation_screen_refresh();
101 
102     frame_id ++;
103 
104     my_event.gx_event_type = GX_EVENT_PEN_UP;
105     my_event.gx_event_display_handle = 1;
106     gx_system_event_send(&my_event);
107     gx_validation_set_frame_id(frame_id);
108     sprintf(test_comment, "send pen up event");
109     gx_validation_set_frame_comment(test_comment);
110     /* Force a screen refresh. */
111     gx_validation_screen_refresh();
112 
113 
114     frame_id ++;
115 
116     /* remove transparent style.  */
117     gx_widget_style_remove(pButton, GX_STYLE_TRANSPARENT);
118     gx_validation_set_frame_id(frame_id);
119     sprintf(test_comment, "remove transparent style");
120     gx_validation_set_frame_comment(test_comment);
121     /* Force a screen refresh. */
122     gx_validation_screen_refresh();
123 
124 
125     frame_id++;
126 
127     my_event.gx_event_type = GX_EVENT_PEN_DOWN;
128     my_event.gx_event_display_handle = 1;
129     gx_system_event_send(&my_event);
130     gx_validation_set_frame_id(frame_id);
131     sprintf(test_comment, "send pen down event");
132     gx_validation_set_frame_comment(test_comment);
133     /* Force a screen refresh. */
134     gx_validation_screen_refresh();
135 
136 
137     frame_id ++;
138 
139     my_event.gx_event_type = GX_EVENT_PEN_UP;
140     my_event.gx_event_display_handle = 1;
141     gx_system_event_send(&my_event);
142     gx_validation_set_frame_id(frame_id);
143     sprintf(test_comment, "send pen up event");
144     gx_validation_set_frame_comment(test_comment);
145     /* Force a screen refresh. */
146     gx_validation_screen_refresh();
147 
148 
149     frame_id ++;
150     /* remove background pixelmap.  */
151     gx_icon_button_pixelmap_set(pButton, GX_NULL);
152     gx_validation_set_frame_id(frame_id);
153     sprintf(test_comment, "remove background map");
154     gx_validation_set_frame_comment(test_comment);
155     /* Force a screen refresh. */
156     gx_validation_screen_refresh();
157 
158 
159     frame_id++;
160 
161     /* set new background colors. */
162     gx_widget_fill_color_set(pButton, GX_COLOR_ID_NEXT_BUTTON_UPPER, GX_COLOR_ID_NEXT_BUTTON_LOWER, GX_COLOR_ID_NEXT_BUTTON_UPPER);
163     gx_validation_set_frame_id(frame_id);
164     sprintf(test_comment, "set new background colors");
165     gx_validation_set_frame_comment(test_comment);
166     /* Force a screen refresh. */
167     gx_validation_screen_refresh();
168 
169 
170     frame_id++;
171 
172     /* send pen down event.  */
173     my_event.gx_event_type = GX_EVENT_PEN_DOWN;
174     my_event.gx_event_display_handle = 1;
175     gx_system_event_send(&my_event);
176     gx_validation_set_frame_id(frame_id);
177     sprintf(test_comment, "send pen down event");
178     gx_validation_set_frame_comment(test_comment);
179     /* Force a screen refresh. */
180     gx_validation_screen_refresh();
181 
182 
183     frame_id ++;
184 
185     my_event.gx_event_type = GX_EVENT_PEN_UP;
186     my_event.gx_event_display_handle = 1;
187     gx_system_event_send(&my_event);
188     gx_validation_set_frame_id(frame_id);
189     sprintf(test_comment, "send pen up event");
190     gx_validation_set_frame_comment(test_comment);
191     /* Force a screen refresh. */
192     gx_validation_screen_refresh();
193 
194 
195     frame_id ++;
196 
197     /* set background pixelmap for the icon button. */
198     gx_icon_button_pixelmap_set(pButton, GX_PIXELMAP_ID_SAVE_ICON);
199     gx_validation_set_frame_id(frame_id);
200     sprintf(test_comment, "set background pixelmap");
201     gx_validation_set_frame_comment(test_comment);
202     /* Force a screen refresh. */
203     gx_validation_screen_refresh();
204 
205     frame_id ++;
206 
207     for (x_index = 0; x_index < (GX_VALUE)(sizeof(x_point) / sizeof(GX_VALUE)); x_index ++)
208     {
209         my_event.gx_event_payload.gx_event_pointdata.gx_point_x = x_point[x_index];
210 
211         for (y_index = 0; y_index < (GX_VALUE)(sizeof(y_point) / sizeof(GX_VALUE)); y_index ++)
212         {
213             my_event.gx_event_payload.gx_event_pointdata.gx_point_y = y_point[y_index];
214 
215             for (type_index = 0; type_index < (int)(sizeof(event_type) / sizeof(ULONG)); type_index ++)
216             {
217                 my_event.gx_event_type = event_type[type_index];
218                 my_event.gx_event_display_handle = 1;
219 
220 
221                 if ((x_point[x_index] >= 229) && (x_point[x_index] <= 252) &&
222                     (y_point[y_index] >= 386) && (y_point[y_index] <= 409))
223                 {
224 
225                     if (my_event.gx_event_type == GX_EVENT_PEN_DOWN)
226                     {
227                         sprintf(test_comment, "send pen down event");
228                     }
229                     else if (my_event.gx_event_type == GX_EVENT_PEN_UP)
230                     {
231                         sprintf(test_comment, "send pen up event");
232                     }
233                 }
234 
235 
236                 gx_system_event_send(&my_event);
237                 gx_validation_set_frame_id(frame_id);
238                 gx_validation_set_frame_comment(test_comment);
239                 /* Force a screen refresh. */
240                 gx_validation_screen_refresh();
241                 /* Increment frame ID */
242                 frame_id ++;
243             }
244         }
245     }
246 
247     /* Signal the end of the test case.  Verify the output. */
248     gx_validation_end();
249 
250     exit(0);
251 }
252