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