1 /* This is a demo of the high-performance GUIX graphics framework. */
2
3 #include <stdio.h>
4 #include "gx_api.h"
5 #include "guix_widget_types_resources.h"
6 #include "guix_widget_types_specifications.h"
7
8 #define MAX_TEXT_LENGTH 10
9
10 extern GX_WINDOW_ROOT *root;
11
12 static GX_CHAR prompt_text_animated[MAX_TEXT_LENGTH + 1];
13 static GX_CHAR prompt_text_not_animated[MAX_TEXT_LENGTH + 1];
14 extern UINT string_length_get(GX_CONST GX_CHAR* input_string, UINT max_string_length);
15
16 /******************************************************************************************/
set_speed_value(int id,int value)17 void set_speed_value(int id, int value)
18 {
19 GX_PROMPT *prompt;
20 GX_STRING string;
21
22 if (id == 1)
23 {
24 prompt = &(&Gauge_Screen)->Gauge_Screen_prompt_animated;
25 string.gx_string_ptr = prompt_text_animated;
26 }
27 else
28 {
29 prompt = &(&Gauge_Screen)->Gauge_Screen_prompt_not_animated;
30 string.gx_string_ptr = prompt_text_not_animated;
31 }
32
33 gx_utility_ltoa(value, (GX_CHAR *)string.gx_string_ptr, MAX_TEXT_LENGTH + 1);
34
35 string.gx_string_length = string_length_get(string.gx_string_ptr, MAX_TEXT_LENGTH);
36 gx_prompt_text_set_ext(prompt, &string);
37 }
38
39 /******************************************************************************************/
gauge_window_event_handler(GX_WINDOW * win,GX_EVENT * event_ptr)40 UINT gauge_window_event_handler(GX_WINDOW *win, GX_EVENT *event_ptr)
41 {
42 int pos;
43 GX_CIRCULAR_GAUGE *gauge;
44
45 switch (event_ptr->gx_event_type)
46 {
47 case GX_SIGNAL(ID_SLIDER_ANIMATED, GX_EVENT_SLIDER_VALUE):
48 /* Change needle position. */
49 pos = event_ptr->gx_event_payload.gx_event_longdata;
50 set_speed_value(1, pos);
51 gx_widget_find(win, ID_GAUGE_ANIMATED, GX_SEARCH_DEPTH_INFINITE, &gauge);
52 pos = pos * 22 / 10 - 109;
53 gx_circular_gauge_angle_set(gauge, pos);
54 break;
55
56 case GX_SIGNAL(ID_SLIDER_NOT_ANIMATED, GX_EVENT_SLIDER_VALUE):
57 /* Change needle position of gauge 1*/
58 pos = event_ptr->gx_event_payload.gx_event_longdata;
59 set_speed_value(2, pos);
60 gx_widget_find(win, ID_GAUGE_NOT_ANIMATED, GX_SEARCH_DEPTH_INFINITE, &gauge);
61 pos = pos * 22 / 10 - 109;
62 gx_circular_gauge_angle_set(gauge, pos);
63 break;
64
65 default:
66 return gx_window_event_process(win, event_ptr);
67 }
68 return 0;
69 }
70