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_window_client_scroll", /* Test name */
10     0, 0, 639, 479  /* Define the coordinates of the capture area.
11                          In this test, we only need to capture the scrollbar
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 scrollbar 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 scrollbar 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 scrollbar 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 
57 #include "demo_guix_all_widgets.c"
58 
59 char test_comment[256];
60 
61 /* This thread simulates user input.  Its priority is lower
62    than the GUIX thread, so that GUIX finishes an operation
63    before this thread is able to issue the next command. */
control_thread_entry(ULONG input)64 static VOID control_thread_entry(ULONG input)
65 {
66 int frame_id = 1;
67 GX_EVENT my_event;
68 GX_SCROLLBAR vscrollbar[2];
69 GX_SCROLLBAR hscrollbar;
70 UINT         status;
71 
72     ToggleScreen(pWindowScreen, pButtonScreen);
73     memset(&vscrollbar[0], 0, sizeof(GX_SCROLLBAR));
74     memset(&vscrollbar[1], 0, sizeof(GX_SCROLLBAR));
75     memset(&hscrollbar, 0, sizeof(GX_SCROLLBAR));
76 
77     gx_vertical_scrollbar_create(&vscrollbar[0], "test_vscrollbar", &window_screen, GX_NULL, 0);
78     status = gx_vertical_scrollbar_create(&vscrollbar[1], "test_vscrollbar", GX_NULL, GX_NULL, 0);
79     status |= gx_horizontal_scrollbar_create(&hscrollbar, "test_hscrollbar", GX_NULL, GX_NULL, 0);
80 
81     if(status != GX_SUCCESS)
82     {
83        exit(0);
84     }
85     gx_widget_detach(&window_screen.window_screen_vertical_scroll_1);
86     gx_widget_detach(&window_screen.window_screen_hscroll_1);
87 
88     gx_window_wallpaper_set(&window_screen.window_screen_window_4, 1000, GX_TRUE);
89 
90     memset(&my_event, 0, sizeof(GX_EVENT));
91     my_event.gx_event_display_handle = 1;
92 
93     my_event.gx_event_payload.gx_event_intdata[1] = 50;
94     my_event.gx_event_payload.gx_event_intdata[0] = 0;
95     my_event.gx_event_type = GX_EVENT_HORIZONTAL_SCROLL;
96     gx_system_event_send(&my_event);
97 
98     gx_validation_set_frame_id(frame_id++);
99     gx_validation_set_frame_comment("detach scrollbars, set wallpaper id = 1000, send horizontal scroll event.");
100     gx_validation_screen_refresh();
101 
102     hscrollbar.gx_scrollbar_upleft.gx_widget_size.gx_rectangle_left = 100;
103     hscrollbar.gx_scrollbar_upleft.gx_widget_size.gx_rectangle_right = 100;
104     memset(&my_event, 0, sizeof(GX_EVENT));
105     my_event.gx_event_type = GX_EVENT_PEN_DOWN;
106     my_event.gx_event_target = (GX_WIDGET *)&hscrollbar;
107     gx_system_event_send(&my_event);
108 
109     gx_validation_set_frame_id(frame_id++);
110     gx_validation_set_frame_comment("gx_scrollbar_upleft.gx_widget_size.gx_rectangle_left == gx_scrollbar_upleft.gx_widget_size.gx_rectangle_right");
111     gx_validation_screen_refresh();
112 
113     gx_widget_detach(&hscrollbar);
114     my_event.gx_event_type = GX_EVENT_HIDE;
115     my_event.gx_event_target = (GX_WIDGET *)&hscrollbar;
116     gx_system_event_send(&my_event);
117 
118     gx_validation_set_frame_id(frame_id++);
119     gx_validation_set_frame_comment("Send GX_EVENT_HIDE to scrollbar");
120     gx_validation_screen_refresh();
121 
122     gx_widget_detach(&hscrollbar);
123     my_event.gx_event_type = GX_EVENT_SHOW;
124     my_event.gx_event_target = (GX_WIDGET *)&hscrollbar;
125     gx_system_event_send(&my_event);
126 
127     gx_validation_set_frame_id(frame_id++);
128     gx_validation_set_frame_comment("Send GX_EVENT_SHOW to scrollbar");
129     gx_validation_screen_refresh();
130 
131     vscrollbar[0].gx_widget_type = GX_TYPE_VERTICAL_SCROLL;
132     gx_widget_style_add((GX_WIDGET *)&vscrollbar, GX_STYLE_TRANSPARENT);
133     my_event.gx_event_type = GX_EVENT_SHOW;
134     my_event.gx_event_target = (GX_WIDGET *)&vscrollbar;
135     gx_system_event_send(&my_event);
136 
137     gx_validation_set_frame_id(frame_id++);
138     gx_validation_set_frame_comment("Send GX_EVENT_SHOW to scrollbar");
139     gx_validation_screen_refresh();
140 
141     /* Signal the end of the test case.  Verify the output. */
142     gx_validation_end();
143 
144     exit(0);
145 }
146