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_glyph_draw_8bpp_screen_aa_text_colors_8",
10     55, 107, 560, 300  /* Define the coordinates of the capture area.
11                          In this test, we only need to capture the line
12                          drawing area.  */
13 };
14 
15 /* This is a small demo of the high-performance GUIX graphics framework. */
16 
17 static VOID      control_thread_entry(ULONG);
main(int argc,char ** argv)18 int main(int argc, char ** argv)
19 {
20     /* Parse the command line argument. */
21     gx_validation_setup(argc, argv);
22 
23     /* Start ThreadX system */
24     tx_kernel_enter();
25     return(0);
26 }
27 
tx_application_define(void * first_unused_memory)28 VOID tx_application_define(void *first_unused_memory)
29 {
30 
31     /* Create a dedicated thread to perform various operations
32        on the line drawing example. These operations simulate
33        user input. */
34     gx_validation_control_thread_create(control_thread_entry);
35 
36     /* Termiante the test if it runs for more than 100 ticks */
37     /* This function is not implemented yet. */
38     gx_validation_watchdog_create(100);
39 
40     /* Call the actual line example routine. */
41     gx_validation_application_define(first_unused_memory);
42 
43 }
44 
45 
46 /* Replace the default graphics driver with the validation driver. */
47 #ifdef win32_graphics_driver_setup_8bit_palette
48 #undef win32_graphics_driver_setup_8bit_palette
49 #endif
50 #define win32_graphics_driver_setup_8bit_palette  gx_validation_graphics_driver_setup_8bit_palette
51 
52 
53 #ifdef WIN32
54 #undef WIN32
55 #endif
56 
57 #include "gx_validation_wrapper.h"
58 
59 #include "demo_glyph_draw_8bpp.c"
60 
61 int clip_width[] = {5, 10, 15, 20, 25, 30};
62 
63 char test_comment[256];
64 extern GX_STUDIO_DISPLAY_INFO glyph_draw_8bpp_screen_display_table[];
65 extern VOID _gx_display_driver_8bpp_glyph_4bit_draw(GX_DRAW_CONTEXT *context, GX_RECTANGLE *draw_area, GX_POINT *map_offset, GX_CONST GX_GLYPH *glyph);
66 
control_thread_entry(ULONG input)67 static VOID control_thread_entry(ULONG input)
68 {
69 int  test_case;
70 int  slider_value;
71 UINT width_index;
72 int  frame_id = 1;
73 int  increment = 10;
74 GX_SLIDER_INFO *slider_info;
75 GX_CHAR get_value[3];
76 GX_CONST GX_THEME *theme_ptr;
77 
78     /* Save palette. */
79     theme_ptr = glyph_draw_8bpp_screen_display_table[DISPLAY_1].theme_table[0];
80     gx_validation_write_palette(theme_ptr -> theme_palette, theme_ptr->theme_palette_size);
81 
82     for(test_case = 0; test_case < 2; test_case++)
83     {
84         if(test_case == 1)
85         {
86             /* Change 4bit glyph draw driver. */
87             root->gx_window_root_canvas->gx_canvas_display->gx_display_driver_4bit_glyph_draw = _gx_display_driver_8bpp_glyph_4bit_draw;
88         }
89 
90         for(width_index = 0; width_index < sizeof(clip_width)/sizeof(int); width_index ++)
91         {
92             gx_utility_ltoa(clip_width[width_index], get_value, 3);
93             strcpy(pVClipInput->gx_single_line_text_input_buffer, get_value);
94             pVClipInput -> gx_single_line_text_input_string_size = strlen(get_value);
95             gx_widget_event_generate(pVClipInput, GX_EVENT_TEXT_EDITED, 0);
96 
97 
98             strcpy(pHClipInput->gx_single_line_text_input_buffer, get_value);
99             pHClipInput -> gx_single_line_text_input_string_size = strlen(get_value);
100             gx_widget_event_generate(pHClipInput, GX_EVENT_TEXT_EDITED, 0);
101 
102             /* Drag horizontal clip down. */
103             slider_info = &pVerticalSlider -> gx_slider_info;
104             for(slider_value = slider_info -> gx_slider_info_max_val; slider_value >= slider_info -> gx_slider_info_min_val; slider_value -= increment)
105             {
106                 gx_validation_set_frame_id(frame_id);
107                 sprintf(test_comment, "Clip width: %d, Drag horizontal clip down", clip_width[width_index]);
108 
109                 gx_validation_set_frame_comment(test_comment);
110                 gx_slider_value_set(pVerticalSlider, slider_info, slider_value);
111 
112                 /* Mark the window "dirty" */
113                 gx_system_dirty_mark(pMainWin);
114 
115                 /* Force a screen refresh. */
116                 gx_validation_screen_refresh();
117 
118                 frame_id ++;
119             }
120 
121             /* Drag horizontal clip up. */
122             for(slider_value = slider_info -> gx_slider_info_min_val; slider_value <= slider_info -> gx_slider_info_max_val; slider_value += increment)
123             {
124                 gx_validation_set_frame_id(frame_id);
125                 sprintf(test_comment, "Clip width: %d, Drag horizontal clip up", clip_width[width_index]);
126 
127                 gx_validation_set_frame_comment(test_comment);
128                 gx_slider_value_set(pVerticalSlider, slider_info, slider_value);
129 
130                 /* Mark the window "dirty" */
131                 gx_system_dirty_mark(pMainWin);
132 
133                 /* Force a screen refresh. */
134                 gx_validation_screen_refresh();
135 
136                 frame_id ++;
137             }
138 
139             /* Drag vertical clip right. */
140             slider_info = &pHorizontalSlider -> gx_slider_info;
141             for(slider_value = slider_info -> gx_slider_info_min_val; slider_value <= slider_info -> gx_slider_info_max_val; slider_value += increment)
142             {
143                 gx_validation_set_frame_id(frame_id);
144                 sprintf(test_comment, "Clip width: %d, Drag vertical clip right", clip_width[width_index]);
145 
146                 gx_validation_set_frame_comment(test_comment);
147                 gx_slider_value_set(pHorizontalSlider, slider_info, slider_value);
148 
149                 /* Mark the window "dirty" */
150                 gx_system_dirty_mark(pMainWin);
151 
152                 /* Force a screen refresh. */
153                 gx_validation_screen_refresh();
154 
155                 frame_id ++;
156             }
157 
158             /* Drag vertical clip left. */
159             for(slider_value = slider_info -> gx_slider_info_max_val; slider_value >= slider_info -> gx_slider_info_min_val; slider_value -= increment)
160             {
161                 gx_validation_set_frame_id(frame_id);
162                 sprintf(test_comment, "Clip width: %d, Drag vertical clip left", clip_width[width_index]);
163 
164                 gx_validation_set_frame_comment(test_comment);
165                 gx_slider_value_set(pHorizontalSlider, slider_info, slider_value);
166 
167                 /* Mark the window "dirty" */
168                 gx_system_dirty_mark(pMainWin);
169 
170                 /* Force a screen refresh. */
171                 gx_validation_screen_refresh();
172 
173                 frame_id ++;
174             }
175         }
176     }
177 
178     /* Signal the end of the test case.  Verify the output. */
179     gx_validation_end();
180 
181     exit(0);
182 }
183