mirror of
https://github.com/azure-rtos/guix.git
synced 2025-01-28 07:03:11 +08:00
0e6fdbf5ab
Add GUIX regression tests.
146 lines
4.5 KiB
C
146 lines
4.5 KiB
C
/* This is a small demo of the high-performance GUIX graphics framework. */
|
|
|
|
#include <stdio.h>
|
|
#include "gx_api.h"
|
|
|
|
#include "guix_medical_mouse_support_resources.h"
|
|
#include "guix_medical_mouse_support_specifications.h"
|
|
|
|
#include "demo_guix_medical_mouse_support.h"
|
|
|
|
#define NUM_SLIDERS 4
|
|
extern char current_patient_name[128];
|
|
GX_CHAR value_strings[NUM_SLIDERS][8];
|
|
#define MAX_VAL_LEN 4
|
|
#define NUM_ANIMATION_STEPS 10
|
|
|
|
INT med_levels[NUM_SLIDERS] = {75, 60, 53, 42};
|
|
GX_BOOL animation_running = GX_FALSE;
|
|
|
|
GX_SLIDER *med_sliders[NUM_SLIDERS] = {
|
|
(GX_SLIDER *) &meds_screen.meds_screen_med1_level,
|
|
(GX_SLIDER *) &meds_screen.meds_screen_med2_level,
|
|
(GX_SLIDER *) &meds_screen.meds_screen_med3_level,
|
|
(GX_SLIDER *) &meds_screen.meds_screen_med4_level
|
|
};
|
|
|
|
INT animation_step;
|
|
|
|
VOID update_prompt(GX_PROMPT *prompt, GX_CHAR *buffer, INT value)
|
|
{
|
|
gx_utility_ltoa(value, buffer, MAX_VAL_LEN);
|
|
gx_prompt_text_set(prompt, buffer);
|
|
}
|
|
|
|
UINT meds_screen_event_handler(GX_WINDOW *window, GX_EVENT *myevent)
|
|
{
|
|
GX_PROMPT *prompt;
|
|
GX_SLIDER *slider;
|
|
INT loop;
|
|
INT value;
|
|
|
|
switch(myevent ->gx_event_type)
|
|
{
|
|
case GX_EVENT_SHOW:
|
|
gx_prompt_text_set(&meds_screen.meds_screen_patient_name, GetPatientName());
|
|
gx_prompt_text_set(&meds_screen.meds_screen_admit_date, GetPatientAdmitDate());
|
|
animation_running = GX_TRUE;
|
|
|
|
// reset all sliders to initial value 0
|
|
for (loop = 0; loop < NUM_SLIDERS; loop++)
|
|
{
|
|
slider = med_sliders[loop];
|
|
gx_slider_value_set(slider, &slider->gx_slider_info, 0);
|
|
}
|
|
med_screen_base_event_handler(window, myevent);
|
|
animation_step = 0;
|
|
gx_system_timer_start(window, 1, 1, 1);
|
|
break;
|
|
|
|
case GX_SIGNAL(ID_SLIDER1, GX_EVENT_SLIDER_VALUE):
|
|
gx_widget_find(window, ID_VAL1_DISPLAY, 0, (GX_WIDGET **) &prompt);
|
|
update_prompt(prompt, value_strings[0], myevent->gx_event_payload.gx_event_longdata);
|
|
|
|
if (!animation_running)
|
|
{
|
|
med_levels[0] = myevent->gx_event_payload.gx_event_longdata;
|
|
}
|
|
break;
|
|
|
|
case GX_SIGNAL(ID_SLIDER2, GX_EVENT_SLIDER_VALUE):
|
|
gx_widget_find(window, ID_VAL2_DISPLAY, 0, (GX_WIDGET **) &prompt);
|
|
update_prompt(prompt, value_strings[1], myevent->gx_event_payload.gx_event_longdata);
|
|
if (!animation_running)
|
|
{
|
|
med_levels[1] = myevent->gx_event_payload.gx_event_longdata;
|
|
}
|
|
break;
|
|
|
|
case GX_SIGNAL(ID_SLIDER3, GX_EVENT_SLIDER_VALUE):
|
|
gx_widget_find(window, ID_VAL3_DISPLAY, 0, (GX_WIDGET **) &prompt);
|
|
update_prompt(prompt, value_strings[2], myevent->gx_event_payload.gx_event_longdata);
|
|
|
|
if (!animation_running)
|
|
{
|
|
med_levels[2] = myevent->gx_event_payload.gx_event_longdata;
|
|
}
|
|
break;
|
|
|
|
case GX_SIGNAL(ID_SLIDER4, GX_EVENT_SLIDER_VALUE):
|
|
gx_widget_find(window, ID_VAL4_DISPLAY, 0, (GX_WIDGET **) &prompt);
|
|
update_prompt(prompt, value_strings[3], myevent->gx_event_payload.gx_event_longdata);
|
|
|
|
if (!animation_running)
|
|
{
|
|
med_levels[3] = myevent->gx_event_payload.gx_event_longdata;
|
|
}
|
|
break;
|
|
|
|
case GX_EVENT_TIMER:
|
|
animation_step++;
|
|
if (animation_step == NUM_ANIMATION_STEPS)
|
|
{
|
|
gx_system_timer_stop(window, 1);
|
|
|
|
for (loop = 0; loop < NUM_SLIDERS; loop++)
|
|
{
|
|
slider = med_sliders[loop];
|
|
gx_slider_value_set(slider, &slider->gx_slider_info, med_levels[loop]);
|
|
}
|
|
animation_running = GX_FALSE;
|
|
}
|
|
else
|
|
{
|
|
for (loop = 0; loop < NUM_SLIDERS; loop++)
|
|
{
|
|
slider = med_sliders[loop];
|
|
value = (med_levels[loop] + slider->gx_slider_info.gx_slider_info_current_val) / 2;
|
|
gx_slider_value_set(slider, &slider->gx_slider_info, value);
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return med_screen_base_event_handler(window, myevent);;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
VOID med_level_draw(GX_PROMPT *prompt)
|
|
{
|
|
GX_VALUE twidth;
|
|
GX_FONT *font;
|
|
GX_PIXELMAP *map;
|
|
GX_CHAR *text;
|
|
|
|
gx_prompt_draw(prompt);
|
|
|
|
// Draw the % symbol next to the text:
|
|
gx_context_font_get(prompt->gx_prompt_font_id, &font);
|
|
gx_context_pixelmap_get(GX_PIXELMAP_ID_PERCENT, &map);
|
|
gx_prompt_text_get(prompt, &text);
|
|
gx_system_string_width_get(font, text, -1, &twidth);
|
|
gx_canvas_pixelmap_draw(prompt->gx_widget_size.gx_rectangle_left + twidth,
|
|
prompt->gx_widget_size.gx_rectangle_top, map);
|
|
} |