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_generic_scroll_wheel", /* Test name */
10 36, 101, 602, 313 /* Define the coordinates of the capture area.
11 In this test, we only need to capture the line
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_565rgb
46 #undef win32_graphics_driver_setup_565rgb
47 #endif
48 #define win32_graphics_driver_setup_565rgb gx_validation_graphics_driver_setup_565rgb
49
50
51 #ifdef WIN32
52 #undef WIN32
53 #endif
54
55 #include "gx_validation_wrapper.h"
56
57 #include "demo_guix_generic_scroll_wheel.c"
58
59 char test_comment[255];
60
61 TX_SEMAPHORE *p_sel_semaphore = GX_NULL;
62 TX_SEMAPHORE sel_semaphore;
63
test_main_screen_event_process(GX_WINDOW * window,GX_EVENT * event_ptr)64 UINT test_main_screen_event_process(GX_WINDOW *window, GX_EVENT *event_ptr)
65 {
66 switch(event_ptr->gx_event_type)
67 {
68 case GX_SIGNAL(ID_SCROLL_WHEEL, GX_EVENT_LIST_SELECT):
69 case GX_SIGNAL(ID_SCROLL_WHEEL_NOWRAP, GX_EVENT_LIST_SELECT):
70 case GX_SIGNAL(ID_SCROLL_WHEEL_WRAP, GX_EVENT_LIST_SELECT):
71 if(p_sel_semaphore)
72 {
73 tx_semaphore_put(p_sel_semaphore);
74 }
75 break;
76
77 default:
78 return main_screen_event_process(window, event_ptr);
79 }
80
81 return 0;
82 }
83
set_row_height(int height)84 void set_row_height(int height)
85 {
86 gx_generic_scroll_wheel_row_height_set(&main_screen.main_screen_scroll_wheel, height);
87 gx_generic_scroll_wheel_row_height_set(&main_screen.main_screen_scroll_wheel_nowrap, height);
88 gx_generic_scroll_wheel_row_height_set(&main_screen.main_screen_scroll_wheel_wrap, height);
89 }
90
set_total_rows(int total_rows)91 void set_total_rows(int total_rows)
92 {
93 gx_generic_scroll_wheel_total_rows_set(&main_screen.main_screen_scroll_wheel, total_rows);
94 gx_generic_scroll_wheel_total_rows_set(&main_screen.main_screen_scroll_wheel_nowrap, total_rows);
95 gx_generic_scroll_wheel_total_rows_set(&main_screen.main_screen_scroll_wheel_wrap, total_rows);
96 }
97
set_selected_row(int row,TX_SEMAPHORE * p_semaphore)98 void set_selected_row(int row, TX_SEMAPHORE *p_semaphore)
99 {
100 gx_scroll_wheel_selected_set(&main_screen.main_screen_scroll_wheel, row);
101 gx_scroll_wheel_selected_set(&main_screen.main_screen_scroll_wheel_nowrap, row);
102 gx_scroll_wheel_selected_set(&main_screen.main_screen_scroll_wheel_wrap, row);
103
104 if(p_semaphore)
105 {
106 tx_semaphore_get(p_sel_semaphore, TX_WAIT_FOREVER);
107 tx_semaphore_get(p_sel_semaphore, TX_WAIT_FOREVER);
108 tx_semaphore_get(p_sel_semaphore, TX_WAIT_FOREVER);
109 }
110 }
111
control_thread_entry(ULONG input)112 static VOID control_thread_entry(ULONG input)
113 {
114 INT frame_id = 1;
115 INT index = 0;
116 GX_BOOL end_loop = GX_FALSE;
117 GX_GENERIC_SCROLL_WHEEL *wheel = &main_screen.main_screen_scroll_wheel;
118 GX_GENERIC_SCROLL_WHEEL *wheel_wrap = &main_screen.main_screen_scroll_wheel_wrap;
119 GX_SCROLLBAR vsb;
120
121 p_sel_semaphore = &sel_semaphore;
122 tx_semaphore_create(p_sel_semaphore, "test_semaphore", 0);
123
124 gx_widget_event_process_set(&main_screen, test_main_screen_event_process);
125
126 while(!end_loop)
127 {
128 switch(index)
129 {
130 case 0:
131 /* Set total rows to 0. */
132 set_total_rows(0);
133 sprintf(test_comment, "Set total rows to 0.");
134 break;
135
136 case 1:
137 /* Set total rows to 6. */
138 set_total_rows(6);
139 sprintf(test_comment, "Set total rows to 6.");
140 break;
141
142 case 2:
143 /* Set total rows to 1. */
144 set_total_rows(1);
145 sprintf(test_comment, "Set total rows to 1.");
146 break;
147
148 case 3:
149 /* Set total rows to 3. */
150 set_total_rows(3);
151 sprintf(test_comment, "Set total rows to 3.");
152 break;
153
154 case 4:
155 /* Set total rows to 8. */
156 set_total_rows(8);
157 sprintf(test_comment, "Set total rows to 8.");
158 break;
159
160 case 5:
161 /* Set selected row to 2. */
162 set_selected_row(2, p_sel_semaphore);
163 sprintf(test_comment, "Set selected row to 2.");
164 break;
165
166 case 6:
167 set_selected_row(-1, p_sel_semaphore);
168 sprintf(test_comment, "Set selected row to -1.");
169 break;
170
171 case 7:
172 set_total_rows(0);
173 sprintf(test_comment, "Set total rows to 0.");
174 break;
175
176 case 8:
177 set_selected_row(1, GX_NULL);
178 sprintf(test_comment, "Set selected row to 1.");
179 break;
180
181 case 9:
182 set_total_rows(8);
183 sprintf(test_comment, "Set total rows to 8.");
184 break;
185
186 case 10:
187 set_selected_row(9, p_sel_semaphore);
188 sprintf(test_comment, "Set selected row to 9.");
189 break;
190
191 case 11:
192 set_total_rows(4);
193 sprintf(test_comment, "Set total rows to 4.");
194 break;
195
196 case 12:
197 set_row_height(30);
198 sprintf(test_comment, "Set row height to 30.");
199 break;
200
201 case 13:
202 gx_scroll_wheel_gradient_alpha_set(wheel, 0, 0);
203 gx_scroll_wheel_selected_background_set(wheel, 0);
204 sprintf(test_comment, "Remove gradient alpha and selected background for the first generic scroll wheel");
205 break;
206
207 case 14:
208 gx_widget_hide(wheel);
209 gx_generic_scroll_wheel_total_rows_set(wheel, 0);
210 gx_widget_show(wheel);
211 sprintf(test_comment, "hide first wheel, set total rows to 0, show wheel.");
212 break;
213
214 case 15:
215 gx_widget_hide(wheel);
216 gx_generic_scroll_wheel_total_rows_set(wheel, 8);
217 gx_generic_scroll_wheel_children_position(wheel);
218 gx_widget_show(wheel);
219 sprintf(test_comment, "hide first wheel, set total rows to 8, position children, show wheel.");
220 break;
221
222 case 16:
223 memset(&vsb, 0, sizeof(GX_SCROLLBAR));
224 gx_vertical_scrollbar_create(&vsb, "vertical scroll bar", wheel_wrap, GX_NULL, GX_STYLE_ENABLED);
225 sprintf(test_comment, "add vertical scroll bar to the third wheel");
226 break;
227
228 case 17:
229 set_total_rows(6);
230 sprintf(test_comment, "Set total rows to 6.");
231 break;
232
233 case 18:
234 set_row_height(45);
235 sprintf(test_comment, "Set row height to 45.");
236 break;
237
238 case 19:
239 set_total_rows(8);
240 sprintf(test_comment, "set total rows to 8.");
241 break;
242
243 case 20:
244 set_selected_row(7, p_sel_semaphore);
245 sprintf(test_comment, "Set selected row to 7.");
246 break;
247
248 case 21:
249 gx_widget_back_move(&vsb, GX_NULL);
250 set_selected_row(0, p_sel_semaphore);
251 sprintf(test_comment, "back move vertical scrolbar, set selected row to 0");
252 break;
253
254 default:
255 end_loop = GX_TRUE;
256 break;
257 }
258
259 if(!end_loop)
260 {
261 gx_validation_set_frame_id(frame_id++);
262 gx_validation_set_frame_comment(test_comment);
263 gx_validation_screen_refresh();
264 index++;
265 }
266 }
267
268 /* Signal the end of the test case. Verify the output. */
269 gx_validation_end();
270
271 exit(0);
272 }
273
274