1 /*******************************************************************************/
2 /*  This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this    */
3 /*  file by hand. Modifications to this file should only be made by running    */
4 /*  the Azure RTOS GUIX Studio application and re-generating the application   */
5 /*  specification file(s). For more information please refer to the Azure RTOS */
6 /*  GUIX Studio User Guide, or visit our web site at azure.com/rtos            */
7 /*                                                                             */
8 /*  GUIX Studio Revision 6.1.12.0                                              */
9 /*  Date (dd.mm.yyyy): 30. 8.2022   Time (hh:mm): 15:22                        */
10 /*******************************************************************************/
11 
12 
13 #ifndef _DEMO_GUIX_HOME_AUTOMATION_SPECIFICATIONS_H_
14 #define _DEMO_GUIX_HOME_AUTOMATION_SPECIFICATIONS_H_
15 
16 #include "gx_api.h"
17 
18 /* Determine if C++ compiler is being used, if so use standard C.              */
19 #ifdef __cplusplus
20 extern   "C" {
21 #endif
22 
23 /* Define widget ids                                                           */
24 
25 #define ID_RADIAL_SLIDER 1
26 #define ID_CLOSE 2
27 #define ID_OPEN 3
28 #define ID_THERMOSTAT_SCREEN 4
29 #define ID_PAGINATION_1 5
30 #define ID_PAGINATION_2 6
31 #define ID_PAGINATION_3 7
32 #define ID_PAGINATION_4 8
33 #define ID_LIGHTS_SCREEN 9
34 #define ID_STATUS 10
35 #define ID_BUTTON_ENABLE_DISABLE 11
36 #define ID_BUTTON_LOCK_UNLOCK_ALL 12
37 #define ID_LOCK_BUTTON 13
38 #define ID_LOCKS_SCREEN 14
39 #define ID_WEATHER_BG 15
40 #define ID_TITLE 16
41 #define ID_WEATHER_WIN 17
42 #define ID_WIND_WIN 18
43 #define ID_HUMIDITY_WIN 19
44 #define ID_THU_WIN 20
45 #define ID_FRI_WIN 21
46 #define ID_SAT_WIN 22
47 #define ID_SUN_WIN 23
48 #define ID_MON_WIN 24
49 #define ID_TUE_WIN 25
50 #define ID_WED_WIN 26
51 #define ID_BOTTOM_INFO_WIN 27
52 #define ID_V_LINE 28
53 #define ID_WEATHER_SCREEN 29
54 #define ID_NUM_0 30
55 #define ID_NUM_1 31
56 #define ID_NUM_2 32
57 #define ID_NUM_3 33
58 #define ID_NUM_4 34
59 #define ID_NUM_5 35
60 #define ID_NUM_6 36
61 #define ID_NUM_7 37
62 #define ID_NUM_8 38
63 #define ID_NUM_9 39
64 #define ID_CLEAR 40
65 #define ID_OK 41
66 #define ID_ADD 42
67 #define ID_FOOTER_LIGHTS 43
68 #define ID_FOOTER_THERMOSTAT 44
69 #define ID_FOOTER_LOCKS 45
70 #define ID_FOOTER_WEATHER 46
71 #define ID_HOME 47
72 #define ID_SETTING 48
73 #define ID_LIGHTS 49
74 #define ID_THERMOSTAT 50
75 #define ID_WEATHER 51
76 #define ID_LOCKS 52
77 
78 
79 /* Define animation ids                                                        */
80 
81 #define GX_NEXT_ANIMATION_ID 1
82 
83 
84 /* Define user event ids                                                       */
85 
86 enum user_defined_events{
87     USER_EVENT_FADE_OUT_HOME_WINDOW = GX_FIRST_USER_EVENT,
88     USER_EVENT_FADE_IN_HOME_WINDOW,
89     GX_NEXT_USER_EVENT_ID
90 };
91 
92 #define GX_ACTION_FLAG_DYNAMIC_TARGET 0x01
93 #define GX_ACTION_FLAG_DYNAMIC_PARENT 0x02
94 #define GX_ACTION_FLAG_POP_TARGET     0x04
95 #define GX_ACTION_FLAG_POP_PARENT     0x08
96 
97 typedef struct GX_STUDIO_ACTION_STRUCT
98 {
99     GX_UBYTE opcode;
100     GX_UBYTE flags;
101     GX_CONST VOID *parent;
102     GX_CONST VOID *target;
103     GX_CONST GX_ANIMATION_INFO  *animation;
104 } GX_STUDIO_ACTION;
105 
106 typedef struct GX_STUDIO_EVENT_ENTRY_STRUCT
107 {
108     ULONG event_type;
109     USHORT event_sender;
110     GX_CONST GX_STUDIO_ACTION *action_list;
111 } GX_STUDIO_EVENT_ENTRY;
112 
113 typedef struct GX_STUDIO_EVENT_PROCESS_STRUCT
114 {
115     GX_CONST GX_STUDIO_EVENT_ENTRY *event_table;
116     UINT (*chain_event_handler)(GX_WIDGET *, GX_EVENT *);
117 } GX_STUDIO_EVENT_PROCESS;
118 
119 /* Declare properties structures for each utilized widget type                 */
120 
121 typedef struct GX_STUDIO_WIDGET_STRUCT
122 {
123    GX_CHAR *widget_name;
124    USHORT  widget_type;
125    USHORT  widget_id;
126    #if defined(GX_WIDGET_USER_DATA)
127    INT   user_data;
128    #endif
129    ULONG style;
130    ULONG status;
131    ULONG control_block_size;
132    GX_RESOURCE_ID normal_fill_color_id;
133    GX_RESOURCE_ID selected_fill_color_id;
134    GX_RESOURCE_ID disabled_fill_color_id;
135    UINT (*create_function) (GX_CONST struct GX_STUDIO_WIDGET_STRUCT *, GX_WIDGET *, GX_WIDGET *);
136    void (*draw_function) (GX_WIDGET *);
137    UINT (*event_function) (GX_WIDGET *, GX_EVENT *);
138    GX_RECTANGLE size;
139    GX_CONST struct GX_STUDIO_WIDGET_STRUCT *next_widget;
140    GX_CONST struct GX_STUDIO_WIDGET_STRUCT *child_widget;
141    ULONG control_block_offset;
142    GX_CONST void *properties;
143 } GX_STUDIO_WIDGET;
144 
145 typedef struct
146 {
147     GX_CONST GX_STUDIO_WIDGET *widget_information;
148     GX_WIDGET        *widget;
149 } GX_STUDIO_WIDGET_ENTRY;
150 
151 typedef struct
152 {
153     GX_RESOURCE_ID string_id;
154     GX_RESOURCE_ID font_id;
155     GX_RESOURCE_ID normal_text_color_id;
156     GX_RESOURCE_ID selected_text_color_id;
157     GX_RESOURCE_ID disabled_text_color_id;
158 } GX_ML_TEXT_BUTTON_PROPERTIES;
159 
160 typedef struct
161 {
162     GX_RESOURCE_ID string_id;
163     GX_RESOURCE_ID font_id;
164     GX_RESOURCE_ID normal_text_color_id;
165     GX_RESOURCE_ID selected_text_color_id;
166     GX_RESOURCE_ID disabled_text_color_id;
167     GX_RESOURCE_ID off_pixelmap_id;
168     GX_RESOURCE_ID on_pixelmap_id;
169     GX_RESOURCE_ID off_disabled_pixelmap_id;
170     GX_RESOURCE_ID on_disabled_pixelmap_id;
171 } GX_RADIO_BUTTON_PROPERTIES;
172 
173 typedef struct
174 {
175     GX_RESOURCE_ID normal_pixelmap_id;
176     GX_RESOURCE_ID selected_pixelmap_id;
177     GX_RESOURCE_ID disabled_pixelmap_id;
178 } GX_PIXELMAP_BUTTON_PROPERTIES;
179 
180 typedef struct
181 {
182     GX_RESOURCE_ID normal_pixelmap_id;
183     GX_RESOURCE_ID selected_pixelmap_id;
184 } GX_ICON_PROPERTIES;
185 
186 typedef struct
187 {
188     GX_VALUE       xcenter;
189     GX_VALUE       ycenter;
190     USHORT         radius;
191     USHORT         track_width;
192     GX_VALUE       current_angle;
193     GX_VALUE       min_angle;
194     GX_VALUE       max_angle;
195     GX_RESOURCE_ID background_pixelmap;
196     GX_RESOURCE_ID needle_pixelmap;
197     USHORT         animation_total_steps;
198     USHORT         animation_delay;
199     USHORT         animation_style;
200     VOID         (*animation_update_callback)(struct GX_RADIAL_SLIDER_STRUCT *slider);
201 } GX_RADIAL_SLIDER_PROPERTIES;
202 
203 typedef struct
204 {
205     GX_RESOURCE_ID string_id;
206     GX_RESOURCE_ID font_id;
207     GX_RESOURCE_ID normal_text_color_id;
208     GX_RESOURCE_ID selected_text_color_id;
209     GX_RESOURCE_ID disabled_text_color_id;
210 } GX_PROMPT_PROPERTIES;
211 
212 typedef struct
213 {
214     GX_RESOURCE_ID string_id;
215     GX_RESOURCE_ID font_id;
216     GX_RESOURCE_ID normal_text_color_id;
217     GX_RESOURCE_ID selected_text_color_id;
218     GX_RESOURCE_ID disabled_text_color_id;
219     VOID (*format_func)(GX_NUMERIC_PROMPT *, INT);
220     INT            numeric_prompt_value;
221 } GX_NUMERIC_PROMPT_PROPERTIES;
222 
223 typedef struct
224 {
225     GX_RESOURCE_ID wallpaper_id;
226 } GX_WINDOW_PROPERTIES;
227 
228 typedef struct
229 {
230    GX_CONST GX_STUDIO_WIDGET *base_info;
231    UINT (*base_create_function) (GX_CONST struct GX_STUDIO_WIDGET_STRUCT *, GX_WIDGET *, GX_WIDGET *);
232    GX_RECTANGLE size;
233 } GX_TEMPLATE_PROPERTIES;
234 
235 
236 /* Declare top-level control blocks                                            */
237 
238 typedef struct WEATHER_BASE_CONTROL_BLOCK_STRUCT
239 {
240     GX_WINDOW_MEMBERS_DECLARE
241     GX_WINDOW weather_base_window_bg;
242     GX_PROMPT weather_base_city_name;
243     GX_NUMERIC_PROMPT weather_base_temperature;
244     GX_PROMPT weather_base_degree_lable;
245     GX_WINDOW weather_base_weather_win;
246     GX_ICON weather_base_weather_icon;
247     GX_PROMPT weather_base_weather_text;
248     GX_WINDOW weather_base_wind_win;
249     GX_ICON weather_base_wind_icon;
250     GX_PROMPT weather_base_prompt_14_1;
251     GX_PROMPT weather_base_prompt_14_3;
252     GX_NUMERIC_PROMPT weather_base_wind_speed;
253     GX_WINDOW weather_base_humdity_win;
254     GX_ICON weather_base_humidity_icon;
255     GX_PROMPT weather_base_prompt_14_2;
256     GX_NUMERIC_PROMPT weather_base_humidity_value;
257     GX_PROMPT weather_base_prompt_14_4;
258     GX_WINDOW weather_base_thu_win;
259     GX_PROMPT weather_base_thu;
260     GX_ICON weather_base_thu_wicon;
261     GX_NUMERIC_PROMPT weather_base_thu_hi_value;
262     GX_NUMERIC_PROMPT weather_base_thu_low_value;
263     GX_PROMPT weather_base_prompt_17;
264     GX_PROMPT weather_base_prompt_17_1;
265     GX_WINDOW weather_base_fri_win;
266     GX_PROMPT weather_base_prompt_14_5;
267     GX_ICON weather_base_fri_wicon;
268     GX_NUMERIC_PROMPT weather_base_fri_hi_value;
269     GX_NUMERIC_PROMPT weather_base_fri_low_value;
270     GX_PROMPT weather_base_prompt_17_2;
271     GX_PROMPT weather_base_prompt_17_3;
272     GX_WINDOW weather_base_sat_win;
273     GX_PROMPT weather_base_prompt_14_6;
274     GX_ICON weather_base_sat_wicon;
275     GX_NUMERIC_PROMPT weather_base_sat_hi_value;
276     GX_NUMERIC_PROMPT weather_base_sat_low_value;
277     GX_PROMPT weather_base_prompt_17_4;
278     GX_PROMPT weather_base_prompt_17_5;
279     GX_WINDOW weather_base_sun_win;
280     GX_PROMPT weather_base_prompt_14_7;
281     GX_ICON weather_base_sun_wicon;
282     GX_NUMERIC_PROMPT weather_base_sun_hi_value;
283     GX_NUMERIC_PROMPT weather_base_sun_low_value;
284     GX_PROMPT weather_base_prompt_17_6;
285     GX_PROMPT weather_base_prompt_17_7;
286     GX_WINDOW weather_base_mon_win;
287     GX_PROMPT weather_base_prompt_14_8;
288     GX_ICON weather_base_mon_wicon;
289     GX_NUMERIC_PROMPT weather_base_mon_hi_value;
290     GX_NUMERIC_PROMPT weather_base_mon_low_value;
291     GX_PROMPT weather_base_prompt_17_8;
292     GX_PROMPT weather_base_prompt_17_9;
293     GX_WINDOW weather_base_tue_win;
294     GX_PROMPT weather_base_prompt_14_9;
295     GX_ICON weather_base_tue_wicon;
296     GX_NUMERIC_PROMPT weather_base_tue_hi_value;
297     GX_NUMERIC_PROMPT weather_base_tue_low_value;
298     GX_PROMPT weather_base_prompt_17_10;
299     GX_PROMPT weather_base_prompt_17_11;
300     GX_WINDOW weather_base_wed_win;
301     GX_PROMPT weather_base_prompt_14_10;
302     GX_ICON weather_base_wed_wicon;
303     GX_NUMERIC_PROMPT weather_base_wed_hi_value;
304     GX_NUMERIC_PROMPT weather_base_wed_low_value;
305     GX_PROMPT weather_base_prompt_17_12;
306     GX_PROMPT weather_base_prompt_17_13;
307     GX_WINDOW weather_base_bottom_info_win;
308     GX_PROMPT weather_base_hi_label;
309     GX_NUMERIC_PROMPT weather_base_low_value;
310     GX_PROMPT weather_base_low_label;
311     GX_NUMERIC_PROMPT weather_base_rain_value;
312     GX_NUMERIC_PROMPT weather_base_hi_value;
313     GX_PROMPT weather_base_rain_label;
314     GX_PROMPT weather_base_percent_lable;
315     GX_WINDOW weather_base_v_line_left;
316     GX_WINDOW weather_base_v_line_right;
317 } WEATHER_BASE_CONTROL_BLOCK;
318 
319 typedef struct PASSCODE_SCREEN_CONTROL_BLOCK_STRUCT
320 {
321     GX_WINDOW_MEMBERS_DECLARE
322     GX_ICON passcode_screen_passcode_1;
323     GX_ICON passcode_screen_passcode_4;
324     GX_ICON passcode_screen_passcode_3;
325     GX_ICON passcode_screen_passcode_2;
326     GX_WINDOW passcode_screen_num_pad;
327     GX_PIXELMAP_BUTTON passcode_screen_num_0;
328     GX_PROMPT passcode_screen_prompt_11_10;
329     GX_PIXELMAP_BUTTON passcode_screen_num_1;
330     GX_PROMPT passcode_screen_prompt_11;
331     GX_PIXELMAP_BUTTON passcode_screen_num_2;
332     GX_PROMPT passcode_screen_prompt_11_1;
333     GX_PIXELMAP_BUTTON passcode_screen_num_3;
334     GX_PROMPT passcode_screen_prompt_11_2;
335     GX_PIXELMAP_BUTTON passcode_screen_num_4;
336     GX_PROMPT passcode_screen_prompt_11_3;
337     GX_PIXELMAP_BUTTON passcode_screen_num_5;
338     GX_PROMPT passcode_screen_prompt_11_4;
339     GX_PIXELMAP_BUTTON passcode_screen_num_6;
340     GX_PROMPT passcode_screen_prompt_11_5;
341     GX_PIXELMAP_BUTTON passcode_screen_num_7;
342     GX_PROMPT passcode_screen_prompt_11_6;
343     GX_PIXELMAP_BUTTON passcode_screen_num_8;
344     GX_PROMPT passcode_screen_prompt_11_7;
345     GX_PIXELMAP_BUTTON passcode_screen_num_9;
346     GX_PROMPT passcode_screen_prompt_11_8;
347     GX_PIXELMAP_BUTTON passcode_screen_num_clear;
348     GX_PROMPT passcode_screen_prompt_11_9;
349     GX_PIXELMAP_BUTTON passcode_screen_close;
350     GX_PIXELMAP_BUTTON passcode_screen_ok;
351     GX_PROMPT passcode_screen_prompt_11_11;
352     GX_PROMPT passcode_screen_title;
353 } PASSCODE_SCREEN_CONTROL_BLOCK;
354 
355 typedef struct CONTROLLER_BASE_CONTROL_BLOCK_STRUCT
356 {
357     GX_WINDOW_MEMBERS_DECLARE
358     GX_PROMPT controller_base_title;
359 } CONTROLLER_BASE_CONTROL_BLOCK;
360 
361 typedef struct SCREEN_BASE_CONTROL_BLOCK_STRUCT
362 {
363     GX_WINDOW_MEMBERS_DECLARE
364     GX_PIXELMAP_BUTTON screen_base_button_light;
365     GX_PIXELMAP_BUTTON screen_base_light;
366     GX_PROMPT screen_base_light_text;
367     GX_PIXELMAP_BUTTON screen_base_button_thermostat;
368     GX_PIXELMAP_BUTTON screen_base_thermostat;
369     GX_PROMPT screen_base_thermostat_text;
370     GX_PIXELMAP_BUTTON screen_base_button_locks;
371     GX_PIXELMAP_BUTTON screen_base_locks;
372     GX_PROMPT screen_base_locks_text;
373     GX_PIXELMAP_BUTTON screen_base_button_weather;
374     GX_PROMPT screen_base_weather_text;
375     GX_PIXELMAP_BUTTON screen_base_weather;
376     GX_PIXELMAP_BUTTON screen_base_home;
377     GX_PIXELMAP_BUTTON screen_base_setting;
378     GX_WINDOW screen_base_slide_win;
379     GX_PIXELMAP_BUTTON screen_base_add;
380     GX_PROMPT screen_base_add_text;
381     GX_ICON screen_base_icon_6;
382 } SCREEN_BASE_CONTROL_BLOCK;
383 
384 typedef struct MAIN_SCREEN_CONTROL_BLOCK_STRUCT
385 {
386     GX_WINDOW_MEMBERS_DECLARE
387     GX_WINDOW main_screen_window;
388     GX_PROMPT main_screen_weather_text;
389     GX_ICON main_screen_weather_icon;
390     GX_NUMERIC_PROMPT main_screen_t_value;
391     GX_NUMERIC_PROMPT main_screen_low_value;
392     GX_PROMPT main_screen_low_lable;
393     GX_PROMPT main_screen_hi_lable;
394     GX_NUMERIC_PROMPT main_screen_hi_value;
395     GX_PROMPT main_screen_dot;
396     GX_ICON main_screen_icon;
397     GX_WINDOW main_screen_home_window;
398     GX_PIXELMAP_BUTTON main_screen_lights;
399     GX_PROMPT main_screen_prompt;
400     GX_PIXELMAP_BUTTON main_screen_pixelmap_button_4;
401     GX_PIXELMAP_BUTTON main_screen_thermostat;
402     GX_PROMPT main_screen_prompt_1;
403     GX_PIXELMAP_BUTTON main_screen_pixelmap_button_5;
404     GX_PIXELMAP_BUTTON main_screen_weather;
405     GX_PROMPT main_screen_prompt_3;
406     GX_PIXELMAP_BUTTON main_screen_pixelmap_button_7;
407     GX_PIXELMAP_BUTTON main_screen_locks;
408     GX_PROMPT main_screen_prompt_2;
409     GX_PIXELMAP_BUTTON main_screen_pixelmap_button_6;
410     GX_WINDOW main_screen_time_window;
411     GX_PROMPT main_screen_am_pm;
412     GX_PROMPT main_screen_date;
413     GX_NUMERIC_PROMPT main_screen_hour;
414     GX_NUMERIC_PROMPT main_screen_minute;
415     GX_ICON main_screen_upper_dot;
416     GX_ICON main_screen_lower_dot;
417 } MAIN_SCREEN_CONTROL_BLOCK;
418 
419 typedef struct THERMOSTAT_BASE_CONTROL_BLOCK_STRUCT
420 {
421     CONTROLLER_BASE_CONTROL_BLOCK base;
422     GX_ICON thermostat_base_ruller_thermostat;
423     GX_PROMPT thermostat_base_prompt_16;
424     GX_PROMPT thermostat_base_prompt_16_1;
425     GX_PROMPT thermostat_base_prompt_16_2;
426     GX_PROMPT thermostat_base_prompt_16_3;
427     GX_PROMPT thermostat_base_prompt_16_4;
428     GX_PROMPT thermostat_base_prompt_16_5;
429     GX_PROMPT thermostat_base_prompt_16_6;
430     GX_PROMPT thermostat_base_prompt_16_7;
431     GX_PROMPT thermostat_base_prompt_16_8;
432     GX_RADIAL_SLIDER thermostat_base_radial_slider;
433     GX_PROMPT thermostat_base_cold_heat_text;
434     GX_PROMPT thermostat_base_current_label;
435     GX_NUMERIC_PROMPT thermostat_base_center_value;
436     GX_PROMPT thermostat_base_dot_lable;
437     GX_PROMPT thermostat_base_prompt_15;
438     GX_ICON thermostat_base_cold_heat_icon;
439     GX_PROMPT thermostat_base_bottom_value;
440     GX_PIXELMAP_BUTTON thermostat_base_button_close;
441     GX_PIXELMAP_BUTTON thermostat_base_button_open;
442 } THERMOSTAT_BASE_CONTROL_BLOCK;
443 
444 typedef struct THERMOSTAT_SCREEN_CONTROL_BLOCK_STRUCT
445 {
446     SCREEN_BASE_CONTROL_BLOCK base;
447     GX_RADIO_BUTTON thermostat_screen_pagination_1;
448     GX_RADIO_BUTTON thermostat_screen_pagination_2;
449     GX_RADIO_BUTTON thermostat_screen_pagination_3;
450     GX_RADIO_BUTTON thermostat_screen_pagination_4;
451     GX_WINDOW thermostat_screen_info_win;
452     GX_PROMPT thermostat_screen_on_lable;
453     GX_ICON thermostat_screen_icon;
454     GX_NUMERIC_PROMPT thermostat_screen_num_on;
455     GX_ICON thermostat_screen_icon_1;
456     GX_NUMERIC_PROMPT thermostat_screen_num_off;
457     GX_PROMPT thermostat_screen_off_lable;
458     GX_PROMPT thermostat_screen_kwh_lable;
459     GX_PROMPT thermostat_screen_kwh_lable_2;
460     GX_NUMERIC_PROMPT thermostat_screen_overall_today;
461     GX_NUMERIC_PROMPT thermostat_screen_energy_in_use;
462     GX_PROMPT thermostat_screen_energy_in_use_lable;
463     GX_PROMPT thermostat_screen_overall_today_lable;
464 } THERMOSTAT_SCREEN_CONTROL_BLOCK;
465 
466 typedef struct LIGHTS_BASE_CONTROL_BLOCK_STRUCT
467 {
468     CONTROLLER_BASE_CONTROL_BLOCK base;
469     GX_PIXELMAP_BUTTON lights_base_button_open;
470     GX_ICON lights_base_icon_ruller;
471     GX_PROMPT lights_base_prompt_16;
472     GX_PROMPT lights_base_prompt_16_2;
473     GX_PROMPT lights_base_prompt_16_3;
474     GX_PROMPT lights_base_prompt_16_4;
475     GX_PROMPT lights_base_prompt_16_5;
476     GX_PROMPT lights_base_prompt_16_6;
477     GX_PROMPT lights_base_prompt_16_7;
478     GX_PROMPT lights_base_prompt_16_8;
479     GX_PROMPT lights_base_prompt_16_9;
480     GX_PROMPT lights_base_prompt_16_10;
481     GX_PROMPT lights_base_prompt_16_1;
482     GX_PIXELMAP_BUTTON lights_base_button_close;
483     GX_RADIAL_SLIDER lights_base_radial_slider;
484     GX_PROMPT lights_base_color_text;
485     GX_NUMERIC_PROMPT lights_base_power_value;
486     GX_PROMPT lights_base_power_lable;
487     GX_NUMERIC_PROMPT lights_base_power_percent_value;
488     GX_PROMPT lights_base_precent_lable;
489 } LIGHTS_BASE_CONTROL_BLOCK;
490 
491 typedef struct LIGHTS_SCREEN_CONTROL_BLOCK_STRUCT
492 {
493     SCREEN_BASE_CONTROL_BLOCK base;
494     GX_RADIO_BUTTON lights_screen_pagination_1;
495     GX_RADIO_BUTTON lights_screen_pagination_2;
496     GX_RADIO_BUTTON lights_screen_pagination_3;
497     GX_RADIO_BUTTON lights_screen_pagination_4;
498     GX_WINDOW lights_screen_info_win;
499     GX_PROMPT lights_screen_on_lable;
500     GX_ICON lights_screen_icon;
501     GX_NUMERIC_PROMPT lights_screen_num_on;
502     GX_ICON lights_screen_icon_1;
503     GX_NUMERIC_PROMPT lights_screen_num_off;
504     GX_PROMPT lights_screen_off_lable;
505     GX_PROMPT lights_screen_kwh_lable;
506     GX_PROMPT lights_screen_kwh_lable_2;
507     GX_NUMERIC_PROMPT lights_screen_overall_today;
508     GX_NUMERIC_PROMPT lights_screen_energy_in_use;
509     GX_PROMPT lights_screen_energy_in_use_lable;
510     GX_PROMPT lights_screen_overall_today_lable;
511 } LIGHTS_SCREEN_CONTROL_BLOCK;
512 
513 typedef struct LOCKS_DOOR_BASE_CONTROL_BLOCK_STRUCT
514 {
515     CONTROLLER_BASE_CONTROL_BLOCK base;
516     GX_ICON locks_door_base_status_icon;
517     GX_PROMPT locks_door_base_status_text;
518     GX_PIXELMAP_BUTTON locks_door_base_button_lock;
519     GX_ICON locks_door_base_lock_icon;
520     GX_PROMPT locks_door_base_lock_text;
521     GX_PIXELMAP_BUTTON locks_door_base_button_close;
522     GX_PIXELMAP_BUTTON locks_door_base_button_open;
523 } LOCKS_DOOR_BASE_CONTROL_BLOCK;
524 
525 typedef struct LOCKS_SCREEN_CONTROL_BLOCK_STRUCT
526 {
527     SCREEN_BASE_CONTROL_BLOCK base;
528     GX_RADIO_BUTTON locks_screen_pagination_1;
529     GX_RADIO_BUTTON locks_screen_pagination_2;
530     GX_RADIO_BUTTON locks_screen_pagination_3;
531 } LOCKS_SCREEN_CONTROL_BLOCK;
532 
533 typedef struct WIN_SAN_DIEGO_CONTROL_BLOCK_STRUCT
534 {
535     WEATHER_BASE_CONTROL_BLOCK base;
536 } WIN_SAN_DIEGO_CONTROL_BLOCK;
537 
538 typedef struct WIN_NEW_YORK_CONTROL_BLOCK_STRUCT
539 {
540     WEATHER_BASE_CONTROL_BLOCK base;
541 } WIN_NEW_YORK_CONTROL_BLOCK;
542 
543 typedef struct WIN_LAS_VEGAS_CONTROL_BLOCK_STRUCT
544 {
545     WEATHER_BASE_CONTROL_BLOCK base;
546 } WIN_LAS_VEGAS_CONTROL_BLOCK;
547 
548 typedef struct WEATHER_SCREEN_CONTROL_BLOCK_STRUCT
549 {
550     SCREEN_BASE_CONTROL_BLOCK base;
551     GX_RADIO_BUTTON weather_screen_pagination_1;
552     GX_RADIO_BUTTON weather_screen_pagination_2;
553     GX_RADIO_BUTTON weather_screen_pagination_3;
554 } WEATHER_SCREEN_CONTROL_BLOCK;
555 
556 typedef struct ADD_BASE_CONTROL_BLOCK_STRUCT
557 {
558     CONTROLLER_BASE_CONTROL_BLOCK base;
559     GX_PIXELMAP_BUTTON add_base_add;
560 } ADD_BASE_CONTROL_BLOCK;
561 
562 typedef struct THERMOSTAT_PAGE_4_CONTROL_BLOCK_STRUCT
563 {
564     GX_WINDOW_MEMBERS_DECLARE
565     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_4_office;
566     ADD_BASE_CONTROL_BLOCK thermostat_page_4_add_room;
567 } THERMOSTAT_PAGE_4_CONTROL_BLOCK;
568 
569 typedef struct THERMOSTAT_PAGE_3_CONTROL_BLOCK_STRUCT
570 {
571     GX_WINDOW_MEMBERS_DECLARE
572     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_3_dinning_room;
573     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_3_outdoor_patio;
574 } THERMOSTAT_PAGE_3_CONTROL_BLOCK;
575 
576 typedef struct THERMOSTAT_PAGE_2_CONTROL_BLOCK_STRUCT
577 {
578     GX_WINDOW_MEMBERS_DECLARE
579     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_2_kids_bedroom;
580     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_2_living_room;
581 } THERMOSTAT_PAGE_2_CONTROL_BLOCK;
582 
583 typedef struct THERMOSTAT_PAGE_1_CONTROL_BLOCK_STRUCT
584 {
585     GX_WINDOW_MEMBERS_DECLARE
586     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_1_kitchen;
587     THERMOSTAT_BASE_CONTROL_BLOCK thermostat_page_1_master_bedroom;
588 } THERMOSTAT_PAGE_1_CONTROL_BLOCK;
589 
590 typedef struct LIGHTS_PAGE_3_CONTROL_BLOCK_STRUCT
591 {
592     GX_WINDOW_MEMBERS_DECLARE
593     LIGHTS_BASE_CONTROL_BLOCK lights_page_3_dinning_room;
594     LIGHTS_BASE_CONTROL_BLOCK lights_page_3_outdoor_patio;
595 } LIGHTS_PAGE_3_CONTROL_BLOCK;
596 
597 typedef struct LIGHTS_PAGE_2_CONTROL_BLOCK_STRUCT
598 {
599     GX_WINDOW_MEMBERS_DECLARE
600     LIGHTS_BASE_CONTROL_BLOCK lights_page_2_kids_bedroom;
601     LIGHTS_BASE_CONTROL_BLOCK lights_page_2_living_room;
602 } LIGHTS_PAGE_2_CONTROL_BLOCK;
603 
604 typedef struct LIGHTS_PAGE_4_CONTROL_BLOCK_STRUCT
605 {
606     GX_WINDOW_MEMBERS_DECLARE
607     LIGHTS_BASE_CONTROL_BLOCK lights_page_4_office;
608     ADD_BASE_CONTROL_BLOCK lights_page_4_add_light;
609 } LIGHTS_PAGE_4_CONTROL_BLOCK;
610 
611 typedef struct LIGHTS_PAGE_1_CONTROL_BLOCK_STRUCT
612 {
613     GX_WINDOW_MEMBERS_DECLARE
614     LIGHTS_BASE_CONTROL_BLOCK lights_page_1_kitchen;
615     LIGHTS_BASE_CONTROL_BLOCK lights_page_1_master_bedroom;
616 } LIGHTS_PAGE_1_CONTROL_BLOCK;
617 
618 typedef struct LOCKS_PAGE_3_CONTROL_BLOCK_STRUCT
619 {
620     GX_WINDOW_MEMBERS_DECLARE
621     LOCKS_DOOR_BASE_CONTROL_BLOCK locks_page_3_lower_deck_door;
622     ADD_BASE_CONTROL_BLOCK locks_page_3_add_lock;
623 } LOCKS_PAGE_3_CONTROL_BLOCK;
624 
625 typedef struct LOCKS_PAGE_2_CONTROL_BLOCK_STRUCT
626 {
627     GX_WINDOW_MEMBERS_DECLARE
628     LOCKS_DOOR_BASE_CONTROL_BLOCK locks_page_2_upper_deck_door;
629     LOCKS_DOOR_BASE_CONTROL_BLOCK locks_page_2_patio_door;
630 } LOCKS_PAGE_2_CONTROL_BLOCK;
631 
632 typedef struct LOCKS_PAGE_1_CONTROL_BLOCK_STRUCT
633 {
634     GX_WINDOW_MEMBERS_DECLARE
635     CONTROLLER_BASE_CONTROL_BLOCK locks_page_1_security_alarm;
636     GX_ICON locks_page_1_icon_3;
637     GX_PROMPT locks_page_1_prompt_15_1;
638     GX_PIXELMAP_BUTTON locks_page_1_button_enable_diable;
639     GX_ICON locks_page_1_icon_5;
640     GX_PROMPT locks_page_1_enable_disable_text;
641     GX_PIXELMAP_BUTTON locks_page_1_button_lock;
642     GX_ICON locks_page_1_lock_unlock_icon;
643     GX_PROMPT locks_page_1_lock_unlock_text;
644     GX_ICON locks_page_1_icon_1;
645     GX_ICON locks_page_1_icon_2;
646     GX_PROMPT locks_page_1_prompt_15_5;
647     GX_MULTI_LINE_TEXT_BUTTON locks_page_1_multi_line_button;
648     LOCKS_DOOR_BASE_CONTROL_BLOCK locks_page_1_front_door;
649 } LOCKS_PAGE_1_CONTROL_BLOCK;
650 
651 
652 /* extern statically defined control blocks                                    */
653 
654 #ifndef GUIX_STUDIO_GENERATED_FILE
655 extern THERMOSTAT_PAGE_4_CONTROL_BLOCK thermostat_page_4;
656 extern THERMOSTAT_PAGE_3_CONTROL_BLOCK thermostat_page_3;
657 extern THERMOSTAT_PAGE_2_CONTROL_BLOCK thermostat_page_2;
658 extern THERMOSTAT_PAGE_1_CONTROL_BLOCK thermostat_page_1;
659 extern THERMOSTAT_BASE_CONTROL_BLOCK thermostat_base;
660 extern THERMOSTAT_SCREEN_CONTROL_BLOCK thermostat_screen;
661 extern LIGHTS_PAGE_3_CONTROL_BLOCK lights_page_3;
662 extern LIGHTS_PAGE_2_CONTROL_BLOCK lights_page_2;
663 extern LIGHTS_PAGE_4_CONTROL_BLOCK lights_page_4;
664 extern LIGHTS_PAGE_1_CONTROL_BLOCK lights_page_1;
665 extern LIGHTS_BASE_CONTROL_BLOCK lights_base;
666 extern LIGHTS_SCREEN_CONTROL_BLOCK lights_screen;
667 extern LOCKS_PAGE_3_CONTROL_BLOCK locks_page_3;
668 extern LOCKS_PAGE_2_CONTROL_BLOCK locks_page_2;
669 extern LOCKS_PAGE_1_CONTROL_BLOCK locks_page_1;
670 extern LOCKS_DOOR_BASE_CONTROL_BLOCK locks_door_base;
671 extern LOCKS_SCREEN_CONTROL_BLOCK locks_screen;
672 extern WIN_SAN_DIEGO_CONTROL_BLOCK win_San_Diego;
673 extern WIN_NEW_YORK_CONTROL_BLOCK win_New_York;
674 extern WIN_LAS_VEGAS_CONTROL_BLOCK win_Las_Vegas;
675 extern WEATHER_BASE_CONTROL_BLOCK weather_base;
676 extern WEATHER_SCREEN_CONTROL_BLOCK weather_screen;
677 extern PASSCODE_SCREEN_CONTROL_BLOCK passcode_screen;
678 extern ADD_BASE_CONTROL_BLOCK add_base;
679 extern CONTROLLER_BASE_CONTROL_BLOCK controller_base;
680 extern SCREEN_BASE_CONTROL_BLOCK screen_base;
681 extern MAIN_SCREEN_CONTROL_BLOCK main_screen;
682 #endif
683 
684 /* Declare event process functions, draw functions, and callback functions     */
685 
686 UINT thermostat_base_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
687 VOID thermostat_radial_slider_value_update(GX_RADIAL_SLIDER *slider);
688 VOID custom_radial_slider_draw(GX_RADIAL_SLIDER *widget);
689 VOID power_value_format(GX_NUMERIC_PROMPT *, INT);
690 UINT lights_base_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
691 VOID radial_slider_value_update(GX_RADIAL_SLIDER *slider);
692 UINT locks_page_1_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
693 UINT locks_door_base_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
694 UINT passcode_screen_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
695 UINT screen_base_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
696 UINT slide_win_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
697 UINT main_screen_event_process(GX_WINDOW *widget, GX_EVENT *event_ptr);
698 VOID main_screen_draw(GX_WINDOW *widget);
699 VOID time_format(GX_NUMERIC_PROMPT *, INT);
700 
701 /* Declare the GX_STUDIO_DISPLAY_INFO structure                                */
702 
703 
704 typedef struct GX_STUDIO_DISPLAY_INFO_STRUCT
705 {
706     GX_CONST GX_CHAR *name;
707     GX_CONST GX_CHAR *canvas_name;
708     GX_CONST GX_THEME **theme_table;
709     GX_CONST GX_STRING **language_table;
710     USHORT   theme_table_size;
711     USHORT   language_table_size;
712     UINT     string_table_size;
713     UINT     x_resolution;
714     UINT     y_resolution;
715     GX_DISPLAY *display;
716     GX_CANVAS  *canvas;
717     GX_WINDOW_ROOT *root_window;
718     GX_COLOR   *canvas_memory;
719     ULONG      canvas_memory_size;
720     USHORT     rotation_angle;
721 } GX_STUDIO_DISPLAY_INFO;
722 
723 
724 /* Declare Studio-generated functions for creating top-level widgets           */
725 
726 UINT gx_studio_multi_line_text_button_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
727 UINT gx_studio_radio_button_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
728 UINT gx_studio_pixelmap_button_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
729 UINT gx_studio_icon_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
730 UINT gx_studio_radial_slider_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
731 UINT gx_studio_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
732 UINT gx_studio_numeric_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
733 UINT gx_studio_window_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
734 UINT gx_studio_template_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
735 GX_WIDGET *gx_studio_widget_create(GX_BYTE *storage, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent);
736 UINT gx_studio_named_widget_create(char *name, GX_WIDGET *parent, GX_WIDGET **new_widget);
737 UINT gx_studio_display_configure(USHORT display, UINT (*driver)(GX_DISPLAY *), GX_UBYTE language, USHORT theme, GX_WINDOW_ROOT **return_root);
738 UINT gx_studio_auto_event_handler(GX_WIDGET *widget, GX_EVENT *event_ptr, GX_CONST GX_STUDIO_EVENT_PROCESS *record);
739 
740 /* Determine if a C++ compiler is being used.  If so, complete the standard
741   C conditional started above.                                                 */
742 #ifdef __cplusplus
743 }
744 #endif
745 
746 #endif                                       /* sentry                         */
747