1
0
mirror of https://github.com/azure-rtos/guix.git synced 2025-01-28 07:03:11 +08:00
Ting Zhu 0e6fdbf5ab
Add GUIX regression tests. (#68)
Add GUIX regression tests.
2023-11-16 15:56:54 +08:00

200 lines
8.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"
VOID patient_prompt_draw(GX_PROMPT *prompt);
int selected_patient_index = 0;
/* Define constants for patients screen. */
#define MR_NUM_SHIFT 208
#define ROOM_NUM_SHIFT 128
#define ADMIT_DATE_SHIFT 112
#define PATIENT_LIST_VISIBLE_ROWS 9
#include "guix_medical_mouse_support_resources.h"
#include "guix_medical_mouse_support_specifications.h"
typedef struct PATIENT_DATA_STRUCT {
char *name;
char *mr_num;
char *room_num;
char *admit_date;
} PATIENT_DATA;
typedef struct PATIENT_ROW_STRUCT {
GX_WIDGET background;
GX_PROMPT name;
GX_PROMPT mr_num;
GX_PROMPT room_num;
GX_PROMPT admit_date;
} PATIENT_ROW;
PATIENT_DATA patient_list[] = {
{ "Anderson, Fionna", "MRN125", "1B107", "May 23, 2016"},
{ "Abramson, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Adderiy, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Adrian, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "Aldridge, Robert", "MRN108", "2B214", "May 07, 2016"},
{ "Alsopp, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Babcock, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Baldwin, Susan", "MRN114", "3A523", "May 30, 2016"},
{ "Barnes, Fionna", "MRN125", "1B107", "May 23, 2016"},
{ "Bawerman, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Benson, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Birch, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "Calhoun, Rober", "MRN108", "2B214", "May 07, 2016"},
{ "Carey, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Carroll, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Chandter, Susan", "MRN114", "3A523", "May 30, 2016"},
{ "Charlson, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Daniels, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Day, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "Derrick, Robert", "MRN108", "2B214", "May 07, 2016"},
{ "Dodson, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Eddington, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Ellington, Susan", "MRN114", "3A523", "May 30, 2016"},
{ "Faber, Fionna", "MRN125", "1B107", "May 23, 2016"},
{ "Farmer, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Ferguson, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Fisher, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "Flannagan, Robert", "MRN108", "2B214", "May 07, 2016"},
{ "Galbraith, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Garrison, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Gerald, Susan", "MRN114", "3A523", "May 30, 2016"},
{ "Gilbert, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Hailey, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Hancock, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "Harrison, Robert", "MRN108", "2B214", "May 07, 2016"},
{ "Jacobson, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Jeff, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Keat, Susan", "MRN114", "3A523", "May 30, 2016"},
{ "Kendal, Fionna", "MRN125", "1B107", "May 23, 2016"},
{ "Laird, Frank", "MRN117", "1D205", "Apr 30, 2016"},
{ "Larkins, James", "MRN093", "1D208", "Dec 25, 2015"},
{ "Leapman, Michaela", "MRN043", "2B204", "Jun 15, 2016"},
{ "MacAdam, Robert", "MRN108", "2B214", "May 07, 2016"},
{ "MacDonald, Antony", "MRN071", "3A455", "May 31, 2016"},
{ "Parkinson, Margarita", "MRN055", "1D310", "Feb 24, 2016"},
{ "Samuels, Susan", "MRN114", "3A523", "May 30, 2016"},
{ GX_NULL, GX_NULL, GX_NULL, GX_NULL}
};
PATIENT_ROW row_memory[PATIENT_LIST_VISIBLE_ROWS + 1];
GX_CHAR *GetPatientName(void)
{
return patient_list[selected_patient_index].name;
}
GX_CHAR *GetPatientAdmitDate(void)
{
return patient_list[selected_patient_index].admit_date;
}
void patient_row_create(GX_VERTICAL_LIST *list, GX_WIDGET *widget, INT index)
{
GX_RECTANGLE childsize;
PATIENT_ROW *row = (PATIENT_ROW *) widget;
GX_RESOURCE_ID bkgnd_color = GX_COLOR_ID_ODD_ROW;
GX_BOOL result;
if (index & 1)
{
bkgnd_color = GX_COLOR_ID_WINDOW_FILL;
}
gx_widget_created_test(&row -> background, &result);
if (!result)
{
gx_utility_rectangle_define(&childsize, list->gx_window_client.gx_rectangle_left + 10, 0,
list->gx_window_client.gx_rectangle_right - 10, 27);
gx_widget_create(&row->background, NULL, list, GX_STYLE_ENABLED, GX_ID_NONE, &childsize);
gx_widget_status_add(&row -> background, GX_STATUS_SELECTABLE | GX_STATUS_ACCEPTS_FOCUS);
childsize.gx_rectangle_left += 10;
childsize.gx_rectangle_right = childsize.gx_rectangle_left + 190;
gx_prompt_create(&row->name, NULL, &row->background, 0,
GX_STYLE_TRANSPARENT|GX_STYLE_TEXT_LEFT, 0, &childsize);
gx_widget_draw_set(&row->name, patient_prompt_draw);
gx_prompt_text_color_set(&row->name, GX_COLOR_ID_OFF_WHITE, GX_COLOR_ID_BLACK, GX_COLOR_ID_BLACK);
gx_utility_rectangle_shift(&childsize, MR_NUM_SHIFT, 0);
gx_prompt_create(&row->mr_num, NULL, &row->background, 0,
GX_STYLE_TRANSPARENT|GX_STYLE_TEXT_LEFT, 0, &childsize);
gx_widget_draw_set(&row->mr_num, patient_prompt_draw);
gx_prompt_text_color_set(&row->mr_num, GX_COLOR_ID_OFF_WHITE, GX_COLOR_ID_BLACK, GX_COLOR_ID_BLACK);
gx_utility_rectangle_shift(&childsize, ROOM_NUM_SHIFT, 0);
gx_prompt_create(&row->room_num, NULL, &row->background, 0,
GX_STYLE_TRANSPARENT|GX_STYLE_TEXT_LEFT, 0, &childsize);
gx_widget_draw_set(&row->room_num, patient_prompt_draw);
gx_prompt_text_color_set(&row->room_num, GX_COLOR_ID_OFF_WHITE, GX_COLOR_ID_BLACK, GX_COLOR_ID_BLACK);
gx_utility_rectangle_shift(&childsize, ADMIT_DATE_SHIFT, 0);
gx_prompt_create(&row->admit_date, NULL, &row->background, 0,
GX_STYLE_TRANSPARENT|GX_STYLE_TEXT_LEFT, 0, &childsize);
gx_widget_draw_set(&row->admit_date, patient_prompt_draw);
gx_prompt_text_color_set(&row->admit_date, GX_COLOR_ID_OFF_WHITE, GX_COLOR_ID_BLACK, GX_COLOR_ID_BLACK);
}
gx_widget_fill_color_set(&row->background, bkgnd_color, GX_COLOR_ID_GREEN, GX_COLOR_ID_GREEN);
gx_prompt_text_set(&row->name, patient_list[index].name);
gx_prompt_text_set(&row->mr_num, patient_list[index].mr_num);
gx_prompt_text_set(&row->room_num, patient_list[index].room_num);
gx_prompt_text_set(&row->admit_date, patient_list[index].admit_date);
}
VOID patient_prompt_draw(GX_PROMPT *prompt)
{
// assume the style of the background before drawing:
if (prompt->gx_widget_parent)
{
if (prompt->gx_widget_parent->gx_widget_style & GX_STYLE_DRAW_SELECTED)
{
prompt->gx_widget_style |= GX_STYLE_DRAW_SELECTED;
}
else
{
prompt->gx_widget_style &= ~GX_STYLE_DRAW_SELECTED;
}
}
gx_prompt_draw(prompt);
}
VOID patient_list_children_create(PATIENTS_SCREEN_CONTROL_BLOCK *win)
{
INT count;
GX_VERTICAL_LIST *list = &win ->patients_screen_patient_list;
for (count = 0; count <= PATIENT_LIST_VISIBLE_ROWS; count++)
{
patient_row_create(list, (GX_WIDGET *) &row_memory[count], count);
}
}
UINT patients_screen_event_handler(GX_WINDOW *window, GX_EVENT *myevent)
{
GX_VERTICAL_LIST *list;
PATIENTS_SCREEN_CONTROL_BLOCK *screen = (PATIENTS_SCREEN_CONTROL_BLOCK *) window;
switch(myevent->gx_event_type)
{
case GX_SIGNAL(ID_PATIENT_LIST, GX_EVENT_LIST_SELECT):
list = &screen ->patients_screen_patient_list;
gx_vertical_list_selected_index_get(list, &selected_patient_index);
myevent->gx_event_type = GX_SIGNAL(ID_MEDS_BUTTON, GX_EVENT_CLICKED);
break;
}
return med_screen_base_event_handler(window, myevent);;
}