diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index ba96e2ac..e64bd5b2 100755
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -24,6 +24,8 @@ target_sources(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/src/gx_binres_language_info_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gx_binres_language_table_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gx_binres_theme_load.c
+ ${CMAKE_CURRENT_LIST_DIR}/src/gx_binres_pixelmap_load.c
+ ${CMAKE_CURRENT_LIST_DIR}/src/gx_binres_font_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gx_brush_default.c
${CMAKE_CURRENT_LIST_DIR}/src/gx_brush_define.c
${CMAKE_CURRENT_LIST_DIR}/src/gx_button_background_draw.c
@@ -913,6 +915,8 @@ target_sources(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/src/gxe_binres_language_info_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gxe_binres_language_table_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gxe_binres_theme_load.c
+ ${CMAKE_CURRENT_LIST_DIR}/src/gxe_binres_pixelmap_load.c
+ ${CMAKE_CURRENT_LIST_DIR}/src/gxe_binres_font_load.c
${CMAKE_CURRENT_LIST_DIR}/src/gxe_brush_default.c
${CMAKE_CURRENT_LIST_DIR}/src/gxe_brush_define.c
${CMAKE_CURRENT_LIST_DIR}/src/gxe_button_create.c
diff --git a/common/inc/gx_api.h b/common/inc/gx_api.h
index 46c0d38c..34ee9e81 100644
--- a/common/inc/gx_api.h
+++ b/common/inc/gx_api.h
@@ -24,7 +24,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */
/* */
/* gx_api.h PORTABLE C */
-/* 6.2.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -68,7 +68,7 @@
/* added new widget type */
/* GX_GENERIC_SCROLL_WHEEL, */
/* added animation delete API, */
-/* added generic Dave2D */
+/* added generic Dave2D */
/* graphics accelerator */
/* support, */
/* resulting in version 6.1.7 */
@@ -104,6 +104,14 @@
/* 03-08-2023 Ting Zhu Modified comment(s), */
/* updated patch version, */
/* resulting in version 6.2.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added new APIs for loading */
+/* pixelmap and font from */
+/* standalone binary, */
+/* removed unused defines, */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
@@ -126,8 +134,8 @@ extern "C" {
#define AZURE_RTOS_GUIX
#define GUIX_MAJOR_VERSION 6
-#define GUIX_MINOR_VERSION 2
-#define GUIX_PATCH_VERSION 1
+#define GUIX_MINOR_VERSION 3
+#define GUIX_PATCH_VERSION 0
/* The following symbols are defined for backward compatibility reasons.*/
#define __PRODUCT_GUIX__
@@ -363,7 +371,9 @@ typedef struct GX_STRING_STRUCT
#define GX_FALSE 0
#define GX_NULL 0
#define GX_ID_NONE 0
-#define GX_MAGIC_NUMBER 0x4758U
+#define GX_MAGIC_NUMBER 0x4758U /* GX */
+#define GX_RESOURCE_TYPE_BINRES_NORMAL 0x4758U /* GX */
+#define GX_RESOURCE_TYPE_BINRES_STANDALONE 0x4753U /* GS */
/* API return values. */
@@ -970,6 +980,7 @@ typedef struct GX_STRING_STRUCT
#define GX_CANVAS_VISIBLE 0x04 /* Canvas is visible */
#define GX_CANVAS_MODIFIED 0x08
#define GX_CANVAS_COMPOSITE 0x20 /* Canvas is a buffer for creating composite*/
+#define GX_CANVAS_PARTIAL_FRAME_BUFFER 0x40
/* Define common combinations. */
@@ -1519,6 +1530,10 @@ typedef struct GX_DRAW_CONTEXT_STRUCT
GX_RECTANGLE gx_draw_context_dirty;
GX_RECTANGLE *gx_draw_context_clip;
GX_VALUE gx_draw_context_pitch;
+#if defined GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ GX_VALUE gx_draw_context_offset_x;
+ GX_VALUE gx_draw_context_offset_y;
+#endif
} GX_DRAW_CONTEXT;
/* Define fill map info type. */
@@ -1808,6 +1823,12 @@ typedef struct GX_CANVAS_STRUCT
/* Define the canvas memory pointer. */
GX_COLOR *gx_canvas_memory;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ GX_VALUE gx_canvas_memory_width;
+ GX_VALUE gx_canvas_memory_height;
+ GX_VALUE gx_canvas_memory_offset_x;
+ GX_VALUE gx_canvas_memory_offset_y;
+#endif
/* padded canvas memory buffer, only needed for Win32 */
#ifdef GX_TARGET_WIN32
@@ -1835,7 +1856,6 @@ typedef struct GX_CANVAS_STRUCT
GX_UBYTE gx_canvas_alpha;
GX_UBYTE gx_canvas_draw_nesting;
GX_BYTE gx_canvas_hardware_layer;
-
} GX_CANVAS;
/* Define Theme type */
@@ -1877,7 +1897,6 @@ typedef struct GX_PEN_CONFIGURATION_STRUCT
UINT gx_pen_configuration_max_pen_speed_ticks;
} GX_PEN_CONFIGURATION;
-
#define GX_RESOURCE_HEADER_SIZE 20
#define GX_THEME_HEADER_SIZE 114
#define GX_COLOR_HEADER_SIZE 8
@@ -3002,6 +3021,8 @@ typedef struct GX_FIXED_POINT_STRUCT
#endif
#define gx_binres_language_table_load_ext _gx_binres_language_table_load_ext
#define gx_binres_theme_load _gx_binres_theme_load
+#define gx_binres_pixelmap_load _gx_binres_pixelmap_load
+#define gx_binres_font_load _gx_binres_font_load
#define gx_brush_default _gx_brush_default
#define gx_brush_define _gx_brush_define
@@ -3488,8 +3509,6 @@ typedef struct GX_FIXED_POINT_STRUCT
#define gx_text_scroll_wheel_draw _gx_text_scroll_wheel_draw
#define gx_text_scroll_wheel_event_process _gx_text_scroll_wheel_event_process
-#define gx_transition_window_create(a, b, c, d, e, f) _gx_transition_window_create(a, b, (GX_WIDGET *)c, d, e, f)
-
#define gx_tree_view_create(a, b, c, d, e, f) _gx_tree_view_create((GX_TREE_VIEW *)a, b, (GX_WIDGET *)c, d, e, f)
#define gx_tree_view_draw _gx_tree_view_draw
#define gx_tree_view_event_process _gx_tree_view_event_process
@@ -3662,6 +3681,8 @@ UINT _gx_binres_language_table_load(GX_UBYTE *root_address, GX_UBYTE ****returne
#endif
UINT _gx_binres_language_table_load_ext(GX_UBYTE *root_address, GX_STRING ***returned_language_table);
UINT _gx_binres_theme_load(GX_UBYTE *root_address, INT theme_id, GX_THEME **returned_theme);
+UINT _gx_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap);
+UINT _gx_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size);
UINT _gx_brush_default(GX_BRUSH *brush);
UINT _gx_brush_define(GX_BRUSH *brush, GX_COLOR line_color, GX_COLOR fill_color, UINT style);
@@ -4484,6 +4505,8 @@ UINT _gx_window_wallpaper_set(GX_WINDOW *window, GX_RESOURCE_ID wallpaper_id, GX
#endif
#define gx_binres_language_table_load_ext _gxe_binres_language_table_load_ext
#define gx_binres_theme_load _gxe_binres_theme_load
+#define gx_binres_pixelmap_load _gxe_binres_pixelmap_load
+#define gx_binres_font_load _gxe_binres_font_load
#define gx_brush_default _gxe_brush_default
#define gx_brush_define _gxe_brush_define
@@ -5139,6 +5162,8 @@ UINT _gxe_binres_language_table_load(GX_UBYTE *root_address, GX_UBYTE ****return
#endif
UINT _gxe_binres_language_table_load_ext(GX_UBYTE *root_address, GX_STRING ***returned_language_table);
UINT _gxe_binres_theme_load(GX_UBYTE *root_address, INT theme_id, GX_THEME **returned_theme);
+UINT _gxe_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap);
+UINT _gxe_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size);
UINT _gxe_brush_default(GX_BRUSH *brush);
UINT _gxe_brush_define(GX_BRUSH *brush, GX_COLOR line_color, GX_COLOR fill_color, UINT style);
diff --git a/common/inc/gx_binres_loader.h b/common/inc/gx_binres_loader.h
index b69fb5f1..ef26fafa 100644
--- a/common/inc/gx_binres_loader.h
+++ b/common/inc/gx_binres_loader.h
@@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* gx_binres_loader.h PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -46,6 +46,9 @@
/* defined macros to read */
/* integer value, */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* declared new prototypes, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
@@ -84,6 +87,13 @@ UINT _gx_binres_resource_header_load(GX_BINRES_DATA_INFO *info, GX_RESOURCE_HEAD
UINT _gx_binres_string_header_load(GX_BINRES_DATA_INFO *info, GX_STRING_HEADER *header);
UINT _gx_binres_language_header_load(GX_BINRES_DATA_INFO *info, GX_LANGUAGE_HEADER *header);
+UINT _gx_binres_one_pixelmap_load(GX_BINRES_DATA_INFO *info, GX_PIXELMAP **returned_pixelmap, USHORT *map_id);
+UINT _gx_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap);
+UINT _gx_binres_font_buffer_size_get(GX_BINRES_DATA_INFO *info, UINT *buffer_size, GX_BOOL reset_read_offset);
+UINT _gx_binres_one_font_load(GX_BINRES_DATA_INFO *info, GX_FONT **return_font);
+UINT _gx_binres_font_header_load(GX_BINRES_DATA_INFO *info, GX_FONT_HEADER *header);
+UINT _gx_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size);
+UINT _gx_binres_standalone_resource_seek(GX_BINRES_DATA_INFO *info, UINT res_index);
/* Define error checking shells for API services. These are only referenced by the
application. */
@@ -95,6 +105,8 @@ UINT _gxe_binres_language_table_load(GX_UBYTE *root_address, GX_UBYTE ****return
#endif
UINT _gxe_binres_language_table_load_ext(GX_UBYTE *root_address, GX_STRING ***returned_language_table);
UINT _gxe_binres_theme_load(GX_UBYTE *root_address, INT theme_id, GX_THEME **returned_theme);
+UINT _gxe_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap);
+UINT _gxe_binres_font_load(GX_UBYTE *root_address, UINT res_index, GX_UBYTE *buffer, ULONG *buffer_size);
#endif
diff --git a/common/inc/gx_display.h b/common/inc/gx_display.h
index d47105e3..a31ea4a6 100644
--- a/common/inc/gx_display.h
+++ b/common/inc/gx_display.h
@@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* gx_display.h PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -60,9 +60,11 @@
/* added language direction */
/* table set declarations, */
/* resulting in version 6.1.10 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed unused prototypes, */
-/* resulting in version 6.x */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
@@ -542,3 +544,13 @@ VOID *_win32_canvas_memory_prepare(GX_CANVAS *canvas, GX_RECTANGLE *dirty);
}
#endif
+#if defined GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+#define GX_CALCULATE_PUTROW(putrow, xpos, ypos, context)\
+ putrow += (ypos - context->gx_draw_context_offset_y) * context->gx_draw_context_pitch;\
+ putrow += (xpos - context->gx_draw_context_offset_x)
+#else
+#define GX_CALCULATE_PUTROW(putrow, xpos, ypos, context)\
+ putrow += ypos * context->gx_draw_context_pitch;\
+ putrow += xpos
+#endif
+
diff --git a/common/inc/gx_image_reader.h b/common/inc/gx_image_reader.h
index 5f366763..1c7669cc 100644
--- a/common/inc/gx_image_reader.h
+++ b/common/inc/gx_image_reader.h
@@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* gx_image_reader.h PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -52,9 +52,11 @@
/* added definitions for fixed */
/* size table dimensions, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), added */
+/* 10-31-2023 Ting Zhu Modified comment(s), added */
/* support for ARM Helium, */
-/* resulting in version 6.x */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
@@ -133,6 +135,10 @@ typedef struct GX_JPEG_INFO_STRUCT
VOID (*gx_jpeg_pixel_write)(struct GX_JPEG_INFO_STRUCT *jpeg_info, GX_UBYTE red, GX_UBYTE green, GX_UBYTE blue);
#endif
GX_UBYTE *gx_jpeg_output_buffer;
+#if defined(GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER)
+ GX_VALUE gx_jpeg_output_buffer_offset_x;
+ GX_VALUE gx_jpeg_output_buffer_offset_y;
+#endif
USHORT gx_jpeg_output_width;
USHORT gx_jpeg_output_height;
INT gx_jpeg_output_stride;
diff --git a/common/inc/gx_user_sample.h b/common/inc/gx_user_sample.h
index 77ed1c6c..f8253d91 100644
--- a/common/inc/gx_user_sample.h
+++ b/common/inc/gx_user_sample.h
@@ -24,7 +24,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */
/* */
/* gx_user.h PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -45,10 +45,11 @@
/* 01-31-2022 Kenneth Maxwell Modified comment(s), */
/* fixed typo, */
/* resulting in version 6.1.10 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
-/* added GX_ENABLE_ARM_HELIUM */
-/* definition, */
-/* resulting in version 6.x */
+/* 10-31-2023 Ting Zhu Modified comment(s), added */
+/* GX_ENABLE_ARM_HELIUM and */
+/* partial canvas frame buffer */
+/* support configurations, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
@@ -76,5 +77,18 @@
/* This can be defined to enable the use of ARM Helium intrinsics for
JPEG decoding. */
/* #define GX_ENABLE_ARM_HELIUM */
+
+/* This can be defined to enable the partial canvas frame buffer feature. */
+/* #define GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER */
+
+/* The two following definitions can be used to specify the canvas refresh directions for the partial canvas frame buffer feature.
+ By default, the canvas refreshes its dirty areas one by one.
+ If the application requires refreshing the canvas in a specific direction to mitigate tearing effects, one of the following two definitions can be used.
+ In this scenario, the total dirty area that covers all the dirty areas is calculated, and then the canvas is refreshed in the direction
+ defined by one of the following two definitions. */
+
+/* #define GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL */
+/* #define GX_CANVAS_REFRESH_DIRECTION_VERTICAL */
+
#endif
diff --git a/common/src/gx_accordion_menu_event_process.c b/common/src/gx_accordion_menu_event_process.c
index 5a1a6060..8545ecd1 100644
--- a/common/src/gx_accordion_menu_event_process.c
+++ b/common/src/gx_accordion_menu_event_process.c
@@ -238,7 +238,7 @@ GX_WIDGET *child;
/* FUNCTION RELEASE */
/* */
/* _gx_accordion_menu_close_animation_update PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -276,6 +276,9 @@ GX_WIDGET *child;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added NULL pointer check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_accordion_menu_close_animation_update(GX_ACCORDION_MENU *accordion)
@@ -287,6 +290,11 @@ GX_VALUE shift;
GX_RECTANGLE size;
GX_WIDGET *child;
+ if (!deselected)
+ {
+ return GX_SUCCESS;
+ }
+
child = deselected -> gx_menu_list.gx_widget_first_child;
/* Calcualte total height of list children. */
@@ -334,7 +342,7 @@ GX_WIDGET *child;
/* FUNCTION RELEASE */
/* */
/* _gx_accordion_menu_open_animation_update PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -370,6 +378,9 @@ GX_WIDGET *child;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added NULL pointer check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_accordion_menu_open_animation_update(GX_ACCORDION_MENU *accordion)
@@ -381,6 +392,11 @@ GX_VALUE list_children_height = 0;
GX_VALUE height = 0;
GX_WIDGET *child;
+ if (!selected)
+ {
+ return GX_SUCCESS;
+ }
+
child = selected -> gx_menu_list.gx_widget_first_child;
/* Calcualte total height of list children. */
diff --git a/common/src/gx_binres_font_load.c b/common/src/gx_binres_font_load.c
new file mode 100644
index 00000000..01ad72c4
--- /dev/null
+++ b/common/src/gx_binres_font_load.c
@@ -0,0 +1,140 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) Microsoft Corporation. All rights reserved. */
+/* */
+/* This software is licensed under the Microsoft Software License */
+/* Terms for Microsoft Azure RTOS. Full text of the license can be */
+/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
+/* and in the root directory of this software. */
+/* */
+/**************************************************************************/
+
+
+/**************************************************************************/
+/**************************************************************************/
+/** */
+/** GUIX Component */
+/** */
+/** Binres Loader Management (Binres Loader) */
+/** */
+/**************************************************************************/
+
+#define GX_SOURCE_CODE
+
+
+/* Include necessary system files. */
+
+#include "gx_api.h"
+#include "gx_binres_loader.h"
+#include "gx_utility.h"
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_binres_font_load PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This service loads a font from a resource data memory. */
+/* */
+/* INPUT */
+/* */
+/* root_address Pointer to the binary data */
+/* memory */
+/* font_index Resource index of the font */
+/* to be loaded */
+/* buffer Pointer to the buffer to */
+/* store the loaded font */
+/* buffer_size Size of the buffer. It will */
+/* be overwritten with the */
+/* required buffer size if the */
+/* input buffer size is */
+/* insufficient */
+/* */
+/* OUTPUT */
+/* */
+/* Status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_standalone_resource_seek Locate the resource data */
+/* _gx_binres_font_buffer_size_get Get the required font buffer */
+/* size */
+/* _gx_binres_one_font_load Load one font */
+/* */
+/* CALLED BY */
+/* */
+/* Application Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+UINT _gx_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size)
+{
+UINT status = GX_SUCCESS;
+GX_BINRES_DATA_INFO info;
+UINT required_size;
+
+ /* file format
+ +--------+
+ | | <-- represents one bytes
+ +--------+
+
+ |+========+
+ | | <-- represents a variable number of bytes
+ |+========+
+
+ |+--------+--------+--------+--------+
+ | magic number | resource count |
+ |+--------+--------+--------+--------+
+ |+--------+--------+--------+--------+
+ | resource offset |
+ |+--------+--------+--------+--------+
+ |+--------+--------+--------+--------+
+ | ... |
+ |+--------+--------+--------+--------+
+ |+===================================+
+ | resource data |
+ |+===================================+
+ */
+
+ memset(&info, 0, sizeof(GX_BINRES_DATA_INFO));
+
+ info.gx_binres_root_address = (GX_UBYTE *)root_address;
+ info.gx_binres_buffer = (GX_UBYTE *)buffer;
+ info.gx_binres_buffer_size = *buffer_size;
+
+ status = _gx_binres_standalone_resource_seek(&info, font_index);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ status = _gx_binres_font_buffer_size_get(&info, &required_size, GX_TRUE);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ if (required_size > *buffer_size)
+ {
+ *buffer_size = required_size;
+ return GX_INVALID_MEMORY_SIZE;
+ }
+
+ status = _gx_binres_one_font_load(&info, GX_NULL);
+
+ return status;
+}
+
diff --git a/common/src/gx_binres_pixelmap_load.c b/common/src/gx_binres_pixelmap_load.c
new file mode 100644
index 00000000..fab2e968
--- /dev/null
+++ b/common/src/gx_binres_pixelmap_load.c
@@ -0,0 +1,188 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) Microsoft Corporation. All rights reserved. */
+/* */
+/* This software is licensed under the Microsoft Software License */
+/* Terms for Microsoft Azure RTOS. Full text of the license can be */
+/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
+/* and in the root directory of this software. */
+/* */
+/**************************************************************************/
+
+
+/**************************************************************************/
+/**************************************************************************/
+/** */
+/** GUIX Component */
+/** */
+/** Binres Loader Management (Binres Loader) */
+/** */
+/**************************************************************************/
+
+#define GX_SOURCE_CODE
+
+
+/* Include necessary system files. */
+
+#include "gx_api.h"
+#include "gx_binres_loader.h"
+#include "gx_utility.h"
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_binres_standalone_resource_seek PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function locates the resource data in the binary data memory. */
+/* */
+/* INPUT */
+/* */
+/* info Binary resource control block */
+/* res_index The index of the resource to */
+/* be located */
+/* */
+/* OUTPUT */
+/* */
+/* Status Completion status */
+/* */
+/* CALLS */
+/* */
+/* None */
+/* */
+/* CALLED BY */
+/* */
+/* GUIX Internal Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+UINT _gx_binres_standalone_resource_seek(GX_BINRES_DATA_INFO *info, UINT res_index)
+{
+USHORT type;
+ULONG count;
+
+ GX_BINRES_READ_USHORT(type, info -> gx_binres_root_address + info -> gx_binres_read_offset);
+ info -> gx_binres_read_offset += sizeof(USHORT);
+
+ if (type != GX_RESOURCE_TYPE_BINRES_STANDALONE)
+ {
+ return GX_INVALID_FORMAT;
+ }
+
+ /* Skip 2 bytes version. */
+ info -> gx_binres_read_offset += sizeof(USHORT);
+
+ GX_BINRES_READ_ULONG(count, info -> gx_binres_root_address + info -> gx_binres_read_offset);
+ info -> gx_binres_read_offset += sizeof(ULONG);
+
+ if ((USHORT)res_index >= count)
+ {
+ return GX_NOT_FOUND;
+ }
+
+ if (count > 1)
+ {
+ GX_BINRES_READ_ULONG(info -> gx_binres_read_offset, info -> gx_binres_root_address + info -> gx_binres_read_offset + sizeof(ULONG) * res_index);
+ }
+
+ return GX_SUCCESS;
+}
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_binres_pixelmap_load PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This service loads a pixelmap from a resource data memory. */
+/* */
+/* INPUT */
+/* */
+/* root_address Pointer to the binary data */
+/* memory */
+/* map_index Resource index of the pixelmap*/
+/* to be loaded */
+/* pixelmap Pointer to the returned */
+/* pixelmap */
+/* */
+/* OUTPUT */
+/* */
+/* Status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_standalone_resource_seek Locate the resource data */
+/* _gx_binres_one_pixelmap_load Load one pixelmap */
+/* */
+/* CALLED BY */
+/* */
+/* Application Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+UINT _gx_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap)
+{
+UINT status = GX_SUCCESS;
+GX_BINRES_DATA_INFO info;
+
+ /* file format
+ +--------+
+ | | <-- represents one bytes
+ +--------+
+
+ |+========+
+ | | <-- represents a variable number of bytes
+ |+========+
+
+ |+--------+--------+--------+--------+
+ | magic number | resource count |
+ |+--------+--------+--------+--------+
+ |+--------+--------+--------+--------+
+ | resource offset |
+ |+--------+--------+--------+--------+
+ |+--------+--------+--------+--------+
+ | ... |
+ |+--------+--------+--------+--------+
+ |+===================================+
+ | resource data |
+ |+===================================+
+ */
+
+ memset(&info, 0, sizeof(GX_BINRES_DATA_INFO));
+
+ info.gx_binres_root_address = (GX_UBYTE *)root_address;
+ info.gx_binres_buffer = (GX_UBYTE *)pixelmap;
+ info.gx_binres_buffer_size = sizeof(GX_PIXELMAP);
+
+ status = _gx_binres_standalone_resource_seek(&info, map_index);
+
+ if (status == GX_SUCCESS)
+ {
+ status = _gx_binres_one_pixelmap_load(&info, GX_NULL, GX_NULL);
+ }
+
+ return status;
+}
+
diff --git a/common/src/gx_binres_theme_load.c b/common/src/gx_binres_theme_load.c
index ecd49e00..6e5bbe20 100644
--- a/common/src/gx_binres_theme_load.c
+++ b/common/src/gx_binres_theme_load.c
@@ -312,7 +312,7 @@ static UINT _gx_binres_palette_header_load(GX_BINRES_DATA_INFO *info, GX_PALETTE
/* FUNCTION RELEASE */
/* */
/* _gx_binres_font_header_load PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -346,14 +346,22 @@ static UINT _gx_binres_palette_header_load(GX_BINRES_DATA_INFO *info, GX_PALETTE
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* removed use of memcpy, */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* made the function public, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
-static UINT _gx_binres_font_header_load(GX_BINRES_DATA_INFO *info, GX_FONT_HEADER *header)
+UINT _gx_binres_font_header_load(GX_BINRES_DATA_INFO *info, GX_FONT_HEADER *header)
{
GX_BINRES_READ_USHORT(header -> gx_font_header_magic_number, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
+ if(header -> gx_font_header_magic_number != GX_MAGIC_NUMBER)
+ {
+ return GX_INVALID_FORMAT;
+ }
+
GX_BINRES_READ_USHORT(header -> gx_font_header_index, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
@@ -425,6 +433,11 @@ ULONG read_data = 0;
GX_BINRES_READ_USHORT(header -> gx_page_header_magic_number, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
+ if(header -> gx_page_header_magic_number != GX_MAGIC_NUMBER)
+ {
+ return GX_INVALID_FORMAT;
+ }
+
GX_BINRES_READ_USHORT(header -> gx_page_header_index, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
@@ -515,7 +528,7 @@ static UINT _gx_binres_glyph_header_load(GX_BINRES_DATA_INFO *info, GX_GLYPH_HEA
GX_BINRES_READ_ULONG(header -> gx_glyph_header_map_offset, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(ULONG);
- GX_BINRES_READ_USHORT(header -> gx_glyph_header_index, info -> gx_binres_root_address + info -> gx_binres_read_offset);
+ GX_BINRES_READ_USHORT(header -> gx_glyph_header_index, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
GX_BINRES_READ_SHORT(header -> gx_glyph_header_ascent, info -> gx_binres_root_address + info -> gx_binres_read_offset);
@@ -604,7 +617,7 @@ static UINT _gx_binres_kerning_glyph_header_load(GX_BINRES_DATA_INFO *info, GX_K
/* FUNCTION RELEASE */
/* */
/* _gx_binres_pixelmap_header_load PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -638,6 +651,9 @@ static UINT _gx_binres_kerning_glyph_header_load(GX_BINRES_DATA_INFO *info, GX_K
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* removed use of memcpy, */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added magic number check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
@@ -646,6 +662,11 @@ static UINT _gx_binres_pixelmap_header_load(GX_BINRES_DATA_INFO *info, GX_PIXELM
GX_BINRES_READ_USHORT(header -> gx_pixelmap_header_magic_number, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
+ if (header -> gx_pixelmap_header_magic_number != GX_MAGIC_NUMBER)
+ {
+ return GX_INVALID_FORMAT;
+ }
+
GX_BINRES_READ_USHORT(header -> gx_pixelmap_header_index, info -> gx_binres_root_address + info -> gx_binres_read_offset);
info -> gx_binres_read_offset += sizeof(USHORT);
@@ -686,12 +707,156 @@ static UINT _gx_binres_pixelmap_header_load(GX_BINRES_DATA_INFO *info, GX_PIXELM
}
#endif
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_binres_font_buffer_size_get PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function calculates the required buffer size needed for */
+/* loading the font from the current position. */
+/* */
+/* INPUT */
+/* */
+/* info Binary resource control block */
+/* buffer_size The required buffer size */
+/* */
+/* OUTPUT */
+/* */
+/* Status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_font_header_load Read font header */
+/* _gx_binres_page_header_load Read font page header */
+/* */
+/* CALLED BY */
+/* */
+/* GUIX Internal Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+#ifdef GX_BINARY_RESOURCE_SUPPORT
+UINT _gx_binres_font_buffer_size_get(GX_BINRES_DATA_INFO *info, UINT *buffer_size, GX_BOOL reset_read_offset)
+{
+UINT status;
+GX_FONT_HEADER font_header;
+GX_PAGE_HEADER page_header;
+USHORT page_index;
+UINT glyph_count;
+UINT read_offset = 0;
+UINT temp;
+UINT size = 0;
+UINT old_offset;
+
+ if(reset_read_offset)
+ {
+ old_offset = info -> gx_binres_read_offset;
+ }
+
+ status = _gx_binres_font_header_load(info, &font_header);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ if (font_header.gx_font_header_data_offset)
+ {
+ /* The font data is not follow the header directly,
+ the data offset gives the position where the font
+ data located. */
+
+ /* Record current data offset. */
+ read_offset = info -> gx_binres_read_offset;
+
+ /* Temporarily reset data offset of access font data. */
+ info -> gx_binres_read_offset = font_header.gx_font_header_data_offset;
+
+ /* Load font header. */
+ _gx_binres_font_header_load(info, &font_header);
+ }
+
+ for (page_index = 0; page_index < font_header.gx_font_header_page_count; page_index++)
+ {
+ /* Load page header. */
+ status = _gx_binres_page_header_load(info, &page_header);
+
+ if(status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ info -> gx_binres_read_offset += page_header.gx_page_header_data_size;
+
+#if defined(GX_EXTENDED_UNICODE_SUPPORT)
+ if (page_header.gx_page_header_last_glyph > GX_MAX_GLYPH_CODE)
+ {
+ return GX_INVALID_FONT;
+ }
+#endif
+
+ /* Max glyph code is 0x10f000, overflow cannot occur. */
+ glyph_count = (UINT)(page_header.gx_page_header_last_glyph - page_header.gx_page_header_first_glyph + 1);
+
+ /* Calculate size for loading font page. */
+ temp = sizeof(GX_FONT);
+
+ /* Calculate size for loading glyphs. */
+ if (page_header.gx_page_header_format & GX_FONT_FORMAT_COMPRESSED)
+ {
+ temp += sizeof(GX_COMPRESSED_GLYPH) * glyph_count;
+ }
+#if defined(GX_FONT_KERNING_SUPPORT)
+ else if (page_header.gx_page_header_format & GX_FONT_FORMAT_KERNING)
+ {
+ temp += sizeof(GX_KERNING_GLYPH) * glyph_count;
+ }
+#endif
+ else
+ {
+ temp += sizeof(GX_GLYPH) * glyph_count;
+ }
+
+ GX_UTILITY_MATH_UINT_ADD(size, temp, size);
+ }
+
+ if (read_offset)
+ {
+ /* Restore data offset. */
+ info -> gx_binres_read_offset = read_offset;
+ read_offset = 0;
+ }
+
+ *buffer_size = size;
+
+ if (reset_read_offset)
+ {
+ /* Reset offset. */
+ info -> gx_binres_read_offset = old_offset;
+ }
+
+ return GX_SUCCESS;
+}
+#endif
+
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _gx_binres_theme_table_buffer_allocate PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -715,8 +880,7 @@ static UINT _gx_binres_pixelmap_header_load(GX_BINRES_DATA_INFO *info, GX_PIXELM
/* allocation function */
/* _gx_binres_resource_header_load Read resource header */
/* _gx_binres_theme_header_load Read theme header */
-/* _gx_binres_font_header_load Read font header */
-/* _gx_binres_page_header_load Read font page header */
+/* _gx_binres_font_buffer_size_get Get required font buffer size */
/* */
/* CALLED BY */
/* */
@@ -729,20 +893,19 @@ static UINT _gx_binres_pixelmap_header_load(GX_BINRES_DATA_INFO *info, GX_PIXELM
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* improved logic, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
static UINT _gx_binres_theme_buffer_allocate(GX_BINRES_DATA_INFO *info, INT theme_id)
{
+UINT status = GX_SUCCESS;
GX_RESOURCE_HEADER res_header;
GX_THEME_HEADER theme_header;
-GX_FONT_HEADER font_header;
-GX_PAGE_HEADER page_header;
USHORT theme_index;
USHORT font_index;
-USHORT page_index;
-UINT glyph_count;
-UINT read_offset = 0;
UINT temp;
/* Read resource header. */
@@ -790,77 +953,14 @@ UINT temp;
for (font_index = 0; font_index < theme_header.gx_theme_header_font_count; font_index++)
{
- _gx_binres_font_header_load(info, &font_header);
-
- if (font_header.gx_font_header_magic_number != GX_MAGIC_NUMBER)
- {
- return GX_INVALID_FORMAT;
- }
-
- if (font_header.gx_font_header_data_offset)
- {
- /* The font data is not follow the header directly,
- the data offset gives the position where the font
- data located. */
-
- /* Record current data offset. */
- read_offset = info -> gx_binres_read_offset;
+ status = _gx_binres_font_buffer_size_get(info, &temp, GX_FALSE);
- /* Temporarily reset data offset of access font data. */
- info -> gx_binres_read_offset = font_header.gx_font_header_data_offset;
-
- /* Load font header. */
- _gx_binres_font_header_load(info, &font_header);
- }
-
- for (page_index = 0; page_index < font_header.gx_font_header_page_count; page_index++)
+ if (status != GX_SUCCESS)
{
- /* Load page header. */
- _gx_binres_page_header_load(info, &page_header);
- info -> gx_binres_read_offset += page_header.gx_page_header_data_size;
-
- if (page_header.gx_page_header_magic_number != GX_MAGIC_NUMBER)
- {
- return GX_INVALID_FORMAT;
- }
-#if defined(GX_EXTENDED_UNICODE_SUPPORT)
- if (page_header.gx_page_header_last_glyph > GX_MAX_GLYPH_CODE)
- {
- return GX_INVALID_FONT;
- }
-#endif
-
- /* Max glyph code is 0x10f000, overflow cannot occur. */
- glyph_count = (UINT)(page_header.gx_page_header_last_glyph - page_header.gx_page_header_first_glyph + 1);
-
- /* Calculate size for loading font page. */
- temp = sizeof(GX_FONT);
-
- /* Calculate size for loading glyphs. */
- if (page_header.gx_page_header_format & GX_FONT_FORMAT_COMPRESSED)
- {
- temp += sizeof(GX_COMPRESSED_GLYPH) * glyph_count;
- }
-#if defined(GX_FONT_KERNING_SUPPORT)
- else if (page_header.gx_page_header_format & GX_FONT_FORMAT_KERNING)
- {
- temp += sizeof(GX_KERNING_GLYPH) * glyph_count;
- }
-#endif
- else
- {
- temp += sizeof(GX_GLYPH) * glyph_count;
- }
-
- GX_UTILITY_MATH_UINT_ADD(info -> gx_binres_buffer_size, temp, info -> gx_binres_buffer_size);
+ return status;
}
- if (read_offset)
- {
- /* Restore data offset. */
- info -> gx_binres_read_offset = read_offset;
- read_offset = 0;
- }
+ GX_UTILITY_MATH_UINT_ADD(info -> gx_binres_buffer_size, temp, info -> gx_binres_buffer_size);
}
}
@@ -894,7 +994,10 @@ UINT temp;
memset(info -> gx_binres_buffer, 0, info -> gx_binres_buffer_size);
info -> gx_binres_buffer_index = 0;
- return GX_SUCCESS;
+ /* Reset read offset. */
+ info -> gx_binres_read_offset = 0;
+
+ return status;
}
#endif
@@ -1182,21 +1285,19 @@ USHORT index = 0;
/* */
/* FUNCTION RELEASE */
/* */
-/* _gx_binres_font_load PORTABLE C */
-/* 6.1 */
+/* _gx_binres_one_font_load PORTABLE C */
+/* 6.3.0 */
/* AUTHOR */
/* */
-/* Kenneth Maxwell, Microsoft Corporation */
+/* Ting Zhu, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
-/* This service loads a font table from a binary data buffer. */
+/* This service loads a font from a binary data buffer. */
/* */
/* INPUT */
/* */
/* info Binary resource control block */
-/* page_count The number of pages that a */
-/* font contains. */
/* return_font Returned font */
/* */
/* OUTPUT */
@@ -1205,6 +1306,7 @@ USHORT index = 0;
/* */
/* CALLS */
/* */
+/* _gx_binres_font_header_load Read font header */
/* _gx_binres_page_header_load Read font page header */
/* _gx_binres_compressed_glyphs_read Read compressed glyph data */
/* _gx_binres_glyphs_read Read glyph data */
@@ -1217,77 +1319,136 @@ USHORT index = 0;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
-/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
-/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
-static UINT _gx_binres_font_load(GX_BINRES_DATA_INFO *info, USHORT page_count, GX_FONT **return_font)
+UINT _gx_binres_one_font_load(GX_BINRES_DATA_INFO *info, GX_FONT **return_font)
{
UINT status = GX_SUCCESS;
+GX_FONT_HEADER font_header;
GX_PAGE_HEADER header;
GX_FONT *font;
GX_FONT *head_page = GX_NULL;
GX_FONT *pre_page = GX_NULL;
USHORT index;
USHORT glyph_count;
+UINT read_offset = 0;
- for (index = 0; index < page_count; index++)
- {
- /* Read page header. */
- _gx_binres_page_header_load(info, &header);
+ /* Read font header. */
+ status = _gx_binres_font_header_load(info, &font_header);
- font = (GX_FONT *)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
- info -> gx_binres_buffer_index += sizeof(GX_FONT);
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
- font -> gx_font_baseline = header.gx_page_header_baseline;
- font -> gx_font_first_glyph = header.gx_page_header_first_glyph;
- font -> gx_font_format = header.gx_page_header_format;
- font -> gx_font_last_glyph = header.gx_page_header_last_glyph;
- font -> gx_font_line_height = header.gx_page_header_line_height;
- font -> gx_font_postspace = header.gx_page_header_postspace;
- font -> gx_font_prespace = header.gx_page_header_prespace;
+ if (font_header.gx_font_header_deault)
+ {
+ switch (font_header.gx_font_header_bits)
+ {
+ case 1:
+ head_page = (GX_FONT *)&_gx_system_font_mono;
+ break;
- /* Read glyphs data. */
- glyph_count = (USHORT)(font -> gx_font_last_glyph - font -> gx_font_first_glyph + 1);
+ case 4:
+ head_page = (GX_FONT *)&_gx_system_font_4bpp;
+ break;
- if (font -> gx_font_format & GX_FONT_FORMAT_COMPRESSED)
- {
- status = _gx_binres_compressed_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_compressed_glyphs);
- }
-#if defined(GX_FONT_KERNING_SUPPORT)
- else if (font -> gx_font_format & GX_FONT_FORMAT_KERNING)
- {
- status = _gx_binres_kerning_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_kerning_glyphs);
+ case 8:
+ head_page = (GX_FONT *)&_gx_system_font_8bpp;
+ break;
}
-#endif /* GX_FONT_KERNING_SUPPORT */
- else
+ }
+ else
+ {
+ if (font_header.gx_font_header_data_offset)
{
- status = _gx_binres_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_normal_glyphs);
- }
+ /* The font data is not follow the header directly,
+ the data offset gives the position where the font
+ data located. */
- if (status != GX_SUCCESS)
- {
- break;
- }
+ /* Record current data offset. */
+ read_offset = info -> gx_binres_read_offset;
- font -> gx_font_next_page = NULL;
+ /* Temporarily reset data offset to access font data. */
+ info -> gx_binres_read_offset = font_header.gx_font_header_data_offset;
- if (!head_page)
- {
- head_page = font;
+ /* Read font header. */
+ _gx_binres_font_header_load(info, &font_header);
}
- if (pre_page)
+ for (index = 0; index < font_header.gx_font_header_page_count; index++)
{
- pre_page -> gx_font_next_page = font;
+ /* Read page header. */
+ status = _gx_binres_page_header_load(info, &header);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ font = (GX_FONT *)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
+ info -> gx_binres_buffer_index += sizeof(GX_FONT);
+
+ font -> gx_font_baseline = header.gx_page_header_baseline;
+ font -> gx_font_first_glyph = header.gx_page_header_first_glyph;
+ font -> gx_font_format = header.gx_page_header_format;
+ font -> gx_font_last_glyph = header.gx_page_header_last_glyph;
+ font -> gx_font_line_height = header.gx_page_header_line_height;
+ font -> gx_font_postspace = header.gx_page_header_postspace;
+ font -> gx_font_prespace = header.gx_page_header_prespace;
+
+ /* Read glyphs data. */
+ glyph_count = (USHORT)(font -> gx_font_last_glyph - font -> gx_font_first_glyph + 1);
+
+ if (font -> gx_font_format & GX_FONT_FORMAT_COMPRESSED)
+ {
+ status = _gx_binres_compressed_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_compressed_glyphs);
+ }
+#if defined(GX_FONT_KERNING_SUPPORT)
+ else if (font -> gx_font_format & GX_FONT_FORMAT_KERNING)
+ {
+ status = _gx_binres_kerning_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_kerning_glyphs);
+ }
+#endif /* GX_FONT_KERNING_SUPPORT */
+ else
+ {
+ status = _gx_binres_glyphs_address_get(info, glyph_count, &font -> gx_font_glyphs.gx_font_normal_glyphs);
+ }
+
+ if (status != GX_SUCCESS)
+ {
+ break;
+ }
+
+ font -> gx_font_next_page = NULL;
+
+ if (!head_page)
+ {
+ head_page = font;
+ }
+
+ if (pre_page)
+ {
+ pre_page -> gx_font_next_page = font;
+ }
+
+ pre_page = font;
}
+ }
- pre_page = font;
+ if (read_offset)
+ {
+ /* Restore data offset. */
+ info -> gx_binres_read_offset = read_offset;
+ read_offset = 0;
}
- *return_font = head_page;
+ if (return_font)
+ {
+ *return_font = head_page;
+ }
return status;
}
@@ -1435,7 +1596,7 @@ GX_COLOR *palette_table = GX_NULL;
/* FUNCTION RELEASE */
/* */
/* _gx_binres_font_table_load PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -1456,8 +1617,7 @@ GX_COLOR *palette_table = GX_NULL;
/* */
/* CALLS */
/* */
-/* _gx_binres_font_header_load Read font header */
-/* _gx_binres_font_read Read font data */
+/* _gx_binres_one_font_load Load one font */
/* */
/* CALLED BY */
/* */
@@ -1470,78 +1630,28 @@ GX_COLOR *palette_table = GX_NULL;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* improved logic, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
static UINT _gx_binres_font_table_load(GX_BINRES_DATA_INFO *info, USHORT table_size, GX_FONT ***returned_font_table)
{
-UINT status = GX_SUCCESS;
-GX_FONT_HEADER header;
-GX_FONT **font_table = GX_NULL;
-USHORT index;
-UINT read_offset = 0;
-
- if (!table_size)
- {
- return status;
- }
+UINT status = GX_SUCCESS;
+GX_FONT **font_table = GX_NULL;
+USHORT index;
font_table = (GX_FONT **)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
info -> gx_binres_buffer_index += sizeof(GX_FONT *) * table_size;
for (index = 0; index < table_size; index++)
{
- /* Read font header. */
- _gx_binres_font_header_load(info, &header);
-
- if (header.gx_font_header_deault)
- {
- switch (header.gx_font_header_bits)
- {
- case 1:
- font_table[index] = (GX_FONT *)&_gx_system_font_mono;
- break;
+ status = _gx_binres_one_font_load(info, &font_table[index]);
- case 4:
- font_table[index] = (GX_FONT *)&_gx_system_font_4bpp;
- break;
-
- case 8:
- font_table[index] = (GX_FONT *)&_gx_system_font_8bpp;
- break;
- }
- }
- else
+ if (status != GX_SUCCESS)
{
- if (header.gx_font_header_data_offset)
- {
- /* The font data is not follow the header directly,
- the data offset gives the position where the font
- data located. */
-
- /* Record current data offset. */
- read_offset = info -> gx_binres_read_offset;
-
- /* Temporarily reset data offset to access font data. */
- info -> gx_binres_read_offset = header.gx_font_header_data_offset;
-
- /* Read font header. */
- _gx_binres_font_header_load(info, &header);
- }
-
- status = _gx_binres_font_load(info, header.gx_font_header_page_count, &font_table[index]);
-
- if (status != GX_SUCCESS)
- {
- break;
- }
-
- if (read_offset)
- {
- /* Restore data offset. */
- info -> gx_binres_read_offset = read_offset;
- read_offset = 0;
- }
+ return status;
}
}
@@ -1555,21 +1665,21 @@ UINT read_offset = 0;
/* */
/* FUNCTION RELEASE */
/* */
-/* _gx_binres_pixelmap_table_load PORTABLE C */
-/* 6.1 */
+/* _gx_binres_one_pixelmap_load PORTABLE C */
+/* 6.3.0 */
/* AUTHOR */
/* */
-/* Kenneth Maxwell, Microsoft Corporation */
+/* Ting Zhu, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
-/* This function loads a pixelmap table from resource data memory. */
+/* This function loads one pixelmap from resource data memory. */
/* */
/* INPUT */
/* */
/* info Binary resource control block */
-/* table_size Pixelmap table size */
-/* returned_pixelmp_table Returned pixelmap table */
+/* returned_pixelmap Returned pixelmap table */
+/* map_id Loaded pixelmap ID */
/* */
/* OUTPUT */
/* */
@@ -1587,119 +1697,165 @@ UINT read_offset = 0;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
-/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
-/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
#ifdef GX_BINARY_RESOURCE_SUPPORT
-static UINT _gx_binres_pixelmap_table_load(GX_BINRES_DATA_INFO *info, USHORT table_size, GX_PIXELMAP ***returned_pixelmap_table)
+UINT _gx_binres_one_pixelmap_load(GX_BINRES_DATA_INFO *info, GX_PIXELMAP **returned_pixelmap, USHORT *map_id)
{
UINT status = GX_SUCCESS;
GX_PIXELMAP_HEADER header;
-GX_PIXELMAP **pixelmap_table = GX_NULL;
-USHORT index;
ULONG size;
-GX_BOOL keep_looping;
UINT read_offset = 0;
- if (table_size <= 1)
+GX_PIXELMAP *pixelmap;
+
+ /* Read pixelmap header. */
+ status = _gx_binres_pixelmap_header_load(info, &header);
+
+ if (status)
{
- return GX_SUCCESS;
+ return status;
}
- pixelmap_table = (GX_PIXELMAP **)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
- info -> gx_binres_buffer_index += sizeof(GX_PIXELMAP *) * table_size;
-
- for (index = 1; index < table_size; index++)
+ if (header.gx_pixelmap_header_data_offset)
{
- /* Read pixelmap header. */
+ /* The pixelmap data is not follow the header directly,
+ the data offset gives the position where the pixelmap
+ data located. */
+
+ /* Record current data offset. */
+ read_offset = info -> gx_binres_read_offset;
+
+ /* Temporarily reset data offset to access pixelmap data. */
+ info -> gx_binres_read_offset = header.gx_pixelmap_header_data_offset;
+
+ /* Read pixelmap header. */
_gx_binres_pixelmap_header_load(info, &header);
+ }
- if (header.gx_pixelmap_header_magic_number != GX_MAGIC_NUMBER)
- {
- return GX_INVALID_FORMAT;
- }
+ /* Allocate memory for pixelmap. */
+ pixelmap = (GX_PIXELMAP *)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
+ info -> gx_binres_buffer_index += sizeof(GX_PIXELMAP);
+
+ pixelmap -> gx_pixelmap_aux_data_size = header.gx_pixelmap_header_aux_data_size;
+ pixelmap -> gx_pixelmap_data_size = header.gx_pixelmap_header_map_size;
+ pixelmap -> gx_pixelmap_flags = header.gx_pixelmap_header_flags;
+ pixelmap -> gx_pixelmap_format = header.gx_pixelmap_header_format;
+ pixelmap -> gx_pixelmap_width = (GX_VALUE)header.gx_pixelmap_header_width;
+ pixelmap -> gx_pixelmap_height = (GX_VALUE)header.gx_pixelmap_header_height;
+ pixelmap -> gx_pixelmap_transparent_color = header.gx_pixelmap_header_transparent_color;
+ pixelmap -> gx_pixelmap_version_major = header.gx_pixelmap_header_version_major;
+ pixelmap -> gx_pixelmap_version_minor = header.gx_pixelmap_header_version_minor;
+
+ /* Skip padding bytes. */
+ info -> gx_binres_read_offset = (info -> gx_binres_read_offset + 3) & (~0x03UL);
+
+ /* Read pixelmap data. */
+ size = pixelmap -> gx_pixelmap_data_size;
+ if (size)
+ {
+ pixelmap -> gx_pixelmap_data = (GX_UBYTE *)(info -> gx_binres_root_address + info -> gx_binres_read_offset);
+ info -> gx_binres_read_offset += size;
+ }
- if (header.gx_pixelmap_header_data_offset)
- {
- /* The pixelmap data is not follow the header directly,
- the data offset gives the position where the pixelmap
- data located. */
+ /* Read pixelmap aux data. */
+ size = pixelmap -> gx_pixelmap_aux_data_size;
+ if (size)
+ {
+ pixelmap -> gx_pixelmap_aux_data = (GX_UBYTE *)(info -> gx_binres_root_address + info -> gx_binres_read_offset);
+ info -> gx_binres_read_offset += size;
+ }
- /* Record current data offset. */
- read_offset = info -> gx_binres_read_offset;
+ if (read_offset)
+ {
+ /* Restore data offset. */
+ info -> gx_binres_read_offset = read_offset;
+ read_offset = 0;
+ }
- /* Temporarily reset data offset to access pixelmap data. */
- info -> gx_binres_read_offset = header.gx_pixelmap_header_data_offset;
+ if (returned_pixelmap)
+ {
+ *returned_pixelmap = pixelmap;
+ }
- /* Read pixelmap header. */
- _gx_binres_pixelmap_header_load(info, &header);
- }
+ if (map_id)
+ {
+ *map_id = header.gx_pixelmap_header_index;
+ }
- keep_looping = GX_TRUE;
+ return status;
+}
- while (keep_looping)
- {
- keep_looping = GX_FALSE;
- /* Allocate memory for pixelmap. */
- pixelmap_table[index] = (GX_PIXELMAP *)(info -> gx_binres_buffer + info -> gx_binres_buffer_index);
- info -> gx_binres_buffer_index += sizeof(GX_PIXELMAP);
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_binres_pixelmap_table_load PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Kenneth Maxwell, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function loads a pixelmap table from resource data memory. */
+/* */
+/* INPUT */
+/* */
+/* info Binary resource control block */
+/* table_size Pixelmap table size */
+/* returned_pixelmp_table Returned pixelmap table */
+/* */
+/* OUTPUT */
+/* */
+/* Status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_one_pixelmap_load Load one pixelmap */
+/* */
+/* CALLED BY */
+/* */
+/* GUIX Internal Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
+/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
+/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* improved logic, */
+/* resulting in version 6.3.0 */
+/* */
+/**************************************************************************/
+static UINT _gx_binres_pixelmap_table_load(GX_BINRES_DATA_INFO *info, USHORT table_size, GX_PIXELMAP **pixelmap_table)
+{
+UINT status = GX_SUCCESS;
+USHORT index;
+USHORT map_id;
+GX_PIXELMAP *pixelmap;
- switch (index)
- {
- case GX_PIXELMAP_RADIO_ON_ID:
- case GX_PIXELMAP_RADIO_OFF_ID:
- case GX_PIXELMAP_CHECKBOX_ON_ID:
- case GX_PIXELMAP_CHECKBOX_OFF_ID:
- if (index != header.gx_pixelmap_header_index)
- {
- pixelmap_table[index++] = GX_NULL;
- keep_looping = GX_TRUE;
- }
- }
- }
+ for (index = 1; index < table_size; index++)
+ {
+ status = _gx_binres_one_pixelmap_load(info, &pixelmap, &map_id);
- pixelmap_table[index] -> gx_pixelmap_aux_data_size = header.gx_pixelmap_header_aux_data_size;
- pixelmap_table[index] -> gx_pixelmap_data_size = header.gx_pixelmap_header_map_size;
- pixelmap_table[index] -> gx_pixelmap_flags = header.gx_pixelmap_header_flags;
- pixelmap_table[index] -> gx_pixelmap_format = header.gx_pixelmap_header_format;
- pixelmap_table[index] -> gx_pixelmap_width = (GX_VALUE)header.gx_pixelmap_header_width;
- pixelmap_table[index] -> gx_pixelmap_height = (GX_VALUE)header.gx_pixelmap_header_height;
- pixelmap_table[index] -> gx_pixelmap_transparent_color = header.gx_pixelmap_header_transparent_color;
- pixelmap_table[index] -> gx_pixelmap_version_major = header.gx_pixelmap_header_version_major;
- pixelmap_table[index] -> gx_pixelmap_version_minor = header.gx_pixelmap_header_version_minor;
-
- /* Skip padding bytes. */
- info -> gx_binres_read_offset = (info -> gx_binres_read_offset + 3) & (~0x03UL);
-
- /* Read pixelmap data. */
- size = pixelmap_table[index] -> gx_pixelmap_data_size;
- if (size)
+ while (index < map_id)
{
- pixelmap_table[index] -> gx_pixelmap_data = (GX_UBYTE *)(info -> gx_binres_root_address + info -> gx_binres_read_offset);
- info -> gx_binres_read_offset += size;
+ pixelmap_table[index++] = GX_NULL;
}
- /* Read pixelmap aux data. */
- size = pixelmap_table[index] -> gx_pixelmap_aux_data_size;
- if (size)
- {
- pixelmap_table[index] -> gx_pixelmap_aux_data = (GX_UBYTE *)(info -> gx_binres_root_address + info -> gx_binres_read_offset);
- info -> gx_binres_read_offset += size;
- }
+ pixelmap_table[index] = pixelmap;
- if (read_offset)
+ if (status)
{
- /* Restore data offset. */
- info -> gx_binres_read_offset = read_offset;
- read_offset = 0;
+ return status;
}
}
- *returned_pixelmap_table = pixelmap_table;
-
return status;
}
#endif
@@ -1776,7 +1932,6 @@ INT index;
if (status == GX_SUCCESS)
{
- info.gx_binres_read_offset = 0;
status = _gx_binres_resource_header_load(&info, &header);
}
@@ -1817,7 +1972,7 @@ INT index;
}
/* Read font table. */
- if ((status == GX_SUCCESS) && theme_header.gx_theme_header_font_data_size)
+ if ((status == GX_SUCCESS) && theme_header.gx_theme_header_font_data_size && theme_header.gx_theme_header_font_count)
{
status = _gx_binres_font_table_load(&info,
theme_header.gx_theme_header_font_count,
@@ -1825,11 +1980,16 @@ INT index;
}
/* Read pixelmap table. */
- if ((status == GX_SUCCESS) && theme_header.gx_theme_header_pixelmap_data_size)
+ if ((status == GX_SUCCESS) && theme_header.gx_theme_header_pixelmap_data_size && theme_header.gx_theme_header_pixelmap_count)
{
+ /* Allocate pixelmap table size. */
+ theme -> theme_pixelmap_table = (GX_PIXELMAP **)(info.gx_binres_buffer + info.gx_binres_buffer_index);
+ info.gx_binres_buffer_index += sizeof(GX_PIXELMAP *) * (UINT)(theme_header.gx_theme_header_pixelmap_count + 1);
+
+ /* Load pixelmap table. */
status = _gx_binres_pixelmap_table_load(&info,
- (USHORT)(theme_header.gx_theme_header_pixelmap_count + 1),
- &theme -> theme_pixelmap_table);
+ theme -> theme_pixelmap_table_size,
+ theme -> theme_pixelmap_table);
}
if (status == GX_SUCCESS)
diff --git a/common/src/gx_canvas_block_move.c b/common/src/gx_canvas_block_move.c
index db4b95b8..18edcaf1 100644
--- a/common/src/gx_canvas_block_move.c
+++ b/common/src/gx_canvas_block_move.c
@@ -37,7 +37,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_block_move.c PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -78,6 +78,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added canvas status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_canvas_block_move(GX_RECTANGLE *block, GX_VALUE x_shift, GX_VALUE y_shift, GX_RECTANGLE *dirty)
@@ -101,7 +104,7 @@ UINT status = GX_FAILURE;
display = context -> gx_draw_context_display;
/* check to see if this driver supports block move */
- if (!display -> gx_display_driver_block_move)
+ if (!display -> gx_display_driver_block_move || (context -> gx_draw_context_canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER))
{
/* this driver doesn't support block move. If we are
partial drawing just mark the caller as dirty so that
diff --git a/common/src/gx_canvas_create.c b/common/src/gx_canvas_create.c
index de49a985..0070c63d 100644
--- a/common/src/gx_canvas_create.c
+++ b/common/src/gx_canvas_create.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_create PORTABLE C */
-/* 6.1.3 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -81,6 +81,10 @@
/* resulting in version 6.1 */
/* 12-31-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1.3 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added initilization to the */
+/* canvas members, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_canvas_create(GX_CANVAS *canvas, GX_CONST GX_CHAR *name, GX_DISPLAY *display,
@@ -100,9 +104,13 @@ UINT _gx_canvas_create(GX_CANVAS *canvas, GX_CONST GX_CHAR *name, GX_DISPLAY *d
canvas -> gx_canvas_draw_nesting = 0;
canvas -> gx_canvas_dirty_count = 0;
canvas -> gx_canvas_status = type;
- canvas -> gx_canvas_x_resolution = (GX_VALUE) width;
- canvas -> gx_canvas_y_resolution = (GX_VALUE) height;
- canvas -> gx_canvas_hardware_layer = (GX_BYTE) -1;
+ canvas -> gx_canvas_x_resolution = (GX_VALUE)width;
+ canvas -> gx_canvas_y_resolution = (GX_VALUE)height;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ canvas -> gx_canvas_memory_width = (GX_VALUE)width;
+ canvas -> gx_canvas_memory_height = (GX_VALUE)height;
+#endif
+ canvas -> gx_canvas_hardware_layer = (GX_BYTE)-1;
/* Determine if there is a memory area. */
if (memory_area)
diff --git a/common/src/gx_canvas_drawing_initiate.c b/common/src/gx_canvas_drawing_initiate.c
index d711d3e3..1d435d54 100644
--- a/common/src/gx_canvas_drawing_initiate.c
+++ b/common/src/gx_canvas_drawing_initiate.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_drawing_initiate PORTABLE C */
-/* 6.1.5 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -86,6 +86,10 @@
/* 03-02-2021 Kenneth Maxwell Modified comment(s), added */
/* flip rotation support, */
/* resulting in version 6.1.5 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_canvas_drawing_initiate(GX_CANVAS *canvas, GX_WIDGET *who, GX_RECTANGLE *dirty_area)
@@ -122,6 +126,21 @@ GX_DISPLAY *display = canvas -> gx_canvas_display;
{
/* initialize the dirty rectangle */
canvas -> gx_canvas_dirty_area = *dirty_area;
+
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ canvas -> gx_canvas_memory_width = (GX_VALUE)(dirty_area -> gx_rectangle_right - dirty_area -> gx_rectangle_left + 1);
+ canvas -> gx_canvas_memory_width = (GX_VALUE)((canvas -> gx_canvas_memory_width + 3) & 0xFFFC);
+ canvas -> gx_canvas_memory_height = (GX_VALUE)(canvas -> gx_canvas_memory_size / display -> gx_display_driver_row_pitch_get((USHORT)canvas -> gx_canvas_memory_width));
+ if (canvas -> gx_canvas_memory_height < (dirty_area -> gx_rectangle_bottom - dirty_area -> gx_rectangle_top + 1))
+ {
+ return GX_INVALID_MEMORY_SIZE;
+ }
+ canvas -> gx_canvas_memory_offset_x = dirty_area -> gx_rectangle_left;
+ canvas -> gx_canvas_memory_offset_y = dirty_area -> gx_rectangle_top;
+ }
+#endif
}
/* Are we nested? */
@@ -146,7 +165,23 @@ GX_DISPLAY *display = canvas -> gx_canvas_display;
if (new_context -> gx_draw_context_display -> gx_display_rotation_angle == GX_SCREEN_ROTATION_NONE ||
new_context -> gx_draw_context_display -> gx_display_rotation_angle == GX_SCREEN_ROTATION_FLIP)
{
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ new_context -> gx_draw_context_pitch = canvas -> gx_canvas_memory_width;
+ new_context -> gx_draw_context_offset_x = canvas -> gx_canvas_memory_offset_x;
+ new_context -> gx_draw_context_offset_y = canvas -> gx_canvas_memory_offset_y;
+ }
+ else
+ {
+ new_context -> gx_draw_context_pitch = canvas -> gx_canvas_x_resolution;
+ new_context -> gx_draw_context_offset_x = 0;
+ new_context -> gx_draw_context_offset_y = 0;
+ }
+
+#else
new_context -> gx_draw_context_pitch = canvas -> gx_canvas_x_resolution;
+#endif
}
else
{
diff --git a/common/src/gx_canvas_line_draw.c b/common/src/gx_canvas_line_draw.c
index 8f730ce0..095070e5 100644
--- a/common/src/gx_canvas_line_draw.c
+++ b/common/src/gx_canvas_line_draw.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_line_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -87,6 +87,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), fixed a */
+/* pattern line draw issue, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_canvas_line_draw(GX_VALUE x_start, GX_VALUE y_start, GX_VALUE x_end, GX_VALUE y_end)
@@ -254,11 +257,30 @@ GX_VALUE brush_width;
{
if (brush -> gx_brush_line_pattern)
{
+ if (clip_rect.gx_rectangle_left > x_start)
+ {
+ width = (GX_VALUE)((clip_rect.gx_rectangle_left - x_start) & 0x1F);
+ context -> gx_draw_context_brush.gx_brush_pattern_mask >>= width;
+ }
+
/* Call display driver's simple horizontal pattern line drawing function. */
display -> gx_display_driver_horizontal_pattern_line_draw(context,
clip_rect.gx_rectangle_left,
clip_rect.gx_rectangle_right,
y_start);
+
+ if (clip_rect.gx_rectangle_right < x_end)
+ {
+ width = (GX_VALUE)((x_end - clip_rect.gx_rectangle_right) & 0x1F);
+ if ((context -> gx_draw_context_brush.gx_brush_pattern_mask >> width) == 0)
+ {
+ context -> gx_draw_context_brush.gx_brush_pattern_mask <<= (32 - width);
+ }
+ else
+ {
+ context -> gx_draw_context_brush.gx_brush_pattern_mask >>= width;
+ }
+ }
}
else
{
@@ -275,11 +297,30 @@ GX_VALUE brush_width;
{
if (brush -> gx_brush_line_pattern)
{
+ if (clip_rect.gx_rectangle_top > y_start)
+ {
+ width = (GX_VALUE)((clip_rect.gx_rectangle_top - y_start) & 0x1F);
+ context -> gx_draw_context_brush.gx_brush_pattern_mask >>= width;
+ }
+
/* Call display driver's simple vertical line drawing function. */
display -> gx_display_driver_vertical_pattern_line_draw(context,
clip_rect.gx_rectangle_top,
clip_rect.gx_rectangle_bottom,
x_start);
+
+ if (clip_rect.gx_rectangle_bottom < y_end)
+ {
+ width = (GX_VALUE)((y_end - clip_rect.gx_rectangle_bottom) & 0x1F);
+ if ((context -> gx_draw_context_brush.gx_brush_pattern_mask >> width) == 0)
+ {
+ context -> gx_draw_context_brush.gx_brush_pattern_mask <<= (32 - width);
+ }
+ else
+ {
+ context -> gx_draw_context_brush.gx_brush_pattern_mask >>= width;
+ }
+ }
}
else
{
diff --git a/common/src/gx_canvas_memory_define.c b/common/src/gx_canvas_memory_define.c
index 285e49ca..c9cc3a1f 100644
--- a/common/src/gx_canvas_memory_define.c
+++ b/common/src/gx_canvas_memory_define.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_memory_define PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -67,15 +67,36 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_canvas_memory_define(GX_CANVAS *canvas, GX_COLOR *memory, ULONG memsize)
{
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+GX_DISPLAY *display = canvas -> gx_canvas_display;
+ULONG canvas_size;
+
+ if (!display)
+ {
+ return GX_INVALID_DISPLAY;
+ }
+
+ canvas_size = (ULONG)(display -> gx_display_driver_row_pitch_get((USHORT)canvas -> gx_canvas_x_resolution) * canvas -> gx_canvas_y_resolution);
+
+ if (memsize < canvas_size)
+ {
+ canvas -> gx_canvas_status |= GX_CANVAS_PARTIAL_FRAME_BUFFER;
+ }
+#endif
+
/* change the memory pointer value */
canvas -> gx_canvas_memory = memory;
/* change the memory size */
- canvas ->gx_canvas_memory_size = memsize;
+ canvas -> gx_canvas_memory_size = memsize;
/* mark the canvas dirty so that it get refreshed */
_gx_canvas_dirty_mark(canvas, GX_NULL);
diff --git a/common/src/gx_canvas_mouse_show.c b/common/src/gx_canvas_mouse_show.c
index d255b29f..6e7f2cd9 100644
--- a/common/src/gx_canvas_mouse_show.c
+++ b/common/src/gx_canvas_mouse_show.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_canvas_mouse_show PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -65,6 +65,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added canvas status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_MOUSE_SUPPORT)
@@ -73,6 +76,14 @@ UINT _gx_canvas_mouse_show(GX_CANVAS *canvas)
GX_DISPLAY *display;
GX_MOUSE_CURSOR_INFO *mouse_info;
+#if defined(GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER)
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ /* Not supported. */
+ return GX_FAILURE;
+ }
+#endif
+
display = canvas -> gx_canvas_display;
mouse_info = display -> gx_display_mouse.gx_mouse_cursor_info;
diff --git a/common/src/gx_display_driver_1555xrgb_jpeg_draw.c b/common/src/gx_display_driver_1555xrgb_jpeg_draw.c
index a9f3d874..c01bd155 100644
--- a/common/src/gx_display_driver_1555xrgb_jpeg_draw.c
+++ b/common/src/gx_display_driver_1555xrgb_jpeg_draw.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_dislay_driver_565rgb_jpeg_draw PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -70,10 +70,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed a parameter from */
/* jpeg mcu decode function, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_display_driver_16bpp_block_move.c b/common/src/gx_display_driver_16bpp_block_move.c
index 280a54cb..b9fd2f05 100644
--- a/common/src/gx_display_driver_16bpp_block_move.c
+++ b/common/src/gx_display_driver_16bpp_block_move.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_block_move PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -69,6 +69,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added canvas status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_block_move(GX_DRAW_CONTEXT *context,
@@ -81,6 +84,14 @@ INT width_in_bytes;
INT y;
INT height;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (context -> gx_draw_context_canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ /* Not supported. */
+ return;
+ }
+#endif
+
if (xshift)
{
if (xshift > 0)
diff --git a/common/src/gx_display_driver_16bpp_canvas_copy.c b/common/src/gx_display_driver_16bpp_canvas_copy.c
index 2f706121..07fc2fd5 100644
--- a/common/src/gx_display_driver_16bpp_canvas_copy.c
+++ b/common/src/gx_display_driver_16bpp_canvas_copy.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_canvas_copy PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -71,6 +71,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added canvas status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_canvas_copy(GX_CANVAS *canvas, GX_CANVAS *composite)
@@ -82,6 +85,14 @@ USHORT *write;
INT width;
INT row;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ /* Not supported. */
+ return;
+ }
+#endif
+
dirty.gx_rectangle_left = dirty.gx_rectangle_top = 0;
dirty.gx_rectangle_right = (GX_VALUE)(canvas -> gx_canvas_x_resolution - (GX_VALUE)1);
dirty.gx_rectangle_bottom = (GX_VALUE)(canvas -> gx_canvas_y_resolution - (GX_VALUE)1);
diff --git a/common/src/gx_display_driver_16bpp_horizontal_line_draw.c b/common/src/gx_display_driver_16bpp_horizontal_line_draw.c
index c0fb79f5..20eb4287 100644
--- a/common/src/gx_display_driver_16bpp_horizontal_line_draw.c
+++ b/common/src/gx_display_driver_16bpp_horizontal_line_draw.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_horizontal_line_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -73,6 +73,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_horizontal_line_draw(GX_DRAW_CONTEXT *context, INT xstart, INT xend, INT ypos, INT width, GX_COLOR color)
@@ -103,11 +107,8 @@ GX_UBYTE alpha;
/* pick up start address of canvas memory */
rowstart = (USHORT *)context -> gx_draw_context_memory;
- /* calculate start of row address */
- rowstart += context -> gx_draw_context_pitch * ypos;
+ GX_CALCULATE_PUTROW(rowstart, xstart, ypos, context);
- /* calculate pixel address */
- rowstart += xstart;
/* draw 1-pixel hi lines to fill width */
for (row = 0; row < width; row++)
{
diff --git a/common/src/gx_display_driver_16bpp_horizontal_pattern_line_draw.c b/common/src/gx_display_driver_16bpp_horizontal_pattern_line_draw.c
index 521ddc77..5a3b4e0f 100644
--- a/common/src/gx_display_driver_16bpp_horizontal_pattern_line_draw.c
+++ b/common/src/gx_display_driver_16bpp_horizontal_pattern_line_draw.c
@@ -34,7 +34,7 @@
/* */
/* _gx_display_driver_16bpp_horizontal_pattern_line_draw */
/* PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -69,6 +69,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_horizontal_pattern_line_draw(GX_DRAW_CONTEXT *context, INT xstart, INT xend, INT ypos)
@@ -86,11 +90,8 @@ INT len = xend - xstart + 1;
/* pick up start address of canvas memory */
rowstart = (USHORT *)context -> gx_draw_context_memory;
- /* calculate start of row address */
- rowstart += context -> gx_draw_context_pitch * ypos;
+ GX_CALCULATE_PUTROW(rowstart, xstart, ypos, context);
- /* calculate pixel address */
- rowstart += xstart;
/* draw 1-pixel hi lines to fill width */
/* pick up the requested pattern and mask */
diff --git a/common/src/gx_display_driver_16bpp_pixel_write.c b/common/src/gx_display_driver_16bpp_pixel_write.c
index bf5a8f46..4d6ef251 100644
--- a/common/src/gx_display_driver_16bpp_pixel_write.c
+++ b/common/src/gx_display_driver_16bpp_pixel_write.c
@@ -32,7 +32,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_pixel_write PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -67,17 +67,17 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_pixel_write(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLOR color)
{
USHORT *put = (USHORT *)context -> gx_draw_context_memory;
- /* calculate address of scan line */
- put += context -> gx_draw_context_pitch * y;
-
- /* step in by x coordinate */
- put += x;
+ GX_CALCULATE_PUTROW(put, x, y, context);
/* write the pixel value */
*put = (USHORT)color;
diff --git a/common/src/gx_display_driver_16bpp_pixelmap_draw.c b/common/src/gx_display_driver_16bpp_pixelmap_draw.c
index c8f05233..304485cb 100644
--- a/common/src/gx_display_driver_16bpp_pixelmap_draw.c
+++ b/common/src/gx_display_driver_16bpp_pixelmap_draw.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_565rgb_pixelmap_raw_write PORTABLE C */
-/* 6.1 */
+/* 6.X */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -69,6 +69,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_pixelmap_raw_write(GX_DRAW_CONTEXT *context,
@@ -85,8 +89,8 @@ GX_CONST USHORT *get;
GX_RECTANGLE *clip = context -> gx_draw_context_clip;
putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
+
+ GX_CALCULATE_PUTROW(putrow, clip->gx_rectangle_left, clip->gx_rectangle_top, context);
getrow = (USHORT *)(pixelmap -> gx_pixelmap_data);
getrow += pixelmap -> gx_pixelmap_width * (clip -> gx_rectangle_top - ypos);
@@ -201,7 +205,7 @@ void (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* */
/* _gx_display_driver_565rgb_pixelmap_compressed_write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.X */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -237,6 +241,10 @@ void (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_pixelmap_compressed_write(GX_DRAW_CONTEXT *context,
@@ -281,8 +289,8 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
to the enf of the last visible row
*/
putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += yval * context -> gx_draw_context_pitch;
- putrow += xpos;
+
+ GX_CALCULATE_PUTROW(putrow, xpos, yval, context);
while (yval <= clip -> gx_rectangle_bottom)
{
@@ -534,7 +542,7 @@ void (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_565rgb_palette_pixelmap_raw_write PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -570,6 +578,10 @@ void (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_palette_pixelmap_raw_write(GX_DRAW_CONTEXT *context,
@@ -590,8 +602,8 @@ GX_UBYTE b;
GX_RECTANGLE *clip = context -> gx_draw_context_clip;
putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
+
+ GX_CALCULATE_PUTROW(putrow, clip->gx_rectangle_left, clip->gx_rectangle_top, context);
getrow = (GX_UBYTE *)(pixelmap -> gx_pixelmap_data);
getrow += pixelmap -> gx_pixelmap_width * (clip -> gx_rectangle_top - ypos);
@@ -624,7 +636,7 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* */
/* _gx_display_driver_565rgb_palette_pixelmap_transparent_raw_write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.X */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -660,6 +672,10 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_palette_pixelmap_transparent_raw_write(GX_DRAW_CONTEXT *context,
@@ -679,9 +695,8 @@ GX_UBYTE b;
GX_RECTANGLE *clip = context -> gx_draw_context_clip;
- putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
+ putrow = (USHORT *)context->gx_draw_context_memory;
+ GX_CALCULATE_PUTROW(putrow, clip->gx_rectangle_left, clip->gx_rectangle_top, context);
getrow = (GX_UBYTE *)(pixelmap -> gx_pixelmap_data);
getrow += pixelmap -> gx_pixelmap_width * (clip -> gx_rectangle_top - ypos);
@@ -720,7 +735,7 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* _gx_display_driver_565rgb_palette_pixelmap_transparent_compressed */
/* _write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -757,6 +772,10 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_palette_pixelmap_transparent_compressed_write(GX_DRAW_CONTEXT *context,
@@ -805,8 +824,7 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* Now we are on the first visible row, copy pixels until we get
to the end of the last visible row. */
putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += yval * context -> gx_draw_context_pitch;
- putrow += xpos;
+ GX_CALCULATE_PUTROW(putrow, xpos, yval, context);
palette = (GX_COLOR *)pixelmap -> gx_pixelmap_aux_data;
@@ -923,7 +941,7 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* */
/* _gx_display_driver_565rgb_palette_pixelmap_compressed_write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -959,6 +977,10 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_palette_pixelmap_compressed_write(GX_DRAW_CONTEXT *context,
@@ -1006,8 +1028,7 @@ GX_RECTANGLE *clip = context -> gx_draw_context_clip;
/* Now we are on the first visible row, copy pixels until we get
to the end of the last visible row. */
putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += yval * context -> gx_draw_context_pitch;
- putrow += xpos;
+ GX_CALCULATE_PUTROW(putrow, xpos, yval, context);
palette = (GX_COLOR *)pixelmap -> gx_pixelmap_aux_data;
diff --git a/common/src/gx_display_driver_16bpp_pixelmap_rotate.c b/common/src/gx_display_driver_16bpp_pixelmap_rotate.c
index abdaf8a1..8f26aa75 100644
--- a/common/src/gx_display_driver_16bpp_pixelmap_rotate.c
+++ b/common/src/gx_display_driver_16bpp_pixelmap_rotate.c
@@ -580,7 +580,7 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLOR col
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_pixelmap_simple_rotate PORTABLE C */
-/* 6.1.7 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -622,6 +622,10 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLOR col
/* 06-02-2021 Kenneth Maxwell Modified comment(s), */
/* remove unused assignment, */
/* resulting in version 6.1.7 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_pixelmap_simple_rotate(GX_DRAW_CONTEXT *context, INT xpos, INT ypos, GX_PIXELMAP *pixelmap,
@@ -640,6 +644,10 @@ INT newypos;
clip = context -> gx_draw_context_clip;
+ putrow = (USHORT *)context -> gx_draw_context_memory;
+
+ GX_CALCULATE_PUTROW(putrow, clip -> gx_rectangle_left, clip -> gx_rectangle_top, context);
+
if (angle == 90)
{
width = pixelmap -> gx_pixelmap_height;
@@ -648,10 +656,6 @@ INT newypos;
newxpos = xpos + cx - (width - 1 - cy);
newypos = ypos + cy - cx;
- putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
-
for (y = clip -> gx_rectangle_top - newypos; y <= clip -> gx_rectangle_bottom - newypos; y++)
{
put = putrow;
@@ -677,10 +681,6 @@ INT newypos;
newxpos = xpos + cx - (width - 1 - cx);
newypos = ypos + cy - (height - 1 - cy);
- putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
-
for (y = clip -> gx_rectangle_top - newypos; y <= clip -> gx_rectangle_bottom - newypos; y++)
{
put = putrow;
@@ -703,10 +703,6 @@ INT newypos;
newxpos = xpos + cx - cy;
newypos = ypos + cx - (height - 1 - cy);
- putrow = (USHORT *)context -> gx_draw_context_memory;
- putrow += clip -> gx_rectangle_top * context -> gx_draw_context_pitch;
- putrow += clip -> gx_rectangle_left;
-
for (y = clip -> gx_rectangle_top - newypos; y <= clip -> gx_rectangle_bottom - newypos; y++)
{
put = putrow;
diff --git a/common/src/gx_display_driver_16bpp_simple_line_draw.c b/common/src/gx_display_driver_16bpp_simple_line_draw.c
index cef9d1aa..6001e0dc 100644
--- a/common/src/gx_display_driver_16bpp_simple_line_draw.c
+++ b/common/src/gx_display_driver_16bpp_simple_line_draw.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_simple_line_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -75,6 +75,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_simple_line_draw(GX_DRAW_CONTEXT *context, INT xstart, INT ystart, INT xend, INT yend)
@@ -103,8 +107,9 @@ INT dy = GX_ABS(yend - ystart);
GX_RECTANGLE *clip = context -> gx_draw_context_clip;
GX_COLOR linecolor = context -> gx_draw_context_brush.gx_brush_line_color;
-#if defined GX_BRUSH_ALPHA_SUPPORT
-GX_UBYTE alpha;
+
+#if defined GX_BRUSH_ALPHA_SUPPORT
+GX_UBYTE alpha;
alpha = context -> gx_draw_context_brush.gx_brush_alpha;
if (alpha == 0)
@@ -136,8 +141,11 @@ GX_UBYTE alpha;
y_increment = 0 - context -> gx_draw_context_pitch;
}
- put = (USHORT *)(context -> gx_draw_context_memory) + ystart * context -> gx_draw_context_pitch + xstart;
- next_put = (USHORT *)(context -> gx_draw_context_memory) + yend * context -> gx_draw_context_pitch + xend;
+ put = (USHORT *)(context -> gx_draw_context_memory);
+ GX_CALCULATE_PUTROW(put, xstart, ystart, context);
+
+ next_put = (USHORT *)(context -> gx_draw_context_memory);
+ GX_CALCULATE_PUTROW(next_put, xend, yend, context);
end_point.gx_point_x = (GX_VALUE)xstart;
@@ -296,7 +304,7 @@ GX_UBYTE alpha;
PIXEL_WRITE(put, linecolor);
put += context -> gx_draw_context_pitch;
}
- }
+ }
}
else
{
@@ -461,3 +469,4 @@ GX_UBYTE alpha;
}
}
}
+
diff --git a/common/src/gx_display_driver_16bpp_vertical_line_draw.c b/common/src/gx_display_driver_16bpp_vertical_line_draw.c
index 128a34ec..48cc81f8 100644
--- a/common/src/gx_display_driver_16bpp_vertical_line_draw.c
+++ b/common/src/gx_display_driver_16bpp_vertical_line_draw.c
@@ -31,7 +31,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_vertical_line_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -70,6 +70,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_vertical_line_draw(GX_DRAW_CONTEXT *context, INT ystart, INT yend, INT xpos, INT width, GX_COLOR color)
@@ -98,11 +102,7 @@ GX_UBYTE alpha;
/* pick up starting address of canvas memory */
rowstart = (USHORT *)context -> gx_draw_context_memory;
- /* calculate start of scanline */
- rowstart += context -> gx_draw_context_pitch * ystart;
-
- /* offset into starting pixel */
- rowstart += xpos;
+ GX_CALCULATE_PUTROW(rowstart, xpos, ystart, context);
/* draw line from top to bottom */
for (row = 0; row < len; row++)
diff --git a/common/src/gx_display_driver_16bpp_vertical_pattern_line_draw.c b/common/src/gx_display_driver_16bpp_vertical_pattern_line_draw.c
index 16404336..c4f092ac 100644
--- a/common/src/gx_display_driver_16bpp_vertical_pattern_line_draw.c
+++ b/common/src/gx_display_driver_16bpp_vertical_pattern_line_draw.c
@@ -32,7 +32,7 @@
/* */
/* _gx_display_driver_16bpp_vertical_pattern_line_draw */
/* PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -67,6 +67,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_vertical_pattern_line_draw(GX_DRAW_CONTEXT *context, INT ystart, INT yend, INT xpos)
@@ -84,11 +88,7 @@ INT len = yend - ystart + 1;
/* pick up starting address of canvas memory */
rowstart = (USHORT *)context -> gx_draw_context_memory;
- /* calculate start of scanline */
- rowstart += context -> gx_draw_context_pitch * ystart;
-
- /* offset into starting pixel */
- rowstart += xpos;
+ GX_CALCULATE_PUTROW(rowstart, xpos, ystart, context);
/* pick up the requested pattern and mask */
pattern = context -> gx_draw_context_brush.gx_brush_line_pattern;
diff --git a/common/src/gx_display_driver_24xrgb_jpeg_draw.c b/common/src/gx_display_driver_24xrgb_jpeg_draw.c
index 7ed13824..042a3a65 100644
--- a/common/src/gx_display_driver_24xrgb_jpeg_draw.c
+++ b/common/src/gx_display_driver_24xrgb_jpeg_draw.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_dislay_driver_24xrgb_jpeg_draw PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -70,10 +70,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed a parameter from */
/* jpeg mcu decode function, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_display_driver_24xrgb_rotated_jpeg_draw.c b/common/src/gx_display_driver_24xrgb_rotated_jpeg_draw.c
index 45cea5f9..d99e22a3 100644
--- a/common/src/gx_display_driver_24xrgb_rotated_jpeg_draw.c
+++ b/common/src/gx_display_driver_24xrgb_rotated_jpeg_draw.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_dislay_driver_24xrgb_rotated_jpeg_draw PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -70,10 +70,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 02-02-2021 Kenneth Maxwell Initial Version 6.1.4 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed a parameter from */
/* jpeg mcu decode function, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_display_driver_565rgb_canvas_blend.c b/common/src/gx_display_driver_565rgb_canvas_blend.c
index 353b8100..dabdb603 100644
--- a/common/src/gx_display_driver_565rgb_canvas_blend.c
+++ b/common/src/gx_display_driver_565rgb_canvas_blend.c
@@ -45,7 +45,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_565rgb_canvas_blend PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -83,7 +83,9 @@
/* */
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
-/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added canvas status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_565rgb_canvas_blend(GX_CANVAS *canvas, GX_CANVAS *composite)
@@ -103,6 +105,14 @@ USHORT bcolor;
INT row;
INT col;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ /* Not supported. */
+ return;
+ }
+#endif
+
dirty.gx_rectangle_left = dirty.gx_rectangle_top = 0;
dirty.gx_rectangle_right = (GX_VALUE)(canvas -> gx_canvas_x_resolution - 1);
dirty.gx_rectangle_bottom = (GX_VALUE)(canvas -> gx_canvas_y_resolution - 1);
diff --git a/common/src/gx_display_driver_565rgb_glyph_1bit_draw.c b/common/src/gx_display_driver_565rgb_glyph_1bit_draw.c
index 2d3c8117..ec8d4294 100644
--- a/common/src/gx_display_driver_565rgb_glyph_1bit_draw.c
+++ b/common/src/gx_display_driver_565rgb_glyph_1bit_draw.c
@@ -50,7 +50,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_16bpp_glyph_1bit_draw PORTABLE C */
-/* 6.1.11 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -92,6 +92,10 @@
/* 04-25-2022 Ting Zhu Modified comment(s), */
/* fixed access violation bug, */
/* resulting in version 6.1.11 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_16bpp_glyph_1bit_draw(GX_DRAW_CONTEXT *context, GX_RECTANGLE *draw_area, GX_POINT *map_offset, GX_CONST GX_GLYPH *glyph)
@@ -188,10 +192,9 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *, INT, INT, GX_COLOR, GX_UBYTE);
y_height = (UINT)(draw_area -> gx_rectangle_bottom - draw_area -> gx_rectangle_top + 1);
line_start = (USHORT *)context -> gx_draw_context_memory;
- line_start += context -> gx_draw_context_pitch * (draw_area -> gx_rectangle_top);
- line_start += draw_area -> gx_rectangle_left;
+ GX_CALCULATE_PUTROW(line_start, draw_area -> gx_rectangle_left, draw_area -> gx_rectangle_top, context);
-#if defined (GX_BRUSH_ALPHA_SUPPORT)
+#if defined(GX_BRUSH_ALPHA_SUPPORT)
if (brush_alpha != 0xff)
{
yval = draw_area -> gx_rectangle_top;
diff --git a/common/src/gx_display_driver_565rgb_horizontal_pixelmap_line_draw.c b/common/src/gx_display_driver_565rgb_horizontal_pixelmap_line_draw.c
index f2ab8b4d..b12bb7c2 100644
--- a/common/src/gx_display_driver_565rgb_horizontal_pixelmap_line_draw.c
+++ b/common/src/gx_display_driver_565rgb_horizontal_pixelmap_line_draw.c
@@ -536,7 +536,7 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* */
/* _gx_display_driver_565rgb_horizontal_pixelmap_line_raw_write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.X */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -573,6 +573,10 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_horizontal_pixelmap_line_raw_write(GX_DRAW_CONTEXT *context,
@@ -596,8 +600,7 @@ GX_PIXELMAP *pixelmap;
if ((info -> draw) && (xstart <= xend))
{
put = (USHORT *)context -> gx_draw_context_memory;
- put += y * context -> gx_draw_context_pitch;
- put += xstart;
+ GX_CALCULATE_PUTROW(put, xstart, y, context);
/*calculate the offset.*/
offset = (info -> x_offset % pic_width);
@@ -723,7 +726,7 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* */
/* _gx_display_driver_565rgb_horizontal_pixelmap_line_compressed_write */
/* PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -760,6 +763,10 @@ VOID (*blend_func)(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLO
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_display_driver_565rgb_horizontal_pixelmap_line_compressed_write(GX_DRAW_CONTEXT *context,
@@ -781,7 +788,7 @@ GX_PIXELMAP *pixelmap;
start_pos = xstart - (info -> x_offset % pixelmap -> gx_pixelmap_width);
put = (USHORT *)context -> gx_draw_context_memory;
- put += y * context -> gx_draw_context_pitch + start_pos;
+ GX_CALCULATE_PUTROW(put, start_pos, y, context);
/*Repeat the draw operation to fill the whole dirty area.*/
while (start_pos <= xend)
diff --git a/common/src/gx_display_driver_565rgb_jpeg_draw.c b/common/src/gx_display_driver_565rgb_jpeg_draw.c
index a226c7da..19c2b415 100644
--- a/common/src/gx_display_driver_565rgb_jpeg_draw.c
+++ b/common/src/gx_display_driver_565rgb_jpeg_draw.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_dislay_driver_565rgb_jpeg_draw PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -72,10 +72,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed a parameter from */
/* jpeg mcu decode function, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_display_driver_565rgb_pixel_blend.c b/common/src/gx_display_driver_565rgb_pixel_blend.c
index d2a0eac2..dd4bccd2 100644
--- a/common/src/gx_display_driver_565rgb_pixel_blend.c
+++ b/common/src/gx_display_driver_565rgb_pixel_blend.c
@@ -44,7 +44,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_display_driver_565rgb_pixel_blend PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -83,6 +83,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_display_driver_565rgb_pixel_blend(GX_DRAW_CONTEXT *context, INT x, INT y, GX_COLOR fcolor, GX_UBYTE alpha)
@@ -94,14 +98,12 @@ GX_UBYTE balpha;
USHORT bcolor;
USHORT *put;
-
/* Is the pixel non-transparent? */
if (alpha > 0)
{
/* calculate address of pixel */
put = (USHORT *)context -> gx_draw_context_memory;
- put += context -> gx_draw_context_pitch * y;
- put += x;
+ GX_CALCULATE_PUTROW(put, x, y, context);
/* No need to blend if alpha value is 255. */
if (alpha == 255)
diff --git a/common/src/gx_display_driver_565rgb_rotated_jpeg_draw.c b/common/src/gx_display_driver_565rgb_rotated_jpeg_draw.c
index beb1dfdc..382ed3c0 100644
--- a/common/src/gx_display_driver_565rgb_rotated_jpeg_draw.c
+++ b/common/src/gx_display_driver_565rgb_rotated_jpeg_draw.c
@@ -35,7 +35,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_dislay_driver_565rgb_jpeg_draw PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -70,10 +70,10 @@
/* DATE NAME DESCRIPTION */
/* */
/* 12-31-2020 Kenneth Maxwell Initial Version 6.1.3 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* removed a parameter from */
/* jpeg mcu decode function, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_display_language_table_set.c b/common/src/gx_display_language_table_set.c
index 3f11055a..f3c54837 100644
--- a/common/src/gx_display_language_table_set.c
+++ b/common/src/gx_display_language_table_set.c
@@ -212,7 +212,7 @@ GX_CONST GX_STRING **old_table = display -> gx_display_language_table;
/* FUNCTION RELEASE */
/* */
/* _gx_display_language_direction_table_set_ext PORTABLE C */
-/* 6.1.10 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -224,7 +224,7 @@ GX_CONST GX_STRING **old_table = display -> gx_display_language_table;
/* INPUT */
/* */
/* display Pointer to display */
-/* language_direciton_table The language direction table */
+/* language_direction_table The language direction table */
/* to be set */
/* num_languages Number of languages in the */
/* table */
@@ -246,6 +246,8 @@ GX_CONST GX_STRING **old_table = display -> gx_display_language_table;
/* DATE NAME DESCRIPTION */
/* */
/* 01-31-2022 Ting Zhu Initial Version 6.1.10 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_DYNAMIC_BIDI_TEXT_SUPPORT)
diff --git a/common/src/gx_drop_list_draw.c b/common/src/gx_drop_list_draw.c
index 641a9835..66dcc1b4 100644
--- a/common/src/gx_drop_list_draw.c
+++ b/common/src/gx_drop_list_draw.c
@@ -33,13 +33,114 @@
#include "gx_utility.h"
#include "gx_drop_list.h"
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_drop_list_selected_children_draw PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function draws the children of the selected item to the drop */
+/* list client area with the specified shift values. */
+/* */
+/* INPUT */
+/* */
+/* drop_list Pointer to drop list widget */
+/* widget Widget to be drawn */
+/* xshift Shift value in x coordinate */
+/* yshift Shift value in y coordinate */
+/* */
+/* OUTPUT */
+/* */
+/* None */
+/* */
+/* CALLS */
+/* */
+/* _gx_utility_rectangle_shift Shift rectangle */
+/* */
+/* CALLED BY */
+/* */
+/* _gx_drop_list_draw */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+static VOID _gx_drop_list_selected_children_draw(GX_DROP_LIST *drop_list, GX_WIDGET *widget, GX_VALUE xshift, GX_VALUE yshift)
+{
+GX_WIDGET *child;
+GX_WIDGET *child_child;
+GX_RECTANGLE old_size;
+GX_RECTANGLE old_clip;
+ULONG old_style;
+
+ /* Save the first child. */
+ child = widget -> gx_widget_first_child;
+
+ /* Draw the children. */
+ while (child)
+ {
+ /* Save the widget size. */
+ old_size = child -> gx_widget_size;
+
+ /* Save the widget clip size. */
+ old_clip = child -> gx_widget_clip;
+
+ /* Save the widget style. */
+ old_style = child -> gx_widget_style;
+
+ /* Update the widget style temporarily. */
+ if (drop_list -> gx_widget_status & GX_STATUS_HAS_FOCUS)
+ {
+ child -> gx_widget_style |= ~GX_STYLE_DRAW_SELECTED;
+ }
+ else
+ {
+ child -> gx_widget_style &= ~GX_STYLE_DRAW_SELECTED;
+ }
+
+ /* Shift the widget size and clip with the specified shift values temporarily. */
+ _gx_utility_rectangle_shift(&child -> gx_widget_size, xshift, yshift);
+ _gx_utility_rectangle_shift(&child -> gx_widget_clip, xshift, yshift);
+
+ child_child = child -> gx_widget_first_child;
+
+ /* Set the first child to NULL temporarily. */
+ child -> gx_widget_first_child = GX_NULL;
+
+ /* Draw the widget. */
+ child -> gx_widget_draw_function(child);
+
+ if (child_child)
+ {
+ child -> gx_widget_first_child = child_child;
+
+ _gx_drop_list_selected_children_draw(drop_list, child, xshift, yshift);
+ }
+
+ /* Recover the widget properties. */
+ child -> gx_widget_size = old_size;
+ child -> gx_widget_clip = old_clip;
+ child -> gx_widget_style = old_style;
+
+ child = child -> gx_widget_next;
+ }
+}
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _gx_drop_list_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -77,32 +178,79 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* improved drawing of the */
+/* selected item, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_drop_list_draw(GX_DROP_LIST *drop_list)
{
GX_RECTANGLE client;
GX_WIDGET *selected;
-GX_WIDGET *widget;
-GX_VERTICAL_LIST *list;
-GX_RECTANGLE selected_size;
-GX_RECTANGLE selected_clip;
-ULONG selected_style;
+GX_VALUE xshift;
+GX_VALUE yshift;
+INT selected_index;
+GX_VERTICAL_LIST *list = &drop_list -> gx_drop_list_popup.gx_popup_list_list;
+GX_RECTANGLE size;
+GX_RECTANGLE clip;
+ULONG style;
+GX_WIDGET *child = GX_NULL;
+GX_BOOL reuse_list_item = GX_FALSE;
- widget = (GX_WIDGET *)drop_list;
+ /* Draw the background. */
_gx_drop_list_background_draw(drop_list);
- list = (GX_VERTICAL_LIST *)&drop_list -> gx_drop_list_popup.gx_popup_list_list;
+ /* Pick the selected item. */
_gx_vertical_list_selected_widget_get(list, &selected);
+ if (!selected && list -> gx_vertical_list_callback)
+ {
+ /* If not be able to retrieve the selected widget, its possible that the selcted item
+ has been reused for displaying the other list items during the scrolling.
+ In this case, try to get the selected index first, then reuse the list child to draw the selected item. */
+
+ /* Get the selected index. */
+ _gx_vertical_list_selected_index_get(list, &selected_index);
+
+ if((selected_index >= 0) && (selected_index < list -> gx_vertical_list_total_rows))
+ {
+ /* Make the first list child as the selected widget temporarily. */
+ selected = _gx_widget_first_client_child_get((GX_WIDGET *)list);
+
+ /* Call the list callback function to create the selected widget. */
+ list -> gx_vertical_list_callback(list, selected, selected_index);
+
+ reuse_list_item = GX_TRUE;
+ }
+ }
+
if (selected)
{
- /* draw the selected widget into my client area: */
- _gx_widget_client_get(widget, -1, &client);
- selected_size = selected -> gx_widget_size;
- selected_clip = selected -> gx_widget_clip;
- selected_style = selected -> gx_widget_style;
+ _gx_widget_client_get((GX_WIDGET *)drop_list, -1, &client);
+
+ size = selected -> gx_widget_size;
+ clip = selected -> gx_widget_clip;
+
+ if (selected -> gx_widget_first_child)
+ {
+ child = selected -> gx_widget_first_child;
+ selected -> gx_widget_first_child = GX_NULL;
+
+ /* Calculate the distance from the selected widget to the client area. */
+ xshift = (GX_VALUE)(client.gx_rectangle_left - size.gx_rectangle_left);
+ yshift = (GX_VALUE)((client.gx_rectangle_bottom + client.gx_rectangle_top - size.gx_rectangle_bottom - size.gx_rectangle_top) >> 1);
+ }
+
+ selected -> gx_widget_size = client;
+ selected -> gx_widget_clip = client;
+
+
+ /* Save the widget style. */
+ style = selected -> gx_widget_style;
+
+ /* Update the widget style temporarily. */
if (drop_list -> gx_widget_status & GX_STATUS_HAS_FOCUS)
{
selected -> gx_widget_style |= ~GX_STYLE_DRAW_SELECTED;
@@ -111,14 +259,29 @@ ULONG selected_style;
{
selected -> gx_widget_style &= ~GX_STYLE_DRAW_SELECTED;
}
- selected -> gx_widget_size = client;
- selected -> gx_widget_clip = client;
+
selected -> gx_widget_draw_function(selected);
- selected -> gx_widget_size = selected_size;
- selected -> gx_widget_clip = selected_clip;
- selected -> gx_widget_style = selected_style;
+
+ if (child)
+ {
+ selected -> gx_widget_first_child = child;
+
+ /* Draw the selected widget into my client area: */
+ _gx_drop_list_selected_children_draw(drop_list, selected, xshift, yshift);
+ }
+
+ selected -> gx_widget_size = size;
+ selected -> gx_widget_clip = clip;
+ selected -> gx_widget_style = style;
+ }
+
+ if (reuse_list_item)
+ {
+ /* Call the list callback funtion to create the widget with its original index. */
+ list -> gx_vertical_list_callback(list, selected, list -> gx_vertical_list_top_index);
}
- _gx_widget_children_draw(widget);
+ /* Draw the children. */
+ _gx_widget_children_draw((GX_WIDGET *)drop_list);
}
diff --git a/common/src/gx_image_reader_image_decode.c b/common/src/gx_image_reader_image_decode.c
index 3910e13c..94c193af 100644
--- a/common/src/gx_image_reader_image_decode.c
+++ b/common/src/gx_image_reader_image_decode.c
@@ -108,7 +108,7 @@ GX_CONST GX_UBYTE *buffer;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_image_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -143,10 +143,10 @@ GX_CONST GX_UBYTE *buffer;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* modified jpeg decode */
/* function parameter list, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
diff --git a/common/src/gx_image_reader_jpeg_decode.c b/common/src/gx_image_reader_jpeg_decode.c
index 4db1e52e..df0adc8f 100644
--- a/common/src/gx_image_reader_jpeg_decode.c
+++ b/common/src/gx_image_reader_jpeg_decode.c
@@ -178,7 +178,7 @@ INT index;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_huffcode_find PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -221,9 +221,9 @@ INT index;
/* changed bit_count to */
/* GX_VALUE data type, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_huffcode_find(GX_JPEG_INFO *jpeg_info,
@@ -266,7 +266,7 @@ GX_HUFFCODE_INFO *code_info;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_huffman_table_set PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -303,9 +303,9 @@ GX_HUFFCODE_INFO *code_info;
/* added range test to prevent */
/* underflow, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_huffman_table_set(GX_JPEG_INFO *jpeg_info, UINT segment_len)
@@ -554,7 +554,7 @@ INT index;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_dc_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -595,9 +595,9 @@ INT index;
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* added range test, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_dc_decode(GX_JPEG_INFO *jpeg_info, UINT i_component)
@@ -654,7 +654,7 @@ GX_BOOL negative;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_ac_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -695,9 +695,9 @@ GX_BOOL negative;
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* added range test, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_ac_decode(GX_JPEG_INFO *jpeg_info, UINT i_component)
@@ -834,7 +834,7 @@ INT negative;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_dequantize_idct PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -891,7 +891,7 @@ INT negative;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_dequantize_idct(INT *block, INT *quant_table, GX_BYTE *out, INT stride)
@@ -1099,7 +1099,7 @@ int16_t const *base;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_1d_idct PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -1135,9 +1135,9 @@ int16_t const *base;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_1d_idct(INT *input_data, INT *output_data, INT post_scale, INT round)
@@ -1190,7 +1190,7 @@ INT t;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_dequantize_idct PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -1234,9 +1234,9 @@ INT t;
/* added range check for */
/* table_index, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_dequantize_idct(INT *block, INT *quant_table, GX_BYTE *out, INT stride)
@@ -1291,7 +1291,7 @@ INT row;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_one_block_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -1332,9 +1332,9 @@ INT row;
/* returned result of */
/* dequantize_idct, */
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_one_block_decode(GX_JPEG_INFO *jpeg_info, UINT i_component, GX_BYTE *block_data)
@@ -1386,7 +1386,7 @@ INT stride;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_24xrgb_pixel_write_helium PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1423,34 +1423,18 @@ INT stride;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_24xrgb_pixel_write_helium(GX_JPEG_INFO *jpeg_info, uint8x16_t vred, uint8x16_t vgreen, uint8x16_t vblue, INT size)
{
-static uint8x16_t voffset = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60};
-static uint8x16_t valpha = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-mve_pred16_t p;
+INT index;
- if (size == 16)
- {
- vstrbq_scatter_offset_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vblue);
- vstrbq_scatter_offset_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vgreen);
- vstrbq_scatter_offset_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vred);
- vstrbq_scatter_offset_u8(jpeg_info -> gx_jpeg_putdata++, voffset, valpha);
-
- jpeg_info -> gx_jpeg_putdata += 60;
- }
- else
+ for(index = 0; index < size; index++)
{
- /* Write the specified size of RGB values to memory. */
- p = 0xffff >> (16 - size);
- vstrbq_scatter_offset_p_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vblue, p);
- vstrbq_scatter_offset_p_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vgreen, p);
- vstrbq_scatter_offset_p_u8(jpeg_info -> gx_jpeg_putdata++, voffset, vred, p);
- vstrbq_scatter_offset_p_u8(jpeg_info -> gx_jpeg_putdata++, voffset, valpha, p);
+ *((GX_COLOR *)jpeg_info -> gx_jpeg_putdata) = 0xff000000 | ((ULONG)vred[index] << 16) | ((ULONG)vgreen[index] << 8) | (ULONG)vblue[index];
- jpeg_info -> gx_jpeg_putdata += ((size - 1) << 2);
+ jpeg_info -> gx_jpeg_putdata += 4;
}
}
#else
@@ -1459,7 +1443,7 @@ mve_pred16_t p;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_1555xrgb_pixel_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1492,7 +1476,7 @@ mve_pred16_t p;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_24xrgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX_UBYTE red, GX_UBYTE green, GX_UBYTE blue)
@@ -1509,7 +1493,7 @@ static VOID _gx_image_reader_jpeg_24xrgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_24bpp_pixel_write_helium PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1547,7 +1531,7 @@ static VOID _gx_image_reader_jpeg_24xrgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_24bpp_pixel_write_helium(GX_JPEG_INFO *jpeg_info, uint8x16_t vred, uint8x16_t vgreen, uint8x16_t vblue, INT size)
@@ -1578,7 +1562,7 @@ mve_pred16_t p;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_24bpp_pixel_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1611,7 +1595,7 @@ mve_pred16_t p;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_24bpp_pixel_write(GX_JPEG_INFO *jpeg_info, GX_UBYTE red, GX_UBYTE green, GX_UBYTE blue)
@@ -1628,7 +1612,7 @@ static VOID _gx_image_reader_jpeg_24bpp_pixel_write(GX_JPEG_INFO *jpeg_info, GX_
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_565rgb_pixel_write_helium PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1672,7 +1656,7 @@ static VOID _gx_image_reader_jpeg_24bpp_pixel_write(GX_JPEG_INFO *jpeg_info, GX_
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_565rgb_pixel_write_helium(GX_JPEG_INFO *jpeg_info, uint8x16_t vred, uint8x16_t vgreen, uint8x16_t vblue, INT size)
@@ -1729,7 +1713,7 @@ GX_UBYTE blue[16];
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_1555xrgb_pixel_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1762,7 +1746,7 @@ GX_UBYTE blue[16];
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_565rgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX_UBYTE red, GX_UBYTE green, GX_UBYTE blue)
@@ -1783,7 +1767,7 @@ static VOID _gx_image_reader_jpeg_565rgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_1555xrgb_pixel_write_helium PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1827,7 +1811,7 @@ static VOID _gx_image_reader_jpeg_565rgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_1555xrgb_pixel_write_helium(GX_JPEG_INFO *jpeg_info, uint8x16_t vred, uint8x16_t vgreen, uint8x16_t vblue, INT size)
@@ -1884,7 +1868,7 @@ GX_UBYTE blue[16];
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_1555xrgb_pixel_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1917,7 +1901,7 @@ GX_UBYTE blue[16];
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static VOID _gx_image_reader_jpeg_1555xrgb_pixel_write(GX_JPEG_INFO *jpeg_info, GX_UBYTE red, GX_UBYTE green, GX_UBYTE blue)
@@ -1937,7 +1921,7 @@ static VOID _gx_image_reader_jpeg_1555xrgb_pixel_write(GX_JPEG_INFO *jpeg_info,
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_pixel_write_info_set PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -1979,7 +1963,7 @@ static VOID _gx_image_reader_jpeg_1555xrgb_pixel_write(GX_JPEG_INFO *jpeg_info,
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_pixel_write_info_set(GX_JPEG_INFO *jpeg_info)
@@ -2063,7 +2047,7 @@ static UINT _gx_image_reader_jpeg_pixel_write_info_set(GX_JPEG_INFO *jpeg_info)
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_one_mcu_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -2103,9 +2087,11 @@ static UINT _gx_image_reader_jpeg_pixel_write_info_set(GX_JPEG_INFO *jpeg_info)
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* added Helium support, */
-/* resulting in version 6.x */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_one_mcu_write(GX_JPEG_INFO *jpeg_info, INT xpos, INT ypos, INT h, INT v)
@@ -2162,8 +2148,13 @@ INT blue;
}
put = (GX_UBYTE *)jpeg_info -> gx_jpeg_output_buffer;
+#if defined(GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER)
+ put += (ypos + ystart - jpeg_info -> gx_jpeg_output_buffer_offset_y) * jpeg_info -> gx_jpeg_output_stride;
+ put += (xpos + xstart - jpeg_info -> gx_jpeg_output_buffer_offset_x) * jpeg_info -> gx_jpeg_output_bpp;
+#else
put += (ypos + ystart) * jpeg_info -> gx_jpeg_output_stride;
put += (xpos + xstart) * jpeg_info -> gx_jpeg_output_bpp;
+#endif
#if defined(GX_ENABLE_ARM_HELIUM)
index = (h == 1 ? 0 : (h - 1 + (xstart % h)));
@@ -2224,7 +2215,7 @@ INT blue;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_one_mcu_rotated_write PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Ting Zhu, Microsoft Corporation */
@@ -2261,7 +2252,7 @@ INT blue;
/* */
/* DATE NAME DESCRIPTION */
/* */
-/* xx-xx-xxxx Ting Zhu Initial Version 6.x */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_one_mcu_rotated_write(GX_JPEG_INFO *jpeg_info, INT xpos, INT ypos, INT h, INT v)
@@ -2427,7 +2418,7 @@ GX_BYTE sign = 1;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_decompress PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -2465,9 +2456,9 @@ GX_BYTE sign = 1;
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* abort if block decode fails,*/
/* resulting in version 6.2.0 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_decompress(GX_JPEG_INFO *jpeg_info)
@@ -2542,7 +2533,7 @@ UINT (*one_mcu_write)(GX_JPEG_INFO *jpeg_info, INT xpos, INT ypos, INT h, INT v)
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_decode_blocks PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -2584,9 +2575,9 @@ UINT (*one_mcu_write)(GX_JPEG_INFO *jpeg_info, INT xpos, INT ypos, INT h, INT v)
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), removed */
+/* 10-31-2023 Ting Zhu Modified comment(s), removed */
/* huffman table free logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
static UINT _gx_image_reader_jpeg_decode_blocks(GX_JPEG_INFO *jpeg_info)
@@ -2689,7 +2680,7 @@ UINT status = GX_SUCCESS;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -2724,9 +2715,9 @@ UINT status = GX_SUCCESS;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_image_reader_jpeg_decode(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap)
@@ -2794,7 +2785,7 @@ GX_JPEG_INFO *jpeg_info;
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_jpeg_mcu_decode PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -2833,9 +2824,9 @@ GX_JPEG_INFO *jpeg_info;
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_image_reader_jpeg_mcu_decode(GX_CONST GX_UBYTE *read_data, ULONG data_size,
@@ -2871,8 +2862,15 @@ GX_JPEG_INFO *jpeg_info;
jpeg_info -> gx_jpeg_output_color_format = context -> gx_draw_context_display -> gx_display_color_format;
jpeg_info -> gx_jpeg_output_rotation_angle = context -> gx_draw_context_display -> gx_display_rotation_angle;
jpeg_info -> gx_jpeg_output_buffer = (GX_UBYTE *)context -> gx_draw_context_memory;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ jpeg_info -> gx_jpeg_output_width = (USHORT)context -> gx_draw_context_canvas -> gx_canvas_memory_width;
+ jpeg_info -> gx_jpeg_output_height = (USHORT)context -> gx_draw_context_canvas -> gx_canvas_memory_height;
+ jpeg_info -> gx_jpeg_output_buffer_offset_x = context -> gx_draw_context_offset_x;
+ jpeg_info -> gx_jpeg_output_buffer_offset_y = context -> gx_draw_context_offset_y;
+#else
jpeg_info -> gx_jpeg_output_width = (USHORT)context -> gx_draw_context_canvas -> gx_canvas_x_resolution;
jpeg_info -> gx_jpeg_output_height = (USHORT)context -> gx_draw_context_canvas -> gx_canvas_y_resolution;
+#endif
jpeg_info -> gx_jpeg_output_clip = *context -> gx_draw_context_clip;
diff --git a/common/src/gx_image_reader_start.c b/common/src/gx_image_reader_start.c
index 6249909f..e5d5bc63 100644
--- a/common/src/gx_image_reader_start.c
+++ b/common/src/gx_image_reader_start.c
@@ -292,7 +292,7 @@ static UINT _gx_image_reader_pixelmap_info_set(GX_IMAGE_READER *image_reader, GX
/* FUNCTION RELEASE */
/* */
/* _gx_image_reader_start PORTABLE C */
-/* 6.x */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -340,9 +340,9 @@ static UINT _gx_image_reader_pixelmap_info_set(GX_IMAGE_READER *image_reader, GX
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
-/* xx-xx-xxxx Ting Zhu Modified comment(s), */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
/* improved logic, */
-/* resulting in version 6.x */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_image_reader_start(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap)
diff --git a/common/src/gx_multi_line_text_button_text_set.c b/common/src/gx_multi_line_text_button_text_set.c
index 7ec818c2..83837125 100644
--- a/common/src/gx_multi_line_text_button_text_set.c
+++ b/common/src/gx_multi_line_text_button_text_set.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_multi_line_text_button_text_set PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -67,14 +67,24 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added return status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
#if defined(GX_ENABLE_DEPRECATED_STRING_API)
UINT _gx_multi_line_text_button_text_set(GX_MULTI_LINE_TEXT_BUTTON *button, GX_CONST GX_CHAR *text)
{
- _gx_text_button_text_set((GX_TEXT_BUTTON *)button, text);
- _gx_multi_line_text_button_line_pointers_set(button);
- return GX_SUCCESS;
+UINT status;
+
+ status = _gx_text_button_text_set((GX_TEXT_BUTTON *)button, text);
+
+ if (status == GX_SUCCESS)
+ {
+ _gx_multi_line_text_button_line_pointers_set(button);
+ }
+
+ return status;
}
#endif
@@ -83,7 +93,7 @@ UINT _gx_multi_line_text_button_text_set(GX_MULTI_LINE_TEXT_BUTTON *button, GX_
/* FUNCTION RELEASE */
/* */
/* _gx_multi_line_text_button_text_set_ext PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -117,11 +127,20 @@ UINT _gx_multi_line_text_button_text_set(GX_MULTI_LINE_TEXT_BUTTON *button, GX_
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added return status check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_multi_line_text_button_text_set_ext(GX_MULTI_LINE_TEXT_BUTTON *button, GX_CONST GX_STRING *text)
{
- _gx_text_button_text_set_ext((GX_TEXT_BUTTON *)button, text);
- _gx_multi_line_text_button_line_pointers_set(button);
- return GX_SUCCESS;
+UINT status;
+
+ status = _gx_text_button_text_set_ext((GX_TEXT_BUTTON *)button, text);
+
+ if (status == GX_SUCCESS)
+ {
+ _gx_multi_line_text_button_line_pointers_set(button);
+ }
+ return status;
}
diff --git a/common/src/gx_scrollbar_draw.c b/common/src/gx_scrollbar_draw.c
index 708d6832..ea0c62af 100644
--- a/common/src/gx_scrollbar_draw.c
+++ b/common/src/gx_scrollbar_draw.c
@@ -37,7 +37,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_scrollbar_draw PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -83,6 +83,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* improved logic, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
VOID _gx_scrollbar_draw(GX_SCROLLBAR *scrollbar)
@@ -216,13 +219,15 @@ GX_COLOR fill_color;
/* Reset dirty area temporarily to avoid cover the end pixelmap area. */
old_dirty = _gx_system_current_draw_context -> gx_draw_context_dirty;
- _gx_utility_rectangle_combine(&old_dirty, &size);
- _gx_system_current_draw_context -> gx_draw_context_dirty = size;
+ if(_gx_utility_rectangle_overlap_detect(&old_dirty, &size, &size) == GX_TRUE)
+ {
+ _gx_system_current_draw_context -> gx_draw_context_dirty = size;
- _gx_canvas_pixelmap_draw(xpos, ypos, map);
+ _gx_canvas_pixelmap_draw(xpos, ypos, map);
- /* Set dirty area back. */
- _gx_system_current_draw_context -> gx_draw_context_dirty = old_dirty;
+ /* Set dirty area back. */
+ _gx_system_current_draw_context -> gx_draw_context_dirty = old_dirty;
+ }
}
}
}
diff --git a/common/src/gx_system_canvas_refresh.c b/common/src/gx_system_canvas_refresh.c
index 70d5b213..d79691de 100644
--- a/common/src/gx_system_canvas_refresh.c
+++ b/common/src/gx_system_canvas_refresh.c
@@ -30,13 +30,217 @@
#include "gx_widget.h"
#include "gx_utility.h"
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gx_system_canvas_draw_partial_canvas PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function draws the dirty area of the specified canvas with */
+/* partial canvas buffer and toggle the dirty area to the display or */
+/* a composite canvas. */
+/* */
+/* INPUT */
+/* */
+/* None */
+/* */
+/* OUTPUT */
+/* */
+/* None */
+/* */
+/* CALLS */
+/* */
+/* _gx_system_dirty_list_trim Trim dirty area list */
+/* _gx_canvas_drawing_initiate Initiate drawing on canvas */
+/* _gx_widget_children_draw Draw widgets children */
+/* [gx_widget_draw_function] Call widget's drawing function*/
+/* _gx_canvas_drawing_complete Complete drawing on canvas */
+/* _gx_system_canvas_toggle Toggle the frame buffer */
+/* _gx_utility_rectangle_shift Shift a rectangle */
+/* */
+/* CALLED BY */
+/* */
+/* _gx_system_canvas_refresh */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+static UINT _gx_system_canvas_draw_partial_canvas(GX_WINDOW_ROOT *root)
+{
+UINT status = GX_SUCCESS;
+GX_RECTANGLE dirty_sum;
+GX_RECTANGLE dirty_frame;
+UINT index;
+GX_WIDGET *drawit;
+GX_DIRTY_AREA *dirty_list_entry;
+GX_CANVAS *canvas = root -> gx_window_root_canvas;
+GX_VALUE dirty_width;
+GX_VALUE dirty_height;
+
+#if defined(GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL) || defined(GX_CANVAS_REFRESH_DIRECTION_VERTICAL)
+GX_RECTANGLE dirty_mask;
+
+ if (_gx_system_dirty_list_trim(&dirty_sum, root) == GX_FALSE)
+ {
+ return GX_SUCCESS;
+ }
+
+ dirty_mask = dirty_sum;
+#endif
+
+ /* Refresh canvas in the dirty area. */
+ if (canvas -> gx_canvas_draw_count > 0)
+ {
+ _gx_system_dirty_partial_add((GX_WIDGET *)root, &canvas -> gx_canvas_dirty_area);
+ canvas -> gx_canvas_draw_count = 0;
+ }
+
+#if defined(GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL)
+ dirty_height = (GX_VALUE)(dirty_sum.gx_rectangle_bottom - dirty_sum.gx_rectangle_top + 1);
+ dirty_width = (GX_VALUE)(canvas -> gx_canvas_memory_size / canvas -> gx_canvas_display -> gx_display_driver_row_pitch_get((USHORT)dirty_height));
+ dirty_width = (GX_VALUE)(dirty_width & 0xFFFC);
+ dirty_mask.gx_rectangle_right = (GX_VALUE)(dirty_mask.gx_rectangle_left + dirty_width - 1);
+
+ while (dirty_mask.gx_rectangle_left <= dirty_sum.gx_rectangle_right)
+ {
+ if (dirty_mask.gx_rectangle_right > dirty_sum.gx_rectangle_right)
+ {
+ dirty_mask.gx_rectangle_right = dirty_sum.gx_rectangle_right;
+ }
+#elif defined(GX_CANVAS_REFRESH_DIRECTION_VERTICAL)
+ dirty_width = (GX_VALUE)(dirty_sum.gx_rectangle_right - dirty_sum.gx_rectangle_left + 1);
+ dirty_height = (GX_VALUE)(canvas -> gx_canvas_memory_size / canvas -> gx_canvas_display -> gx_display_driver_row_pitch_get((USHORT)((dirty_width + 3) & 0xFFFC)));
+ dirty_mask.gx_rectangle_bottom = (GX_VALUE)(dirty_mask.gx_rectangle_top + dirty_height - 1);
+
+ while (dirty_mask.gx_rectangle_top <= dirty_sum.gx_rectangle_bottom)
+ {
+ if (dirty_mask.gx_rectangle_bottom > dirty_sum.gx_rectangle_bottom)
+ {
+ dirty_mask.gx_rectangle_bottom = dirty_sum.gx_rectangle_bottom;
+ }
+#endif
+
+ /* Initialize dirty area pointers. */
+ dirty_list_entry = canvas -> gx_canvas_dirty_list;
+
+ /* Loop through dirty areas to redraw as needed. */
+ for (index = 0; index < canvas -> gx_canvas_dirty_count; index++)
+ {
+ /* Pickup widget associated with dirty area. */
+ drawit = dirty_list_entry -> gx_dirty_area_widget;
+
+ /* Is the widget pointer valid? */
+
+ if (drawit && (drawit -> gx_widget_status & GX_STATUS_VISIBLE))
+ {
+ /* if the object is transparent, we need to draw the parent.
+ This should not happen, because dircty_partial_add checks
+ for transparency, but just for safety we test again here */
+
+ if (drawit -> gx_widget_status & GX_STATUS_TRANSPARENT ||
+ drawit -> gx_widget_style & (GX_STYLE_BORDER_RAISED | GX_STYLE_BORDER_RECESSED))
+ {
+ while (drawit -> gx_widget_parent)
+ {
+ drawit = drawit -> gx_widget_parent;
+
+ if (!(drawit -> gx_widget_status & GX_STATUS_TRANSPARENT))
+ {
+ /* we need to start drawing at this non-transparent
+ background widget */
+
+ drawit -> gx_widget_status |= GX_STATUS_DIRTY;
+ break;
+ }
+ }
+ }
+
+#if defined(GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL) || defined(GX_CANVAS_REFRESH_DIRECTION_VERTICAL)
+ if (_gx_utility_rectangle_overlap_detect(&dirty_list_entry -> gx_dirty_area_rectangle, &dirty_mask, &dirty_frame) == GX_TRUE &&
+ _gx_utility_rectangle_overlap_detect(&dirty_frame, &drawit -> gx_widget_clip, &dirty_frame) == GX_TRUE)
+ {
+#else
+ dirty_sum = dirty_list_entry -> gx_dirty_area_rectangle;
+ if (_gx_utility_rectangle_overlap_detect(&dirty_sum, &drawit -> gx_widget_clip, &dirty_sum) == GX_TRUE)
+ {
+ dirty_frame = dirty_sum;
+
+ /* Split dirty area into small pieces. */
+ dirty_width = (GX_VALUE)(dirty_frame.gx_rectangle_right - dirty_frame.gx_rectangle_left + 1);
+ dirty_height = (GX_VALUE)(canvas -> gx_canvas_memory_size / canvas -> gx_canvas_display -> gx_display_driver_row_pitch_get((USHORT)((dirty_width + 3) & 0xFFFC)));
+ dirty_frame.gx_rectangle_bottom = (GX_VALUE)(dirty_frame.gx_rectangle_top + dirty_height - 1);
+
+ while (dirty_frame.gx_rectangle_top <= dirty_sum.gx_rectangle_bottom)
+ {
+ if (dirty_frame.gx_rectangle_bottom > dirty_sum.gx_rectangle_bottom)
+ {
+ dirty_frame.gx_rectangle_bottom = dirty_sum.gx_rectangle_bottom;
+ }
+#endif
+
+ /* Initiate drawing on this canvas. */
+ status = _gx_canvas_drawing_initiate(canvas, drawit, &dirty_frame);
+
+ if (status == GX_NO_VIEWS)
+ {
+ /* If we are attempting to draw the root window and it has no views,
+ just draw the children of the root */
+
+ if (drawit -> gx_widget_type == GX_TYPE_ROOT_WINDOW)
+ {
+ _gx_widget_children_draw(drawit);
+ }
+ }
+ else
+ {
+ drawit -> gx_widget_draw_function(drawit);
+ }
+
+ /* Indicate that drawing on this canvas is complete. */
+ _gx_canvas_drawing_complete(canvas, GX_TRUE);
+
+#if !defined(GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL) && !defined(GX_CANVAS_REFRESH_DIRECTION_VERTICAL)
+ _gx_utility_rectangle_shift(&dirty_frame, 0, dirty_height);
+ }
+#endif
+ }
+ }
+
+ /* Move to the next dirty area. */
+ dirty_list_entry++;
+ }
+
+#ifdef GX_CANVAS_REFRESH_DIRECTION_HORIZONTAL
+ _gx_utility_rectangle_shift(&dirty_mask, dirty_width, 0);
+}
+#elif defined(GX_CANVAS_REFRESH_DIRECTION_VERTICAL)
+ _gx_utility_rectangle_shift(&dirty_mask, 0, dirty_height);
+}
+#endif
+
+canvas -> gx_canvas_dirty_count = 0;
+
+return GX_SUCCESS;
+}
+#endif
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _gx_system_canvas_refresh PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -77,6 +281,10 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added partial canvas buffer */
+/* support, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_system_canvas_refresh(VOID)
@@ -119,6 +327,15 @@ GX_WINDOW_ROOT *root;
/* pick up the canvas pointer */
canvas = root -> gx_window_root_canvas;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ if (canvas -> gx_canvas_status & GX_CANVAS_PARTIAL_FRAME_BUFFER)
+ {
+ _gx_system_canvas_draw_partial_canvas(root);
+ root = (GX_WINDOW_ROOT *)root -> gx_widget_next;
+ continue;
+ }
+#endif
+
/* Trim any redundant dirty areas prior to doing the update. */
if (_gx_system_dirty_list_trim(&dirty_sum, root))
{
@@ -126,20 +343,20 @@ GX_WINDOW_ROOT *root;
_gx_canvas_drawing_initiate(canvas, (GX_WIDGET *)root, &dirty_sum);
/* Initialize dirty area pointers. */
- dirty = canvas -> gx_canvas_dirty_list;
+ dirty = canvas -> gx_canvas_dirty_list;
/* Loop through dirty areas to redraw as needed. */
for (index = 0; index < canvas -> gx_canvas_dirty_count; index++)
{
/* Pickup widget associated with dirty area. */
- drawit = dirty -> gx_dirty_area_widget;
+ drawit = dirty -> gx_dirty_area_widget;
/* Is the widget pointer valid? */
if (drawit)
{
/* if the object is transparent, we need to draw the parent.
- This should not happen, because dircty_partial_add checks
+ This should not happen, because dircty_partial_add checks
for transparency, but just for safety we test again here */
if (drawit -> gx_widget_status & GX_STATUS_TRANSPARENT)
@@ -152,7 +369,7 @@ GX_WINDOW_ROOT *root;
{
/* we need to start drawing at this non-transparent
background widget */
-
+
drawit -> gx_widget_status |= GX_STATUS_DIRTY;
break;
}
@@ -196,7 +413,7 @@ GX_WINDOW_ROOT *root;
if (_gx_canvas_composite_create(&canvas))
{
- if(canvas -> gx_canvas_draw_count > 0)
+ if (canvas -> gx_canvas_draw_count > 0)
{
canvas -> gx_canvas_display -> gx_display_driver_buffer_toggle(canvas, &canvas -> gx_canvas_dirty_area);
canvas -> gx_canvas_draw_count = 0;
diff --git a/common/src/gx_window_root_create.c b/common/src/gx_window_root_create.c
index 83f3c6ec..10ee979e 100644
--- a/common/src/gx_window_root_create.c
+++ b/common/src/gx_window_root_create.c
@@ -34,7 +34,7 @@
/* FUNCTION RELEASE */
/* */
/* _gx_window_root_create PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -74,6 +74,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* updated the link logic, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gx_window_root_create(GX_WINDOW_ROOT *root_window, GX_CONST GX_CHAR *name,
@@ -97,15 +100,21 @@ UINT _gx_window_root_create(GX_WINDOW_ROOT *root_window, GX_CONST GX_CHAR *name
root_window -> gx_widget_status &= ~GX_STATUS_MOVABLE;
root_window -> gx_widget_event_process_function = (UINT (*)(GX_WIDGET *, GX_EVENT *))_gx_window_root_event_process;
+ GX_ENTER_CRITICAL
+
if (_gx_system_root_window_created_list)
{
/* link this root to the one previously created */
root_window -> gx_widget_next = (GX_WIDGET *)_gx_system_root_window_created_list;
+
+ _gx_system_root_window_created_list -> gx_widget_previous = (GX_WIDGET *)root_window;
}
/* Update the root window pointer */
_gx_system_root_window_created_list = root_window;
+ GX_EXIT_CRITICAL
+
/* Return the status from window create. */
return(GX_SUCCESS);
}
diff --git a/common/src/gxe_animation_start.c b/common/src/gxe_animation_start.c
index ef517ccd..aeffe635 100644
--- a/common/src/gxe_animation_start.c
+++ b/common/src/gxe_animation_start.c
@@ -30,13 +30,15 @@
#include "gx_canvas.h"
#include "gx_animation.h"
+/* Bring in externs for caller checking code. */
+GX_CALLER_CHECKING_EXTERNS
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _gxe_animation_start PORTABLE C */
-/* 6.1.7 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -74,10 +76,15 @@
/* 06-02-2021 Ting Zhu Modified comment(s), */
/* removed unnecessary check, */
/* resulting in version 6.1.7 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added caller check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gxe_animation_start(GX_ANIMATION *animation, GX_ANIMATION_INFO *info)
{
+ /* Check for appropriate caller. */
+ GX_INIT_AND_THREADS_CALLER_CHECKING
if (animation == GX_NULL ||
info == GX_NULL)
diff --git a/common/src/gxe_binres_font_load.c b/common/src/gxe_binres_font_load.c
new file mode 100644
index 00000000..3dbbf681
--- /dev/null
+++ b/common/src/gxe_binres_font_load.c
@@ -0,0 +1,89 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) Microsoft Corporation. All rights reserved. */
+/* */
+/* This software is licensed under the Microsoft Software License */
+/* Terms for Microsoft Azure RTOS. Full text of the license can be */
+/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
+/* and in the root directory of this software. */
+/* */
+/**************************************************************************/
+
+
+/**************************************************************************/
+/**************************************************************************/
+/** */
+/** GUIX Component */
+/** */
+/** Binres Loader Management (Binres Loader) */
+/** */
+/**************************************************************************/
+
+#define GX_SOURCE_CODE
+
+
+/* Include necessary system files. */
+
+#include "gx_api.h"
+#include "gx_binres_loader.h"
+#include "gx_system.h"
+
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gxe_binres_font_load PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function checks for errors in binres font load function. */
+/* */
+/* INPUT */
+/* */
+/* root_address Pointer to the binary data */
+/* memory */
+/* font_index Resource index of the font */
+/* to be loaded */
+/* buffer Pointer to the buffer to */
+/* store the loaded font */
+/* buffer_size Size of the buffer. It will */
+/* be overwritten with the */
+/* required buffer size if the */
+/* input buffer size is */
+/* insufficient */
+/* */
+/* OUTPUT */
+/* */
+/* status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_font_load The actual binres font load */
+/* function */
+/* */
+/* CALLED BY */
+/* */
+/* Application Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+UINT _gxe_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size)
+{
+ if (root_address == GX_NULL || buffer == GX_NULL || buffer_size == GX_NULL)
+ {
+ return GX_PTR_ERROR;
+ }
+
+ return _gx_binres_font_load(root_address, font_index, buffer, buffer_size);
+}
+
diff --git a/common/src/gxe_binres_pixelmap_load.c b/common/src/gxe_binres_pixelmap_load.c
new file mode 100644
index 00000000..b62a28f9
--- /dev/null
+++ b/common/src/gxe_binres_pixelmap_load.c
@@ -0,0 +1,84 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) Microsoft Corporation. All rights reserved. */
+/* */
+/* This software is licensed under the Microsoft Software License */
+/* Terms for Microsoft Azure RTOS. Full text of the license can be */
+/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
+/* and in the root directory of this software. */
+/* */
+/**************************************************************************/
+
+
+/**************************************************************************/
+/**************************************************************************/
+/** */
+/** GUIX Component */
+/** */
+/** Binres Loader Management (Binres Loader) */
+/** */
+/**************************************************************************/
+
+#define GX_SOURCE_CODE
+
+
+/* Include necessary system files. */
+
+#include "gx_api.h"
+#include "gx_binres_loader.h"
+#include "gx_system.h"
+
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _gxe_binres_pixelmap_load PORTABLE C */
+/* 6.3.0 */
+/* AUTHOR */
+/* */
+/* Ting Zhu, Microsoft Corporation */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function checks for errors in binres pixelmap load function. */
+/* */
+/* INPUT */
+/* */
+/* root_address Pointer to the binary data */
+/* memory */
+/* map_index Resource index of the pixelmap*/
+/* to be loaded */
+/* pixelmap Pointer to the returned */
+/* pixelmap */
+/* */
+/* OUTPUT */
+/* */
+/* status Completion status */
+/* */
+/* CALLS */
+/* */
+/* _gx_binres_pixelmap_load The actual binres pixelmap */
+/* load function */
+/* */
+/* CALLED BY */
+/* */
+/* Application Code */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* 10-31-2023 Ting Zhu Initial Version 6.3.0 */
+/* */
+/**************************************************************************/
+UINT _gxe_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap)
+{
+ if (root_address == GX_NULL || pixelmap == GX_NULL)
+ {
+ return GX_PTR_ERROR;
+ }
+
+ return _gx_binres_pixelmap_load(root_address, map_index, pixelmap);
+}
+
diff --git a/common/src/gxe_canvas_create.c b/common/src/gxe_canvas_create.c
index a949d743..5010dfb4 100644
--- a/common/src/gxe_canvas_create.c
+++ b/common/src/gxe_canvas_create.c
@@ -38,7 +38,7 @@ GX_CALLER_CHECKING_EXTERNS
/* FUNCTION RELEASE */
/* */
/* _gxe_canvas_create PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -80,6 +80,10 @@ GX_CALLER_CHECKING_EXTERNS
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), verify */
+/* the memory size only when */
+/* memory_area is provided, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gxe_canvas_create(GX_CANVAS *canvas, GX_CONST GX_CHAR *name, GX_DISPLAY *display, UINT type,
@@ -109,10 +113,13 @@ UINT pitch;
return(GX_ALREADY_CREATED);
}
- pitch = (UINT)(display -> gx_display_driver_row_pitch_get((USHORT)width));
- if (memory_size < pitch * height)
+ if (memory_area)
{
- return GX_INVALID_SIZE;
+ pitch = (UINT)(display -> gx_display_driver_row_pitch_get((USHORT)width));
+ if (memory_size < pitch * height)
+ {
+ return GX_INVALID_SIZE;
+ }
}
if (type & (~((UINT)(GX_CANVAS_SIMPLE | GX_CANVAS_MANAGED | GX_CANVAS_VISIBLE |
diff --git a/common/src/gxe_checkbox_pixelmap_set.c b/common/src/gxe_checkbox_pixelmap_set.c
index 6b9c2798..77653cce 100644
--- a/common/src/gxe_checkbox_pixelmap_set.c
+++ b/common/src/gxe_checkbox_pixelmap_set.c
@@ -36,7 +36,7 @@
/* FUNCTION RELEASE */
/* */
/* _gxe_checkbox_pixelmap_set PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -80,6 +80,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added invalid widget check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gxe_checkbox_pixelmap_set(GX_CHECKBOX *checkbox,
@@ -96,6 +99,12 @@ UINT status;
return(GX_PTR_ERROR);
}
+ /* Check for the invalid widget. */
+ if (checkbox -> gx_widget_type == 0)
+ {
+ return(GX_INVALID_WIDGET);
+ }
+
status = _gx_checkbox_pixelmap_set(checkbox, unchecked_id, checked_id,
unchecked_disabled_id, checked_disabled_id);
diff --git a/common/src/gxe_scrollbar_reset.c b/common/src/gxe_scrollbar_reset.c
index ae5426e2..84b2ba5c 100644
--- a/common/src/gxe_scrollbar_reset.c
+++ b/common/src/gxe_scrollbar_reset.c
@@ -34,7 +34,7 @@ GX_CALLER_CHECKING_EXTERNS
/* FUNCTION RELEASE */
/* */
/* _gxe_scrollbar_reset PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -71,6 +71,8 @@ GX_CALLER_CHECKING_EXTERNS
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gxe_scrollbar_reset(GX_SCROLLBAR *scrollbar, GX_SCROLL_INFO *info)
@@ -92,7 +94,7 @@ UINT status;
return(GX_INVALID_WIDGET);
}
- /* Check fro valid scroll info. */
+ /* Check for valid scroll info. */
if ((info != GX_NULL) && ((info -> gx_scroll_value > info -> gx_scroll_maximum) ||
(info -> gx_scroll_value < info -> gx_scroll_minimum)))
{
diff --git a/common/src/gxe_text_input_cursor_height_set.c b/common/src/gxe_text_input_cursor_height_set.c
index 272e01f8..83d23645 100644
--- a/common/src/gxe_text_input_cursor_height_set.c
+++ b/common/src/gxe_text_input_cursor_height_set.c
@@ -33,7 +33,7 @@
/* FUNCTION RELEASE */
/* */
/* _gxe_text_input_cursor_height_set PORTABLE C */
-/* 6.1 */
+/* 6.3.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
@@ -71,6 +71,9 @@
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
/* 09-30-2020 Kenneth Maxwell Modified comment(s), */
/* resulting in version 6.1 */
+/* 10-31-2023 Ting Zhu Modified comment(s), */
+/* added invalid height check, */
+/* resulting in version 6.3.0 */
/* */
/**************************************************************************/
UINT _gxe_text_input_cursor_height_set(GX_TEXT_INPUT_CURSOR *cursor_ptr, GX_UBYTE height)
@@ -82,6 +85,11 @@ UINT status;
return(GX_PTR_ERROR);
}
+ if (height == 0)
+ {
+ return(GX_INVALID_VALUE);
+ }
+
status = _gx_text_input_cursor_height_set(cursor_ptr, height);
return(status);
diff --git a/ports/arc_em/metaware/inc/gx_port.h b/ports/arc_em/metaware/inc/gx_port.h
index a80e1ae6..92282b6a 100644
--- a/ports/arc_em/metaware/inc/gx_port.h
+++ b/ports/arc_em/metaware/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARCv2_EM/MetaWare Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARCv2_EM/MetaWare Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/arc_hs/metaware/inc/gx_port.h b/ports/arc_hs/metaware/inc/gx_port.h
index 3ae64ad1..4a607251 100644
--- a/ports/arc_hs/metaware/inc/gx_port.h
+++ b/ports/arc_hs/metaware/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARC_HS/MetaWare Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARC_HS/MetaWare Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/arm9/ac5/inc/gx_port.h b/ports/arm9/ac5/inc/gx_port.h
index 3e171353..8b6a8e6b 100644
--- a/ports/arm9/ac5/inc/gx_port.h
+++ b/ports/arm9/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/arm9/gnu/inc/gx_port.h b/ports/arm9/gnu/inc/gx_port.h
index f59db64d..93dbb649 100644
--- a/ports/arm9/gnu/inc/gx_port.h
+++ b/ports/arm9/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/arm9/iar/inc/gx_port.h b/ports/arm9/iar/inc/gx_port.h
index 13ad7876..1df67e7c 100644
--- a/ports/arm9/iar/inc/gx_port.h
+++ b/ports/arm9/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX ARM9/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/c667x/ccs/inc/gx_port.h b/ports/c667x/ccs/inc/gx_port.h
index 43a812c9..fa5c4c22 100644
--- a/ports/c667x/ccs/inc/gx_port.h
+++ b/ports/c667x/ccs/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX C6xxx/TI Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX C6xxx/TI Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/ccrx/inc/gx_port.h b/ports/ccrx/inc/gx_port.h
index 788cc188..344ee7ea 100644
--- a/ports/ccrx/inc/gx_port.h
+++ b/ports/ccrx/inc/gx_port.h
@@ -146,7 +146,7 @@ typedef unsigned char GX_UCHAR;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a15/gnu/inc/gx_port.h b/ports/cortex_a15/gnu/inc/gx_port.h
index 7bb35b1f..470e3829 100644
--- a/ports/cortex_a15/gnu/inc/gx_port.h
+++ b/ports/cortex_a15/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A15/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A15/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a5/ac5/inc/gx_port.h b/ports/cortex_a5/ac5/inc/gx_port.h
index 99194e7d..04c3ca9f 100644
--- a/ports/cortex_a5/ac5/inc/gx_port.h
+++ b/ports/cortex_a5/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a5/gnu/inc/gx_port.h b/ports/cortex_a5/gnu/inc/gx_port.h
index e50bacc0..664e9981 100644
--- a/ports/cortex_a5/gnu/inc/gx_port.h
+++ b/ports/cortex_a5/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a5/iar/inc/gx_port.h b/ports/cortex_a5/iar/inc/gx_port.h
index 23efdd68..c4436803 100644
--- a/ports/cortex_a5/iar/inc/gx_port.h
+++ b/ports/cortex_a5/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a5x/ac6/inc/gx_port.h b/ports/cortex_a5x/ac6/inc/gx_port.h
index 35a3a048..27144356 100644
--- a/ports/cortex_a5x/ac6/inc/gx_port.h
+++ b/ports/cortex_a5x/ac6/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5x/AC6 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A5x/AC6 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a7/ac5/inc/gx_port.h b/ports/cortex_a7/ac5/inc/gx_port.h
index 23d4ee4d..5ac2c25b 100644
--- a/ports/cortex_a7/ac5/inc/gx_port.h
+++ b/ports/cortex_a7/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a7/gnu/inc/gx_port.h b/ports/cortex_a7/gnu/inc/gx_port.h
index 7df4d128..0d735693 100644
--- a/ports/cortex_a7/gnu/inc/gx_port.h
+++ b/ports/cortex_a7/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a7/iar/inc/gx_port.h b/ports/cortex_a7/iar/inc/gx_port.h
index dd7b45c5..a03361b9 100644
--- a/ports/cortex_a7/iar/inc/gx_port.h
+++ b/ports/cortex_a7/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A7/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a8/ac5/inc/gx_port.h b/ports/cortex_a8/ac5/inc/gx_port.h
index 4c51b6d2..0d43226f 100644
--- a/ports/cortex_a8/ac5/inc/gx_port.h
+++ b/ports/cortex_a8/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a8/gnu/inc/gx_port.h b/ports/cortex_a8/gnu/inc/gx_port.h
index c6d16efc..e027fbe6 100644
--- a/ports/cortex_a8/gnu/inc/gx_port.h
+++ b/ports/cortex_a8/gnu/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a8/iar/inc/gx_port.h b/ports/cortex_a8/iar/inc/gx_port.h
index 45ab7f89..1c3cb53b 100644
--- a/ports/cortex_a8/iar/inc/gx_port.h
+++ b/ports/cortex_a8/iar/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A8/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a9/ac5/inc/gx_port.h b/ports/cortex_a9/ac5/inc/gx_port.h
index 4bc4a2a5..aa814818 100644
--- a/ports/cortex_a9/ac5/inc/gx_port.h
+++ b/ports/cortex_a9/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a9/gnu/inc/gx_port.h b/ports/cortex_a9/gnu/inc/gx_port.h
index c82df2f5..8ea10214 100644
--- a/ports/cortex_a9/gnu/inc/gx_port.h
+++ b/ports/cortex_a9/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_a9/iar/inc/gx_port.h b/ports/cortex_a9/iar/inc/gx_port.h
index 7878d648..6ea07762 100644
--- a/ports/cortex_a9/iar/inc/gx_port.h
+++ b/ports/cortex_a9/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-A9/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m0/ac5/inc/gx_port.h b/ports/cortex_m0/ac5/inc/gx_port.h
index 54b13553..faeb0141 100644
--- a/ports/cortex_m0/ac5/inc/gx_port.h
+++ b/ports/cortex_m0/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m0/gnu/inc/gx_port.h b/ports/cortex_m0/gnu/inc/gx_port.h
index 3460afd0..7068a1b8 100644
--- a/ports/cortex_m0/gnu/inc/gx_port.h
+++ b/ports/cortex_m0/gnu/inc/gx_port.h
@@ -143,7 +143,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m0/iar/inc/gx_port.h b/ports/cortex_m0/iar/inc/gx_port.h
index 6c7f4eb5..942afd48 100644
--- a/ports/cortex_m0/iar/inc/gx_port.h
+++ b/ports/cortex_m0/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M0/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m3/ac5/inc/gx_port.h b/ports/cortex_m3/ac5/inc/gx_port.h
index 1dd8b8fd..67898c48 100644
--- a/ports/cortex_m3/ac5/inc/gx_port.h
+++ b/ports/cortex_m3/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m3/gnu/inc/gx_port.h b/ports/cortex_m3/gnu/inc/gx_port.h
index 60aba6de..e36048b3 100644
--- a/ports/cortex_m3/gnu/inc/gx_port.h
+++ b/ports/cortex_m3/gnu/inc/gx_port.h
@@ -143,7 +143,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m3/iar/inc/gx_port.h b/ports/cortex_m3/iar/inc/gx_port.h
index 8b57502f..b8927bf0 100644
--- a/ports/cortex_m3/iar/inc/gx_port.h
+++ b/ports/cortex_m3/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m3/keil/inc/gx_port.h b/ports/cortex_m3/keil/inc/gx_port.h
index 6c1da67c..41d4aa5f 100644
--- a/ports/cortex_m3/keil/inc/gx_port.h
+++ b/ports/cortex_m3/keil/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/KEIL Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M3/KEIL Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m4/ac5/inc/gx_port.h b/ports/cortex_m4/ac5/inc/gx_port.h
index 1ade5370..00d3ef8e 100644
--- a/ports/cortex_m4/ac5/inc/gx_port.h
+++ b/ports/cortex_m4/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m4/gnu/inc/gx_port.h b/ports/cortex_m4/gnu/inc/gx_port.h
index adf0a399..563cc1bd 100644
--- a/ports/cortex_m4/gnu/inc/gx_port.h
+++ b/ports/cortex_m4/gnu/inc/gx_port.h
@@ -143,7 +143,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m4/iar/inc/gx_port.h b/ports/cortex_m4/iar/inc/gx_port.h
index 614315ff..90f0f01e 100644
--- a/ports/cortex_m4/iar/inc/gx_port.h
+++ b/ports/cortex_m4/iar/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m4/keil/inc/gx_port.h b/ports/cortex_m4/keil/inc/gx_port.h
index d0cfc37e..e433661b 100644
--- a/ports/cortex_m4/keil/inc/gx_port.h
+++ b/ports/cortex_m4/keil/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/KEIL Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M4/KEIL Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m7/ac5/inc/gx_port.h b/ports/cortex_m7/ac5/inc/gx_port.h
index 6a76b93a..569bb005 100644
--- a/ports/cortex_m7/ac5/inc/gx_port.h
+++ b/ports/cortex_m7/ac5/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m7/gnu/inc/gx_port.h b/ports/cortex_m7/gnu/inc/gx_port.h
index 33d1492b..6f3bd4d3 100644
--- a/ports/cortex_m7/gnu/inc/gx_port.h
+++ b/ports/cortex_m7/gnu/inc/gx_port.h
@@ -143,7 +143,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_m7/iar/inc/gx_port.h b/ports/cortex_m7/iar/inc/gx_port.h
index b2eecebd..99203484 100644
--- a/ports/cortex_m7/iar/inc/gx_port.h
+++ b/ports/cortex_m7/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-M7/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r4/ac5/inc/gx_port.h b/ports/cortex_r4/ac5/inc/gx_port.h
index 6cbc7b9d..5cbd9ac9 100644
--- a/ports/cortex_r4/ac5/inc/gx_port.h
+++ b/ports/cortex_r4/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r4/ac6/inc/gx_port.h b/ports/cortex_r4/ac6/inc/gx_port.h
index 41121c99..0a729580 100644
--- a/ports/cortex_r4/ac6/inc/gx_port.h
+++ b/ports/cortex_r4/ac6/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/AC6 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/AC6 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r4/gnu/inc/gx_port.h b/ports/cortex_r4/gnu/inc/gx_port.h
index 09365eac..8d6a0b79 100644
--- a/ports/cortex_r4/gnu/inc/gx_port.h
+++ b/ports/cortex_r4/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r4/iar/inc/gx_port.h b/ports/cortex_r4/iar/inc/gx_port.h
index 4d21c965..7402feb7 100644
--- a/ports/cortex_r4/iar/inc/gx_port.h
+++ b/ports/cortex_r4/iar/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R4/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r5/ac5/inc/gx_port.h b/ports/cortex_r5/ac5/inc/gx_port.h
index ba048c99..05b26b4d 100644
--- a/ports/cortex_r5/ac5/inc/gx_port.h
+++ b/ports/cortex_r5/ac5/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/AC5 Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/AC5 Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r5/gnu/inc/gx_port.h b/ports/cortex_r5/gnu/inc/gx_port.h
index 6a583a01..ec007c07 100644
--- a/ports/cortex_r5/gnu/inc/gx_port.h
+++ b/ports/cortex_r5/gnu/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/cortex_r5/iar/inc/gx_port.h b/ports/cortex_r5/iar/inc/gx_port.h
index f77937a7..ab4ba519 100644
--- a/ports/cortex_r5/iar/inc/gx_port.h
+++ b/ports/cortex_r5/iar/inc/gx_port.h
@@ -139,7 +139,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/IAR Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Cortex-R5/IAR Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/generic/inc/gx_port.h b/ports/generic/inc/gx_port.h
index 5842a97a..6a6ad668 100644
--- a/ports/generic/inc/gx_port.h
+++ b/ports/generic/inc/gx_port.h
@@ -144,7 +144,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/linux/gnu/inc/gx_port.h b/ports/linux/gnu/inc/gx_port.h
index fa788f25..dd3f7081 100644
--- a/ports/linux/gnu/inc/gx_port.h
+++ b/ports/linux/gnu/inc/gx_port.h
@@ -137,7 +137,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Linux/GNU Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Linux/GNU Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/win32/build/vs_2019/guix.vcxproj b/ports/win32/build/vs_2019/guix.vcxproj
index 51f153f1..f4070fa7 100644
--- a/ports/win32/build/vs_2019/guix.vcxproj
+++ b/ports/win32/build/vs_2019/guix.vcxproj
@@ -13,6 +13,14 @@
Debug_GX_DYNAMIC_BIDI_TEXT_SUPPORT
Win32
+
+ Debug_GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ Win32
+
+
+ Debug_GX_EXTENDED_UNICODE_SUPPORT
+ Win32
+
Debug_GX_FONT_KERNING_SUPPORT
Win32
@@ -40,6 +48,8 @@
+
+
@@ -53,6 +63,8 @@
+
+
@@ -1229,6 +1241,7 @@
+
@@ -1422,6 +1435,18 @@
MultiByte
v142
+
+ StaticLibrary
+ true
+ MultiByte
+ v142
+
+
+ StaticLibrary
+ true
+ MultiByte
+ v142
+
StaticLibrary
true
@@ -1477,6 +1502,12 @@
+
+
+
+
+
+
@@ -1506,6 +1537,14 @@
$(ProjectDir)$(Configuration)\
gx
+
+ $(ProjectDir)$(Configuration)\
+ gx
+
+
+ $(ProjectDir)$(Configuration)\
+ gx
+
$(ProjectDir)$(Configuration)\
gx
@@ -1560,6 +1599,50 @@
$(OutDir)$(TargetName).bsc
+
+
+ NotUsing
+ Level3
+ Disabled
+ $(DefineConstants);WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GX_ANIMATION_POOL_SIZE=16;GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER;%(PreprocessorDefinitions)
+ ..\..\..\tx;%(AdditionalIncludeDirectories)
+ false
+ true
+ false
+ ..\..\lib\vs_2019;..\..\inc;..\..\inc\synergy;..\..\..\..\common\inc
+ true
+ MultiThreadedDebug
+
+
+ Windows
+ true
+
+
+ $(OutDir)$(TargetName).bsc
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ $(DefineConstants);WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GX_ANIMATION_POOL_SIZE=16;GX_EXTENDED_UNICODE_SUPPORT;%(PreprocessorDefinitions)
+ ..\..\..\tx;%(AdditionalIncludeDirectories)
+ false
+ true
+ false
+ ..\..\lib\vs_2019;..\..\inc;..\..\inc\synergy;..\..\..\..\common\inc
+ true
+ MultiThreadedDebug
+
+
+ Windows
+ true
+
+
+ $(OutDir)$(TargetName).bsc
+
+
NotUsing
diff --git a/ports/win32/inc/gx_port.h b/ports/win32/inc/gx_port.h
index ea9e1e42..d0a3792d 100644
--- a/ports/win32/inc/gx_port.h
+++ b/ports/win32/inc/gx_port.h
@@ -170,7 +170,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Win32/Visual Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Win32/Visual Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/ports/win32/lib/vs_2019/tx_port.h b/ports/win32/lib/vs_2019/tx_port.h
index 622a52b0..4bfcc8af 100644
--- a/ports/win32/lib/vs_2019/tx_port.h
+++ b/ports/win32/lib/vs_2019/tx_port.h
@@ -419,7 +419,7 @@ VOID _tx_thread_interrupt_restore(UINT previous_posture);
#ifdef TX_THREAD_INIT
CHAR _tx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX Win32/Visual Studio Version 6.1.12 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX Win32/Visual Studio Version 6.3.0 *";
#else
extern CHAR _tx_version_id[];
#endif
diff --git a/ports/win32/src/gx_win32_display_driver.c b/ports/win32/src/gx_win32_display_driver.c
index a9810d1b..ffee797c 100644
--- a/ports/win32/src/gx_win32_display_driver.c
+++ b/ports/win32/src/gx_win32_display_driver.c
@@ -1302,33 +1302,35 @@ VOID *memptr;
return;
}
- /* Driver just becomes ready. So we need to refresh the whole display. */
- if (driver_instance -> win32_driver_ready == 1)
- {
- gx_utility_rectangle_define(&canvas -> gx_canvas_dirty_area, 0, 0,
- canvas -> gx_canvas_x_resolution - 1,
- canvas -> gx_canvas_y_resolution - 1);
- driver_instance -> win32_driver_ready = 2;
- }
-
gx_utility_rectangle_define(&Limit, 0, 0,
canvas -> gx_canvas_x_resolution - 1,
canvas -> gx_canvas_y_resolution - 1);
- if (gx_utility_rectangle_overlap_detect(&Limit, &canvas -> gx_canvas_dirty_area, &Copy))
+ if (gx_utility_rectangle_overlap_detect(&Limit, dirty, &Copy))
{
memptr = _win32_canvas_memory_prepare(canvas, &Copy);
- INT xsrc = Copy.gx_rectangle_left;
- INT ysrc = Copy.gx_rectangle_top;
-
- gx_utility_rectangle_shift(&Copy, canvas -> gx_canvas_display_offset_x, canvas -> gx_canvas_display_offset_y);
+ INT xsrc;
+ INT ysrc;
- win_device = GetDC(driver_instance -> win32_driver_winhandle);
+ win_device = GetDC(driver_instance->win32_driver_winhandle);
SetMapMode(win_device, MM_TEXT);
- driver_instance -> win32_driver_bmpinfo.gx_bmp_header.biWidth = canvas -> gx_canvas_x_resolution;
- driver_instance -> win32_driver_bmpinfo.gx_bmp_header.biHeight = canvas -> gx_canvas_y_resolution;
+#ifdef GX_ENABLE_CANVAS_PARTIAL_FRAME_BUFFER
+ xsrc = Copy.gx_rectangle_left - canvas->gx_canvas_memory_offset_x;
+ ysrc = Copy.gx_rectangle_top - canvas->gx_canvas_memory_offset_y;
+
+ driver_instance->win32_driver_bmpinfo.gx_bmp_header.biWidth = canvas->gx_canvas_memory_width;
+ driver_instance->win32_driver_bmpinfo.gx_bmp_header.biHeight = canvas->gx_canvas_memory_height;
+#else
+ xsrc = Copy.gx_rectangle_left;
+ ysrc = Copy.gx_rectangle_top;
+
+ driver_instance->win32_driver_bmpinfo.gx_bmp_header.biWidth = canvas->gx_canvas_x_resolution;
+ driver_instance->win32_driver_bmpinfo.gx_bmp_header.biHeight = canvas->gx_canvas_y_resolution;
+#endif
+
+ gx_utility_rectangle_shift(&Copy, canvas->gx_canvas_display_offset_x, canvas->gx_canvas_display_offset_y);
Top = Copy.gx_rectangle_top;
Left = Copy.gx_rectangle_left;
diff --git a/ports/win32/vs_2019_standalone/inc/gx_port.h b/ports/win32/vs_2019_standalone/inc/gx_port.h
index 6376d664..20aaa4ae 100644
--- a/ports/win32/vs_2019_standalone/inc/gx_port.h
+++ b/ports/win32/vs_2019_standalone/inc/gx_port.h
@@ -100,7 +100,7 @@ typedef SHORT GX_VALUE;
#ifdef GX_SYSTEM_INIT
CHAR _gx_version_id[] =
- "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Win32/Standalone/Visual Version 6.2.1 *";
+ "Copyright (c) Microsoft Corporation. All rights reserved. * GUIX Win32/Standalone/Visual Version 6.3.0 *";
#else
extern CHAR _gx_version_id[];
#endif
diff --git a/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.sln b/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.sln
new file mode 100644
index 00000000..a1ea1127
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29905.134
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "guix", "..\..\..\..\ports\win32\build\vs_2019\guix.vcxproj", "{A3336F4F-7A7B-46D3-A7F0-A2AAED6C08ED}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demo_guix_binres_standalone", "demo_guix_binres_standalone.vcxproj", "{10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A3336F4F-7A7B-46D3-A7F0-A2AAED6C08ED}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A3336F4F-7A7B-46D3-A7F0-A2AAED6C08ED}.Debug|Win32.Build.0 = Debug|Win32
+ {A3336F4F-7A7B-46D3-A7F0-A2AAED6C08ED}.Release|Win32.ActiveCfg = Release|Win32
+ {A3336F4F-7A7B-46D3-A7F0-A2AAED6C08ED}.Release|Win32.Build.0 = Release|Win32
+ {10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}.Debug|Win32.Build.0 = Debug|Win32
+ {10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}.Release|Win32.ActiveCfg = Release|Win32
+ {10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {2BA427AA-80DB-4588-A3AC-D9AB4C83970D}
+ EndGlobalSection
+EndGlobal
diff --git a/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.vcxproj b/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.vcxproj
new file mode 100644
index 00000000..11c968dc
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/build/vs_2019/demo_guix_binres_standalone.vcxproj
@@ -0,0 +1,103 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+
+ {a3336f4f-7a7b-46d3-a7f0-a2aaed6c08ed}
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ {10B36C4C-FA91-4491-8B51-EA4F5BABEB6B}
+ Win32Proj
+ medical
+
+
+
+ Application
+ true
+ Unicode
+ v142
+
+
+ Application
+ false
+ true
+ Unicode
+ v142
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_WINDOWS;GX_EXTERNAL_RESOURCE_BUFFER_SIZE=1024;GX_EXTERNAL_RESOURCE_SUPPORT;%(PreprocessorDefinitions)
+ ..\..\..\..\common\inc;../../../../ports/win32/lib/vs_2019;..\include;..\..\..\..\ports\win32\inc
+ MultiThreadedDebug
+
+
+ Windows
+ true
+ ../../../../ports/win32/lib/vs_2019;$(SolutionDir)/../../../../ports/win32/build/vs_2019/$(Configuration)
+ gx.lib;tx.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ ..\..\..\..\common\inc;../../../../ports/win32/lib/vs_2019;..\include;..\..\..\..\ports\win32\inc
+
+
+ Windows
+ true
+ true
+ true
+ ../../../../ports/win32/lib/vs_2019;$(SolutionDir)/../../../../ports/win32/build/vs_2019/$(Configuration)
+ gx.lib;tx.lib;%(AdditionalDependencies)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.c b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.c
new file mode 100644
index 00000000..80f32f27
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.c
@@ -0,0 +1,231 @@
+/* This is a small demo of the high-performance GUIX graphics framework. */
+
+#include
+#include
+#include "gx_api.h"
+
+#include "demo_guix_binres_standalone_resources.h"
+#include "demo_guix_binres_standalone_specifications.h"
+
+#define FONT_BUFFER_SIZE 5120
+#define GUIX_POOL_SIZE (640*480)
+
+/* Define variables. */
+GX_WINDOW_ROOT* root;
+TX_THREAD demo_thread;
+ULONG demo_thread_stack[1024];
+TX_BYTE_POOL memory_pool;
+UCHAR guix_pool_memory[GUIX_POOL_SIZE];
+GX_PIXELMAP pixelmap_red_apple;
+GX_UBYTE font_vera_buffer[FONT_BUFFER_SIZE];
+VOID *root_address_pixelmap_red_apple = GX_NULL;
+VOID *root_address_font_vera = GX_NULL;
+
+/* Define prototypes. */
+extern UINT win32_graphics_driver_setup_565rgb(GX_DISPLAY *display);
+VOID demo_thread_entry(ULONG thread_input);
+VOID *load_binary_resource_data_to_ram(GX_CHAR* pathname);
+UINT load_standalone_resources();
+
+/************************************************************************************/
+/* Program entry. */
+/************************************************************************************/
+int main(int argc, char ** argv)
+{
+ tx_kernel_enter();
+ return(0);
+}
+
+/************************************************************************************/
+/* User defined memory allocate function. */
+/************************************************************************************/
+VOID* memory_allocate(ULONG size)
+{
+ VOID* memptr;
+
+ if (tx_byte_allocate(&memory_pool, &memptr, size, TX_NO_WAIT) == TX_SUCCESS)
+ {
+ return memptr;
+ }
+
+ return NULL;
+}
+
+/************************************************************************************/
+/* User defined memory free function. */
+/************************************************************************************/
+VOID memory_free(VOID* mem)
+{
+ tx_byte_release(mem);
+}
+
+/************************************************************************************/
+/* Define system initialization. */
+/************************************************************************************/
+VOID tx_application_define(void *first_unused_memory)
+{
+ tx_thread_create(&demo_thread, "Demo Thread", demo_thread_entry, 0,
+ demo_thread_stack, sizeof(demo_thread_stack),
+ GX_SYSTEM_THREAD_PRIORITY + 1,
+ GX_SYSTEM_THREAD_PRIORITY + 1, TX_NO_TIME_SLICE, TX_AUTO_START);
+}
+
+/************************************************************************************/
+/* Demo thread entry. */
+/************************************************************************************/
+VOID demo_thread_entry(ULONG thread_input)
+{
+ /* Initialize GUIX. */
+ gx_system_initialize();
+
+ /* Create byte pool. */
+ tx_byte_pool_create(&memory_pool, "guix_pool_memory", guix_pool_memory, GUIX_POOL_SIZE);
+
+ /* Configure display. */
+ gx_studio_display_configure(MAIN_DISPLAY, win32_graphics_driver_setup_565rgb,
+ LANGUAGE_ENGLISH, MAIN_DISPLAY_THEME_1, &root);
+
+ /* Create the main screen. */
+ gx_studio_named_widget_create("main_screen", (GX_WIDGET*)root, GX_NULL);
+
+ /* Load standalone resources. */
+ if (load_standalone_resources() != GX_SUCCESS)
+ {
+ return;
+ }
+
+ /* Show the root window to make it and patients screen visible. */
+ gx_widget_show(root);
+
+ /* Start GUIX thread. */
+ gx_system_start();
+}
+
+/************************************************************************************/
+/* Load binary resource data into ram. */
+/* This is an example of how an application might load a binary resource data */
+/* file to RAM (or FLASH) from a local filesystem. In this case we are using */
+/* generic ANSI file I/O to read the resource data file. */
+/* */
+/* Note that for a typical embedded target, this step is not required. For most */
+/* targets, the binary resource data has been directly programmed to FLASH rather */
+/* than saved in a filesytem. */
+/************************************************************************************/
+VOID *load_binary_resource_data_to_ram(GX_CHAR *pathname)
+{
+ UCHAR *address = GX_NULL;
+
+ /* If generated resource is stored in a FAT filesystem, it must be
+ loaded into memory before it can be used. This memory could be
+ RAM or FLASH, but for the purpose of this example will simply
+ read the file to RAM. */
+ FILE *p_file;
+ size_t total_length;
+
+ p_file = fopen(pathname, "rb");
+
+ if (p_file)
+ {
+ fseek(p_file, 0, SEEK_END);
+ total_length = ftell(p_file);
+ fseek(p_file, SEEK_SET, SEEK_SET);
+
+ address = memory_allocate(total_length);
+
+ if (address)
+ {
+ fread(address, 1, total_length, p_file);
+ }
+
+ fclose(p_file);
+ }
+
+ return address;
+}
+
+/************************************************************************************/
+/* Load font and pixelmap resources from standalone binary data. */
+/************************************************************************************/
+UINT load_standalone_resources()
+{
+ UINT status;
+ ULONG buffer_size;
+
+ /* Load binary file into ram. */
+ root_address_pixelmap_red_apple = load_binary_resource_data_to_ram("..\\..\\pixelmap_red_apple.bin");
+
+ if (!root_address_pixelmap_red_apple)
+ {
+ return GX_FAILURE;
+ }
+
+ /* Load binary file into ram. */
+ root_address_font_vera = load_binary_resource_data_to_ram("..\\..\\font_vera.bin");
+
+ if (!root_address_font_vera)
+ {
+ return GX_FAILURE;
+ }
+
+ /* Load a pixelmap from the standalone binary data. */
+ status = gx_binres_pixelmap_load(root_address_pixelmap_red_apple, 0, &pixelmap_red_apple);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ buffer_size = FONT_BUFFER_SIZE;
+
+ /* Load a font from the standalone binary data. */
+ status = gx_binres_font_load(root_address_font_vera, 0, font_vera_buffer, &buffer_size);
+
+ if (status != GX_SUCCESS)
+ {
+ return status;
+ }
+
+ return status;
+}
+
+/************************************************************************************/
+/* Define the custom drawing function for the "pixelmap_window" widget. */
+/************************************************************************************/
+VOID pixelmap_window_draw(GX_WINDOW *window)
+{
+ GX_RECTANGLE *client = &window->gx_window_client;;
+
+ /* Draw the window's background. */
+ gx_window_background_draw(window);
+
+ /* Draw a pixlemap. */
+ gx_canvas_pixelmap_draw(client->gx_rectangle_left, client->gx_rectangle_top, &pixelmap_red_apple);
+}
+
+/************************************************************************************/
+/* Define the custom drawing function for the "prompt" widget. */
+/************************************************************************************/
+VOID text_draw(GX_PROMPT *prompt)
+{
+ GX_BRUSH* brush;
+ GX_RECTANGLE* size = &prompt->gx_widget_size;
+ GX_STRING string;
+
+ /* Draw the promt's background. */
+ gx_widget_background_draw(prompt);
+
+ /* Retrieve the context brush. */
+ gx_context_brush_get(&brush);
+
+ /* Set text font. */
+ brush->gx_brush_font = (GX_FONT*)font_vera_buffer;
+
+ /* Set text color. */
+ gx_context_line_color_set(GX_COLOR_ID_TEXT);
+
+ /* Get text. */
+ gx_context_string_get_ext(prompt->gx_prompt_text_id, &string);
+
+ /* Draw text. */
+ gx_canvas_aligned_text_draw(&string, size, GX_STYLE_TEXT_CENTER);
+}
\ No newline at end of file
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.gxp b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.gxp
new file mode 100644
index 00000000..03ef33e7
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone.gxp
@@ -0,0 +1,5260 @@
+
+
+
+
+56
+60201
+6020105
+demo_guix_binres_standalone
+.\
+.\
+.\
+FALSE
+0
+0
+FALSE
+FALSE
+0
+0
+FALSE
+FALSE
+FALSE
+10
+10
+FALSE
+1
+0
+TRUE
+FALSE
+0
+0
+FALSE
+8
+1
+4
+1
+
+English
+FALSE
+FALSE
+FALSE
+FALSE
+TRUE
+
+
+0
+1
+2
+.\
+STRING_EXPORT_TYPE_XLIFF
+
+
+
+0
+main_display
+640
+480
+16
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+TRUE
+TRUE
+None
+TRUE
+
+1
+0
+theme_1
+TRUE
+TRUE
+TRUE
+TRUE
+TRUE
+
+
+HEADER
+theme_1
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+THEME_HEADER
+
+
+GROUP
+Colors
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+COLOR_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_COLOR_FOLDER
+
+COLOR
+CANVAS
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4278190080
+
+
+COLOR
+WIDGET_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4286086264
+
+
+COLOR
+WINDOW_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4293059298
+
+
+COLOR
+DEFAULT_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4288387955
+
+
+COLOR
+WINDOW_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4285897130
+
+
+COLOR
+TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4292467161
+
+
+COLOR
+SELECTED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+SELECTED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4278190264
+
+
+COLOR
+SHADOW
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4286611584
+
+
+COLOR
+SHINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4292532954
+
+
+COLOR
+BTN_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4292919392
+
+
+COLOR
+BTN_UPPER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294506720
+
+
+COLOR
+BTN_LOWER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294503600
+
+
+COLOR
+BTN_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4278190080
+
+
+COLOR
+SCROLL_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4293449976
+
+
+COLOR
+SCROLL_BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4293446832
+
+
+COLOR
+TEXT_INPUT_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+TEXT_INPUT_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4293059298
+
+
+COLOR
+SLIDER_TICK
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4278190080
+
+
+COLOR
+SLIDER_GROOVE_TOP
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4290822336
+
+
+COLOR
+SLIDER_GROOVE_BOTTOM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+SLIDER_NEEDLE_OUTLINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4278190080
+
+
+COLOR
+SLIDER_NEEDLE_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4286611584
+
+
+COLOR
+SLIDER_NEEDLE_LINE1
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4290822336
+
+
+COLOR
+SLIDER_NEEDLE_LINE2
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4292919392
+
+
+COLOR
+DISABLED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4288716960
+
+
+COLOR
+DISABLED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4286086264
+
+
+COLOR
+READONLY_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+READONLY_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4286086264
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_COLOR_FOLDER
+
+Add New Color
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+COLOR
+BLUE
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+4278223103
+
+
+
+
+GROUP
+Fonts
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+FONT_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_FONT_FOLDER
+
+FONT
+SYSTEM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+PROMPT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+TEXT_INPUT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_FONT_FOLDER
+
+Add New Font
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+FONT
+VERA
+
+..\..\fonts\verasans\Vera.ttf
+project_relative
+
+FALSE
+TRUE
+FALSE
+20
+8
+FALSE
+FALSE
+FALSE
+TRUE
+font_vera
+TRUE
+
+TRUE
+32
+126
+FALSE
+128
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1536
+1791
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+
+
+GROUP
+Pixelmaps
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+PIXELMAP_GROUP
+
+FOLDER
+System
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_PIXELMAP_FOLDER
+
+PIXELMAP
+RADIO_ON
+
+project_relative
+
+TRUE
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+RADIO_OFF
+
+project_relative
+
+TRUE
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_ON
+
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_OFF
+
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_PIXELMAP_FOLDER
+
+Add New Pixelmap
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+PIXELMAP
+MS_AZURE_LOGO
+
+graphics\MS-Azure_logo.png
+project_relative
+
+FALSE
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+RED_APPLE
+
+graphics\red_apple.png
+project_relative
+
+FALSE
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+TRUE
+pixelmap_red_apple
+TRUE
+None
+
+
+
+
+GROUP
+Strings
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+STRING_GROUP
+
+Add New String
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+Add New String
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+17170432
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+33947648
+
+
+
+TRUE
+
+2
+2
+1
+
+STRING_1
+0
+Hello World!
+
+
+
+default_folder
+
+window
+main_screen
+
+0
+0
+639
+479
+
+
+0
+TRUE
+CANVAS
+CANVAS
+CANVAS
+FALSE
+FALSE
+
+icon
+express_logo
+
+18
+18
+206
+47
+
+
+0
+TRUE
+WIDGET_FILL
+SELECTED_FILL
+WIDGET_FILL
+FALSE
+FALSE
+MS_AZURE_LOGO
+
+
+window
+pixelmap_window
+
+114
+98
+310
+366
+
+
+0
+TRUE
+WINDOW_FILL
+WINDOW_FILL
+DISABLED_FILL
+pixelmap_window_draw
+FALSE
+FALSE
+
+
+prompt
+prompt
+
+388
+107
+541
+151
+
+
+0
+TRUE
+WIDGET_FILL
+SELECTED_FILL
+DISABLED_FILL
+text_draw
+FALSE
+FALSE
+STRING_1
+SYSTEM
+TEXT
+SELECTED_TEXT
+DISABLED_TEXT
+
+
+
+
+
+1
+display_2
+320
+240
+32
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+TRUE
+FALSE
+None
+FALSE
+
+1
+0
+default_theme
+TRUE
+TRUE
+TRUE
+FALSE
+TRUE
+
+
+HEADER
+default_theme
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+THEME_HEADER
+
+
+GROUP
+Colors
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+COLOR_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_COLOR_FOLDER
+
+COLOR
+CANVAS
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+WIDGET_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+WINDOW_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+DEFAULT_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10197875
+
+
+COLOR
+WINDOW_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7707050
+
+
+COLOR
+TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SELECTED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SELECTED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+184
+
+
+COLOR
+SHADOW
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SHINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14342874
+
+
+COLOR
+BTN_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+BTN_UPPER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16316640
+
+
+COLOR
+BTN_LOWER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16313520
+
+
+COLOR
+BTN_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SCROLL_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15259896
+
+
+COLOR
+SCROLL_BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15256752
+
+
+COLOR
+TEXT_INPUT_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+TEXT_INPUT_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+SLIDER_TICK
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_GROOVE_TOP
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_GROOVE_BOTTOM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SLIDER_NEEDLE_OUTLINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_NEEDLE_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SLIDER_NEEDLE_LINE1
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_NEEDLE_LINE2
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+DISABLED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10526880
+
+
+COLOR
+DISABLED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+READONLY_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+READONLY_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_COLOR_FOLDER
+
+Add New Color
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Fonts
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+FONT_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_FONT_FOLDER
+
+FONT
+SYSTEM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+PROMPT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+TEXT_INPUT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_FONT_FOLDER
+
+Add New Font
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Pixelmaps
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+PIXELMAP_GROUP
+
+FOLDER
+System
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_PIXELMAP_FOLDER
+
+PIXELMAP
+RADIO_ON
+
+..\..\graphics\system_png\radiobutton_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+RADIO_OFF
+
+..\..\graphics\system_png\radiobutton_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_ON
+
+..\..\graphics\system_png\checkbox_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_OFF
+
+..\..\graphics\system_png\checkbox_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_PIXELMAP_FOLDER
+
+Add New Pixelmap
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Strings
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+STRING_GROUP
+
+Add New String
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+17170432
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+33947648
+
+
+
+TRUE
+
+default_folder
+
+
+
+2
+display_3
+320
+240
+32
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+TRUE
+FALSE
+None
+FALSE
+
+1
+0
+default_theme
+TRUE
+TRUE
+TRUE
+FALSE
+TRUE
+
+
+HEADER
+default_theme
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+THEME_HEADER
+
+
+GROUP
+Colors
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+COLOR_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_COLOR_FOLDER
+
+COLOR
+CANVAS
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+WIDGET_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+WINDOW_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+DEFAULT_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10197875
+
+
+COLOR
+WINDOW_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7707050
+
+
+COLOR
+TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SELECTED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SELECTED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+184
+
+
+COLOR
+SHADOW
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SHINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14342874
+
+
+COLOR
+BTN_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+BTN_UPPER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16316640
+
+
+COLOR
+BTN_LOWER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16313520
+
+
+COLOR
+BTN_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SCROLL_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15259896
+
+
+COLOR
+SCROLL_BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15256752
+
+
+COLOR
+TEXT_INPUT_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+TEXT_INPUT_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+SLIDER_TICK
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_GROOVE_TOP
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_GROOVE_BOTTOM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SLIDER_NEEDLE_OUTLINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_NEEDLE_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SLIDER_NEEDLE_LINE1
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_NEEDLE_LINE2
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+DISABLED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10526880
+
+
+COLOR
+DISABLED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+READONLY_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+READONLY_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_COLOR_FOLDER
+
+Add New Color
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Fonts
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+FONT_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_FONT_FOLDER
+
+FONT
+SYSTEM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+PROMPT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+TEXT_INPUT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_FONT_FOLDER
+
+Add New Font
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Pixelmaps
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+PIXELMAP_GROUP
+
+FOLDER
+System
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_PIXELMAP_FOLDER
+
+PIXELMAP
+RADIO_ON
+
+..\..\graphics\system_png\radiobutton_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+RADIO_OFF
+
+..\..\graphics\system_png\radiobutton_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_ON
+
+..\..\graphics\system_png\checkbox_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_OFF
+
+..\..\graphics\system_png\checkbox_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_PIXELMAP_FOLDER
+
+Add New Pixelmap
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Strings
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+STRING_GROUP
+
+Add New String
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+17170432
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+33947648
+
+
+
+TRUE
+
+default_folder
+
+
+
+3
+display_4
+320
+240
+32
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+TRUE
+FALSE
+None
+FALSE
+
+1
+0
+default_theme
+TRUE
+TRUE
+TRUE
+FALSE
+TRUE
+
+
+HEADER
+default_theme
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+THEME_HEADER
+
+
+GROUP
+Colors
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+COLOR_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_COLOR_FOLDER
+
+COLOR
+CANVAS
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+WIDGET_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+WINDOW_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+DEFAULT_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10197875
+
+
+COLOR
+WINDOW_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7707050
+
+
+COLOR
+TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SELECTED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SELECTED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+184
+
+
+COLOR
+SHADOW
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SHINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14342874
+
+
+COLOR
+BTN_BORDER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+BTN_UPPER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16316640
+
+
+COLOR
+BTN_LOWER
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16313520
+
+
+COLOR
+BTN_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SCROLL_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15259896
+
+
+COLOR
+SCROLL_BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+15256752
+
+
+COLOR
+TEXT_INPUT_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+TEXT_INPUT_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14869218
+
+
+COLOR
+SLIDER_TICK
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_GROOVE_TOP
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_GROOVE_BOTTOM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+16777215
+
+
+COLOR
+SLIDER_NEEDLE_OUTLINE
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+0
+
+
+COLOR
+SLIDER_NEEDLE_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+8421504
+
+
+COLOR
+SLIDER_NEEDLE_LINE1
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+12632256
+
+
+COLOR
+SLIDER_NEEDLE_LINE2
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+14729312
+
+
+COLOR
+DISABLED_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+10526880
+
+
+COLOR
+DISABLED_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+COLOR
+READONLY_TEXT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+4294967295
+
+
+COLOR
+READONLY_FILL
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+7896184
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_COLOR_FOLDER
+
+Add New Color
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Fonts
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+FONT_GROUP
+
+FOLDER
+Defaults
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_FONT_FOLDER
+
+FONT
+SYSTEM
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+BUTTON
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+PROMPT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+FONT
+TEXT_INPUT
+
+project_relative
+
+TRUE
+TRUE
+FALSE
+18
+8
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+
+TRUE
+32
+126
+FALSE
+256
+383
+FALSE
+384
+535
+FALSE
+592
+683
+FALSE
+688
+745
+FALSE
+768
+837
+FALSE
+884
+1011
+FALSE
+1025
+1273
+FALSE
+1329
+1417
+FALSE
+1425
+1524
+FALSE
+1567
+1785
+FALSE
+1792
+1866
+FALSE
+1920
+1968
+FALSE
+2305
+2416
+FALSE
+2433
+2554
+FALSE
+2562
+2676
+FALSE
+2689
+2799
+FALSE
+2817
+2928
+FALSE
+2946
+3058
+FALSE
+3073
+3183
+FALSE
+3202
+3311
+FALSE
+3330
+3439
+FALSE
+3456
+3572
+FALSE
+3585
+3675
+FALSE
+3713
+3805
+FALSE
+3840
+4025
+FALSE
+4096
+4185
+FALSE
+4256
+4347
+FALSE
+4352
+4601
+FALSE
+6144
+6313
+FALSE
+7680
+7929
+FALSE
+7936
+8190
+FALSE
+8192
+8262
+FALSE
+8352
+8364
+FALSE
+8448
+8504
+FALSE
+8531
+8578
+FALSE
+8704
+8945
+FALSE
+12353
+12446
+FALSE
+12449
+12542
+FALSE
+12549
+12588
+FALSE
+12593
+12686
+FALSE
+12688
+12703
+FALSE
+13056
+13310
+FALSE
+19968
+40880
+FALSE
+44032
+55215
+FALSE
+63744
+64045
+
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_FONT_FOLDER
+
+Add New Font
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Pixelmaps
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+PIXELMAP_GROUP
+
+FOLDER
+System
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+DEFAULT_PIXELMAP_FOLDER
+
+PIXELMAP
+RADIO_ON
+
+..\..\graphics\system_png\radiobutton_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+RADIO_OFF
+
+..\..\graphics\system_png\radiobutton_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_ON
+
+..\..\graphics\system_png\checkbox_on.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+PIXELMAP
+CHECKBOX_OFF
+
+..\..\graphics\system_png\checkbox_off.png
+project_relative
+
+TRUE
+TRUE
+TRUE
+FALSE
+FALSE
+FALSE
+FALSE
+FALSE
+None
+
+
+
+FOLDER
+Custom
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+CUSTOM_PIXELMAP_FOLDER
+
+Add New Pixelmap
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+
+GROUP
+Strings
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+STRING_GROUP
+
+Add New String
+
+project_relative
+
+FALSE
+TRUE
+FALSE
+
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+17170432
+
+
+20
+18
+20
+20
+4
+CANVAS
+CANVAS
+SCROLL_BUTTON
+33947648
+
+
+
+TRUE
+
+default_folder
+
+
+
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.c b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.c
new file mode 100644
index 00000000..c902ec06
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.c
@@ -0,0 +1,765 @@
+/*******************************************************************************/
+/* This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this */
+/* file by hand. Modifications to this file should only be made by running */
+/* the Azure RTOS GUIX Studio application and re-generating the application */
+/* resource file(s). For more information please refer to the Azure RTOS GUIX */
+/* Studio User Guide, or visit our web site at azure.com/rtos */
+/* */
+/* GUIX Studio Revision 6.2.1.5 (Preview Version) */
+/* Date (dd.mm.yyyy): 17. 8.2023 Time (hh:mm): 15:56 */
+/*******************************************************************************/
+
+
+#include "gx_api.h"
+#include "demo_guix_binres_standalone_resources.h"
+
+/* Color Table */
+
+GX_CONST GX_COLOR main_display_theme_1_color_table[] =
+{
+ 0x00000000,
+ 0x00007bef,
+ 0x0000e71c,
+ 0x00009cce,
+ 0x000074d5,
+ 0x0000dedb,
+ 0x0000ffff,
+ 0x00000017,
+ 0x00008410,
+ 0x0000dedb,
+ 0x0000e60c,
+ 0x0000ffdc,
+ 0x0000ff76,
+ 0x00000000,
+ 0x0000eedf,
+ 0x0000ee76,
+ 0x0000ffff,
+ 0x0000e71c,
+ 0x00000000,
+ 0x0000c618,
+ 0x0000ffff,
+ 0x00000000,
+ 0x00008410,
+ 0x0000c618,
+ 0x0000e60c,
+ 0x0000a514,
+ 0x00007bef,
+ 0x0000ffff,
+ 0x00007bef,
+ 0x0000041f
+};
+
+
+/* Font Table */
+
+
+extern GX_CONST GX_FONT _gx_system_font_8bpp;
+GX_CONST GX_FONT *main_display_theme_1_font_table[] =
+{
+ &_gx_system_font_8bpp,
+ &_gx_system_font_8bpp,
+ &_gx_system_font_8bpp,
+ &_gx_system_font_8bpp
+};
+
+/* Pixelmap data definitions */
+
+
+/* THEME_1_RADIO_ON pixelmap data */
+
+static GX_CONST USHORT MAIN_DISPLAY_THEME_1_RADIO_ON_pixelmap_data[308] =
+{
+ 0x0083, 0xffff, 0x8007, 0xf7bf, 0xcc00, 0xae1a, 0xff00, 0x7cd6, 0xff00, 0x6c95,
+ 0xff00, 0x74b6, 0xff00, 0x8517, 0xa300, 0xb63a, 0x0000, 0xffdf, 0x0083, 0xffff,
+ 0x0082, 0xffff, 0x8009, 0xd6fc, 0xff00, 0x7496, 0xff00, 0xddf2, 0xff00, 0xfdad,
+ 0xff00, 0xfd8b, 0xff00, 0xfd8b, 0xff00, 0xfdcd, 0xff00, 0xd5d3, 0xff00, 0x7496,
+ 0x8000, 0xe73d, 0x0082, 0xffff, 0x000f, 0xffff, 0x0000, 0xffff, 0xcc00, 0xb63a,
+ 0xff00, 0xb595, 0xff00, 0xfdac, 0xff00, 0xa6c9, 0xff00, 0x7747, 0xff00, 0x4f40,
+ 0xff00, 0x4f40, 0xff00, 0x7746, 0xff00, 0xa6c8, 0xff00, 0xfdcd, 0xff00, 0x9d35,
+ 0xcc00, 0xc69b, 0x0000, 0xffff, 0x0000, 0xffff, 0x0004, 0xffff, 0x8000, 0xd6fc,
+ 0xff00, 0xbdb5, 0xff00, 0xfd8b, 0xff00, 0x7767, 0xff85, 0x4f40, 0xff04, 0x7747,
+ 0xff00, 0xfd8b, 0xff00, 0x9d56, 0x8000, 0xe75e, 0x0000, 0xffff, 0x3303, 0xf7bf,
+ 0xff00, 0x7cd6, 0xff00, 0xfdcd, 0xff00, 0x7767, 0xff87, 0x4f40, 0xff03, 0x7747,
+ 0xff00, 0xfdcd, 0xff00, 0x74b6, 0x0000, 0xffff, 0xcc02, 0xae1a, 0xff00, 0xe613,
+ 0xff00, 0xa6ea, 0xff89, 0x4f40, 0xff02, 0xfe30, 0xff00, 0xcdf5, 0xa400, 0xcebc,
+ 0xff02, 0x8d37, 0xff00, 0xfdcd, 0xff00, 0x7767, 0xff89, 0x4f40, 0xff02, 0xa72c,
+ 0xff00, 0xfe10, 0xff00, 0x9d99, 0xff01, 0x8d37, 0xff00, 0xfdcd, 0xff8b, 0x4f40,
+ 0xff01, 0xfdcd, 0xff00, 0x8d37, 0xff01, 0x8517, 0xff00, 0xfdcd, 0xff8b, 0x4f40,
+ 0xff01, 0xfdac, 0xff00, 0x8517, 0xff02, 0x8517, 0xff00, 0xfdcd, 0xff00, 0x7767,
+ 0xff89, 0x4f40, 0xff02, 0x6743, 0xff00, 0xfe10, 0xff00, 0x9d99, 0xcc02, 0xae1a,
+ 0xff00, 0xe613, 0xff00, 0x7725, 0xff89, 0x4f40, 0xff02, 0xfe30, 0xff00, 0xcdf5,
+ 0x8300, 0xcebc, 0x0003, 0xf7bf, 0xff00, 0x7cd6, 0xff00, 0xfdcd, 0xff00, 0x6744,
+ 0xff87, 0x4f40, 0xff03, 0x7747, 0xff00, 0xfdcd, 0xff00, 0x74b6, 0x0000, 0xffff,
+ 0x0004, 0xffff, 0xcc00, 0xd6fc, 0xff00, 0xbdb5, 0xff00, 0xfd8b, 0xff00, 0x6743,
+ 0xff85, 0x4f40, 0xff04, 0x7747, 0xff00, 0xfd8b, 0xff00, 0x9d56, 0x8000, 0xe75e,
+ 0x0000, 0xffff, 0x000f, 0xffff, 0x0000, 0xffff, 0xcc00, 0xb63a, 0xff00, 0xb595,
+ 0xff00, 0xfdac, 0xff00, 0xa6c9, 0xff00, 0x7746, 0xff00, 0x4f40, 0xff00, 0x4f40,
+ 0xff00, 0x7746, 0xff00, 0xfe30, 0xff00, 0xfdac, 0xff00, 0x9d35, 0xcc00, 0xc69b,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x0082, 0xffff, 0xcc09, 0xd6fc, 0xff00, 0x7496,
+ 0xff00, 0xddf2, 0xff00, 0xfdcd, 0xff00, 0xfd8b, 0xff00, 0xfd6a, 0xff00, 0xfdcd,
+ 0xff00, 0xd5d3, 0xff00, 0x7496, 0x8000, 0xe73d, 0x0082, 0xffff, 0x0083, 0xffff,
+ 0x3307, 0xf7bf, 0xcc00, 0xae1a, 0xff00, 0x84f7, 0xff00, 0x6c95, 0xff00, 0x74b6,
+ 0xff00, 0x8517, 0xcc00, 0xb63a, 0x0000, 0xffdf, 0x0083, 0xffff
+};
+GX_CONST GX_PIXELMAP MAIN_DISPLAY_THEME_1_RADIO_ON_pixelmap =
+{
+ 0x00000001, /* major version */
+ 0x00000000, /* minor version */
+ GX_PIXELMAP_COMPRESSED|GX_PIXELMAP_ALPHA, /* flags */
+ GX_COLOR_FORMAT_565RGB, /* Format */
+ (GX_UBYTE *) MAIN_DISPLAY_THEME_1_RADIO_ON_pixelmap_data,
+ sizeof(MAIN_DISPLAY_THEME_1_RADIO_ON_pixelmap_data), /* the size of pixelmap_data*/
+ NULL,
+ 0, /* auxiliary data size */
+ 0x00, /* used for transparent iamges */
+ 16, /* width in pixel */
+ 16 /* height in pixel */
+};
+
+/* THEME_1_RADIO_OFF pixelmap data */
+
+static GX_CONST USHORT MAIN_DISPLAY_THEME_1_RADIO_OFF_pixelmap_data[308] =
+{
+ 0x0083, 0xffff, 0xff07, 0xf7bf, 0xb300, 0xae1a, 0xff00, 0x7cd6, 0xff00, 0x6c95,
+ 0xff00, 0x74b6, 0xff00, 0x8517, 0xb300, 0xb63a, 0x0000, 0xffdf, 0x0083, 0xffff,
+ 0x0082, 0xffff, 0x8009, 0xd6fc, 0xff00, 0x7496, 0xff00, 0xddf2, 0xff00, 0xfdad,
+ 0xff00, 0xfd8b, 0xff00, 0xfd8b, 0xff00, 0xfdcd, 0xff00, 0xd5d3, 0xff00, 0x7496,
+ 0x3300, 0xe73d, 0x0082, 0xffff, 0x000f, 0xffff, 0x0000, 0xffff, 0xb300, 0xb63a,
+ 0xff00, 0xb595, 0xff00, 0xfdac, 0xff00, 0xfe72, 0xff00, 0xff7b, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xff5a, 0xff00, 0xfe51, 0xff00, 0xfdcd, 0xff00, 0x9d35,
+ 0xb300, 0xc69b, 0x0000, 0xffff, 0x0000, 0xffff, 0x0004, 0xffff, 0x8000, 0xd6fc,
+ 0xff00, 0xbdb5, 0xff00, 0xfd8b, 0xff00, 0xffbd, 0xff85, 0xffff, 0xff04, 0xff9c,
+ 0xff00, 0xfd8b, 0xff00, 0x9d56, 0x3300, 0xe75e, 0x0000, 0xffff, 0x3303, 0xf7bf,
+ 0xff00, 0x7cd6, 0xff00, 0xfdcd, 0xff00, 0xffde, 0xff87, 0xffff, 0xff03, 0xff9c,
+ 0xff00, 0xfdcd, 0xff00, 0x74b6, 0x0000, 0xffff, 0xb302, 0xae1a, 0xff00, 0xe613,
+ 0xff00, 0xfeb5, 0xff89, 0xffff, 0xff02, 0xfe30, 0xff00, 0xcdf5, 0x8000, 0xcebc,
+ 0xff02, 0x8d37, 0xff00, 0xfdcd, 0xff00, 0xffde, 0xff89, 0xffff, 0xff02, 0xff39,
+ 0xff00, 0xfe10, 0xff00, 0x9d99, 0xff01, 0x8d37, 0xff00, 0xfdcd, 0xff8b, 0xffff,
+ 0xff01, 0xfdcd, 0xff00, 0x8d37, 0xff01, 0x8517, 0xff00, 0xfdcd, 0xff8b, 0xffff,
+ 0xff01, 0xfdac, 0xff00, 0x8517, 0xff02, 0x8517, 0xff00, 0xfdcd, 0xff00, 0xffde,
+ 0xff89, 0xffff, 0xff02, 0xff39, 0xff00, 0xfe10, 0xff00, 0x9d99, 0xb302, 0xae1a,
+ 0xff00, 0xe613, 0xff00, 0xfeb5, 0xff89, 0xffff, 0xff02, 0xfe30, 0xff00, 0xcdf5,
+ 0x8000, 0xcebc, 0x0003, 0xf7bf, 0xff00, 0x7cd6, 0xff00, 0xfdcd, 0xff00, 0xffde,
+ 0xff87, 0xffff, 0xff03, 0xff9c, 0xff00, 0xfdcd, 0xff00, 0x74b6, 0x0000, 0xffff,
+ 0x0004, 0xffff, 0x8000, 0xd6fc, 0xff00, 0xbdb5, 0xff00, 0xfd8b, 0xff00, 0xffbd,
+ 0xff85, 0xffff, 0xff04, 0xff9c, 0xff00, 0xfd8b, 0xff00, 0x9d56, 0x3300, 0xe75e,
+ 0x0000, 0xffff, 0x000f, 0xffff, 0x0000, 0xffff, 0xb300, 0xb63a, 0xff00, 0xb595,
+ 0xff00, 0xfdac, 0xff00, 0xfe72, 0xff00, 0xff5a, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xff39, 0xff00, 0xfe30, 0xff00, 0xfdac, 0xff00, 0x9d35, 0xb300, 0xc69b,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x0082, 0xffff, 0x8009, 0xd6fc, 0xff00, 0x7496,
+ 0xff00, 0xddf2, 0xff00, 0xfdcd, 0xff00, 0xfd8b, 0xff00, 0xfd6a, 0xff00, 0xfdcd,
+ 0xff00, 0xd5d3, 0xff00, 0x7496, 0x8000, 0xe73d, 0x0082, 0xffff, 0x0083, 0xffff,
+ 0x3307, 0xf7bf, 0xb300, 0xae1a, 0xff00, 0x84f7, 0xff00, 0x6c95, 0xff00, 0x74b6,
+ 0xff00, 0x8517, 0xb300, 0xb63a, 0x0000, 0xffdf, 0x0083, 0xffff
+};
+GX_CONST GX_PIXELMAP MAIN_DISPLAY_THEME_1_RADIO_OFF_pixelmap =
+{
+ 0x00000001, /* major version */
+ 0x00000000, /* minor version */
+ GX_PIXELMAP_COMPRESSED|GX_PIXELMAP_ALPHA, /* flags */
+ GX_COLOR_FORMAT_565RGB, /* Format */
+ (GX_UBYTE *) MAIN_DISPLAY_THEME_1_RADIO_OFF_pixelmap_data,
+ sizeof(MAIN_DISPLAY_THEME_1_RADIO_OFF_pixelmap_data), /* the size of pixelmap_data*/
+ NULL,
+ 0, /* auxiliary data size */
+ 0x00, /* used for transparent iamges */
+ 16, /* width in pixel */
+ 16 /* height in pixel */
+};
+
+/* THEME_1_CHECKBOX_ON pixelmap data */
+
+static GX_CONST USHORT MAIN_DISPLAY_THEME_1_CHECKBOX_ON_pixelmap_data[242] =
+{
+ 0x800f, 0x1a90, 0x000f, 0x1a90, 0xbe17, 0xe6d8, 0xde97, 0xde75, 0xde74, 0xde53,
+ 0xde31, 0xd610, 0xde11, 0xde32, 0xde32, 0xd611, 0xde0f, 0xb52d, 0x1a90, 0x000f,
+ 0x1a90, 0xe6d8, 0xfff9, 0xff97, 0xff55, 0xff33, 0xff11, 0xfef0, 0xfef0, 0xff11,
+ 0xff33, 0xff76, 0xff54, 0xff10, 0xddee, 0x1a90, 0x000f, 0x1a90, 0xde97, 0xff97,
+ 0xff57, 0xff58, 0xff57, 0xff36, 0xff16, 0xff36, 0xff58, 0xff9a, 0xb691, 0xded3,
+ 0xff13, 0xd5cf, 0x1a90, 0x000f, 0x1a90, 0xde96, 0xff97, 0xff9a, 0xffdf, 0xf7df,
+ 0xf7bf, 0xf7df, 0xffdf, 0xffff, 0xdf7b, 0x2525, 0x9e2d, 0xff55, 0xd5cf, 0x1a90,
+ 0x000f, 0x1a90, 0xde96, 0xff98, 0xff9b, 0xffdf, 0xffde, 0xf7be, 0xf7be, 0xffff,
+ 0xdf7b, 0x2504, 0x0ce2, 0xae4f, 0xff34, 0xd5cf, 0x1a90, 0x000f, 0x1a90, 0xde75,
+ 0xffb9, 0xae91, 0x55aa, 0xffff, 0xffdf, 0xffff, 0xc718, 0x3526, 0x1d03, 0x04a1,
+ 0xa64e, 0xff34, 0xd5ce, 0x1a90, 0x000f, 0x1a90, 0xde74, 0xffb9, 0xa670, 0x14e2,
+ 0x760e, 0xffdf, 0xbf17, 0x4588, 0x0cc1, 0x14c2, 0x8e72, 0xe6f5, 0xfef1, 0xd5ad,
+ 0x1a90, 0x000f, 0x1a90, 0xde53, 0xffb8, 0xa670, 0x04a1, 0x14c2, 0x9eb3, 0x55aa,
+ 0x04a0, 0x2504, 0x760e, 0xf7df, 0xff57, 0xfe6c, 0xd56b, 0x1a90, 0x000f, 0x1a90,
+ 0xde33, 0xff97, 0xbeb2, 0x3546, 0x1d03, 0x14e2, 0x14e2, 0x2504, 0x65ec, 0xffff,
+ 0xffff, 0xfed3, 0xfe08, 0xd549, 0x1a90, 0x000f, 0x1a90, 0xde32, 0xff33, 0xff9a,
+ 0xdf7b, 0x2504, 0x1d03, 0x14c2, 0x760e, 0xffff, 0xffde, 0xf7df, 0xfe91, 0xfdc6,
+ 0xd528, 0x1a90, 0x000f, 0x1a90, 0xd5ef, 0xfed0, 0xff37, 0xffff, 0xdf7b, 0x2525,
+ 0x8651, 0xf7df, 0xffff, 0xf7df, 0xf7ff, 0xfe90, 0xfdc5, 0xd528, 0x1a90, 0x000f,
+ 0x1a90, 0xd5ce, 0xfe8d, 0xfeb1, 0xff36, 0xff79, 0xb670, 0xe6f5, 0xff57, 0xfed3,
+ 0xfe91, 0xfe90, 0xfdea, 0xfdc5, 0xd528, 0x1a90, 0x000f, 0x1a90, 0xddcd, 0xfeac,
+ 0xfe6b, 0xfe8d, 0xfed0, 0xff33, 0xfef1, 0xfe6c, 0xfe08, 0xfdc6, 0xfdc5, 0xfdc5,
+ 0xfde5, 0xdd27, 0x1a90, 0x0009, 0x1a90, 0xb50d, 0xddac, 0xd58b, 0xd58c, 0xd5ae,
+ 0xd5ce, 0xd5ad, 0xd56b, 0xd549, 0x8002, 0xd528, 0x0002, 0xdd27, 0xb4a9, 0x1a90,
+ 0x800f, 0x1a90
+};
+GX_CONST GX_PIXELMAP MAIN_DISPLAY_THEME_1_CHECKBOX_ON_pixelmap =
+{
+ 0x00000001, /* major version */
+ 0x00000000, /* minor version */
+ GX_PIXELMAP_COMPRESSED, /* flags */
+ GX_COLOR_FORMAT_565RGB, /* Format */
+ (GX_UBYTE *) MAIN_DISPLAY_THEME_1_CHECKBOX_ON_pixelmap_data,
+ sizeof(MAIN_DISPLAY_THEME_1_CHECKBOX_ON_pixelmap_data), /* the size of pixelmap_data*/
+ NULL,
+ 0, /* auxiliary data size */
+ 0x00, /* used for transparent iamges */
+ 16, /* width in pixel */
+ 16 /* height in pixel */
+};
+
+/* THEME_1_CHECKBOX_OFF pixelmap data */
+
+static GX_CONST USHORT MAIN_DISPLAY_THEME_1_CHECKBOX_OFF_pixelmap_data[217] =
+{
+ 0x800f, 0x1a90, 0x000f, 0x1a90, 0xbe17, 0xe6d8, 0xde97, 0xde75, 0xde74, 0xde53,
+ 0xde32, 0xde10, 0xd610, 0xd5ef, 0xd5ef, 0xd5ce, 0xddcd, 0xb50d, 0x1a90, 0x000f,
+ 0x1a90, 0xe6d8, 0xfff9, 0xff97, 0xff75, 0xff53, 0xff12, 0xfef0, 0xfecf, 0xfece,
+ 0xfead, 0xfe8c, 0xfe8c, 0xfeac, 0xddac, 0x1a90, 0x000f, 0x1a90, 0xde97, 0xff97,
+ 0xff37, 0xf737, 0xf716, 0xf6f5, 0xf6f5, 0xf6f4, 0xf6d4, 0xf6d3, 0xf6d3, 0xfe6e,
+ 0xfe4a, 0xd58b, 0x1a90, 0x0003, 0x1a90, 0xde75, 0xff75, 0xf737, 0x8006, 0xe75d,
+ 0x0004, 0xe75e, 0xf692, 0xfe29, 0xd56b, 0x1a90, 0x0004, 0x1a90, 0xde74, 0xff53,
+ 0xf716, 0xe75d, 0x8005, 0xe73c, 0x0004, 0xe75d, 0xf691, 0xfe28, 0xd56a, 0x1a90,
+ 0x0004, 0x1a90, 0xde53, 0xff12, 0xf6f5, 0xe75d, 0x8005, 0xe73c, 0x0004, 0xe75d,
+ 0xf670, 0xfe07, 0xd54a, 0x1a90, 0x0004, 0x1a90, 0xde32, 0xfef0, 0xf6f5, 0xe75d,
+ 0x8005, 0xe73c, 0x0004, 0xe75d, 0xf670, 0xfe07, 0xd549, 0x1a90, 0x0004, 0x1a90,
+ 0xde10, 0xfecf, 0xf6f4, 0xe75d, 0x8005, 0xe73c, 0x0004, 0xe75d, 0xf670, 0xfde6,
+ 0xd549, 0x1a90, 0x0004, 0x1a90, 0xd610, 0xfece, 0xf6d4, 0xe75d, 0x8005, 0xe73c,
+ 0x0004, 0xe75d, 0xf66f, 0xfde6, 0xd529, 0x1a90, 0x0004, 0x1a90, 0xd5ef, 0xfead,
+ 0xf6d3, 0xe75d, 0x8005, 0xe73c, 0x0004, 0xe75d, 0xf64f, 0xfdc5, 0xd528, 0x1a90,
+ 0x0004, 0x1a90, 0xd5ef, 0xfe8c, 0xf6d3, 0xe75e, 0x8005, 0xe75d, 0x0004, 0xe77f,
+ 0xf64f, 0xfdc5, 0xd528, 0x1a90, 0x0005, 0x1a90, 0xd5ce, 0xfe8c, 0xfe6e, 0xf692,
+ 0xf691, 0x8002, 0xf670, 0x0006, 0xf66f, 0xf64f, 0xf64f, 0xf5ea, 0xfdc5, 0xd528,
+ 0x1a90, 0x0009, 0x1a90, 0xddcd, 0xfeac, 0xfe4a, 0xfe29, 0xfe28, 0xfe07, 0xfe07,
+ 0xfde6, 0xfde6, 0x8002, 0xfdc5, 0x0002, 0xfde5, 0xdd27, 0x1a90, 0x0009, 0x1a90,
+ 0xb50d, 0xddac, 0xd58b, 0xd56b, 0xd56a, 0xd54a, 0xd549, 0xd549, 0xd529, 0x8002,
+ 0xd528, 0x0002, 0xdd27, 0xb4a9, 0x1a90, 0x800f, 0x1a90
+};
+GX_CONST GX_PIXELMAP MAIN_DISPLAY_THEME_1_CHECKBOX_OFF_pixelmap =
+{
+ 0x00000001, /* major version */
+ 0x00000000, /* minor version */
+ GX_PIXELMAP_COMPRESSED, /* flags */
+ GX_COLOR_FORMAT_565RGB, /* Format */
+ (GX_UBYTE *) MAIN_DISPLAY_THEME_1_CHECKBOX_OFF_pixelmap_data,
+ sizeof(MAIN_DISPLAY_THEME_1_CHECKBOX_OFF_pixelmap_data), /* the size of pixelmap_data*/
+ NULL,
+ 0, /* auxiliary data size */
+ 0x00, /* used for transparent iamges */
+ 16, /* width in pixel */
+ 16 /* height in pixel */
+};
+
+/* THEME_1_MS_AZURE_LOGO pixelmap data */
+
+static GX_CONST USHORT MAIN_DISPLAY_THEME_1_MS_AZURE_LOGO_pixelmap_data[4080] =
+{
+ 0x00ff, 0x0000, 0x00bc, 0x0000, 0x0001, 0x0000, 0xf200, 0xf284, 0xfe89, 0xf284,
+ 0xff04, 0xf262, 0xf400, 0xf2c7, 0x1c00, 0xff9e, 0x9e00, 0xbed4, 0xff00, 0x75a0,
+ 0xfe88, 0x7dc0, 0xff02, 0x7dc0, 0xda00, 0x9e2d, 0x0e00, 0xffff, 0x00ff, 0xffff,
+ 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x00ff, 0xffff,
+ 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x00ff, 0xffff,
+ 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x00ff, 0xffff,
+ 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x00d5, 0xffff,
+ 0x2a03, 0xffff, 0x6800, 0xffff, 0x7900, 0xffff, 0x4f00, 0xffff, 0x00c3, 0xffff,
+ 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284, 0xff89, 0xf284,
+ 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4, 0xff00, 0x75a0,
+ 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x1304, 0xffff,
+ 0x5300, 0xffff, 0x5400, 0xffff, 0x5600, 0xffff, 0x4200, 0xffff, 0x0087, 0xffff,
+ 0x020a, 0xffff, 0x4700, 0xffff, 0x5500, 0xffff, 0x5500, 0xffff, 0x4a00, 0xffff,
+ 0x0600, 0xffff, 0x0000, 0xffff, 0x2400, 0xffff, 0x9c00, 0xffff, 0x8500, 0xffff,
+ 0x0c00, 0xffff, 0x00b6, 0xffff, 0x7905, 0xffff, 0xf700, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xdb00, 0xffff, 0x0400, 0xffff, 0x008e, 0xffff, 0x0504, 0xffff,
+ 0x4c00, 0xffff, 0x5500, 0xffff, 0x5500, 0xffff, 0x1500, 0xffff, 0x00ae, 0xffff,
+ 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284, 0xff89, 0xf284,
+ 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4, 0xff00, 0x75a0,
+ 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x3a00, 0xffff,
+ 0xff82, 0xffff, 0xf501, 0xffff, 0x2600, 0xffff, 0x0086, 0xffff, 0x350a, 0xffff,
+ 0xfe00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xe800, 0xffff, 0x1200, 0xffff,
+ 0x0000, 0xffff, 0xb000, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x7300, 0xffff,
+ 0x00b5, 0xffff, 0x5709, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xef00, 0xffff,
+ 0xbf00, 0xffff, 0xa900, 0xffff, 0x0300, 0xffff, 0x0000, 0xffff, 0x0f00, 0xffff,
+ 0x1800, 0xffff, 0x008b, 0xffff, 0x4300, 0xffff, 0xff82, 0xffff, 0x7e00, 0xffff,
+ 0x00ae, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x3901, 0xffff, 0xfb00, 0xffff, 0xff82, 0xffff, 0x7b00, 0xffff, 0x0086, 0xffff,
+ 0x9500, 0xffff, 0xff82, 0xffff, 0xe206, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x9500, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x5b00, 0xffff, 0x00b5, 0xffff,
+ 0xb609, 0xffff, 0xff00, 0xffff, 0xf800, 0xffff, 0x4400, 0xffff, 0x0000, 0xffff,
+ 0x0200, 0xffff, 0x1800, 0xffff, 0x9700, 0xffff, 0xe500, 0xffff, 0x8500, 0xffff,
+ 0x008b, 0xffff, 0x9d00, 0xffff, 0xff82, 0xffff, 0xd201, 0xffff, 0x0900, 0xffff,
+ 0x00ad, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x3901, 0xffff, 0xfb00, 0xffff, 0xff82, 0xffff, 0xd301, 0xffff, 0x0900, 0xffff,
+ 0x0084, 0xffff, 0x1901, 0xffff, 0xe800, 0xffff, 0xff82, 0xffff, 0xe205, 0xffff,
+ 0x1200, 0xffff, 0x0000, 0xffff, 0x0900, 0xffff, 0x5a00, 0xffff, 0x4600, 0xffff,
+ 0x00b5, 0xffff, 0x030a, 0xffff, 0xd100, 0xffff, 0xff00, 0xffff, 0xd600, 0xffff,
+ 0x0400, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3600, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x8700, 0xffff, 0x008a, 0xffff, 0x1806, 0xffff, 0xe800, 0xffff,
+ 0xff00, 0xffff, 0xeb00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x4700, 0xffff,
+ 0x00ad, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284,
+ 0xff89, 0xf284, 0xff04, 0xf262, 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4,
+ 0xff00, 0x75a0, 0xff89, 0x7dc0, 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x3906, 0xffff, 0xfc00, 0xffff, 0xfe00, 0xffff, 0xd000, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x4900, 0xffff, 0x0084, 0xffff, 0x6c0b, 0xffff, 0xff00, 0xffff,
+ 0xe800, 0xffff, 0xde00, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff,
+ 0x0000, 0xffff, 0x0200, 0xffff, 0x0100, 0xffff, 0x0200, 0xffff, 0x0100, 0xffff,
+ 0x0084, 0xffff, 0x180d, 0xffff, 0x2f00, 0xffff, 0x3100, 0xffff, 0x1c00, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x0100, 0xffff, 0x0900, 0xffff, 0x0900, 0xffff,
+ 0x0500, 0xffff, 0x0000, 0xffff, 0x0c00, 0xffff, 0x2300, 0xffff, 0x0d00, 0xffff,
+ 0x0082, 0xffff, 0x0504, 0xffff, 0x2300, 0xffff, 0x2f00, 0xffff, 0x2900, 0xffff,
+ 0x0e00, 0xffff, 0x0086, 0xffff, 0x1803, 0xffff, 0x3000, 0xffff, 0x2f00, 0xffff,
+ 0x1900, 0xffff, 0x0085, 0xffff, 0x1004, 0xffff, 0x2900, 0xffff, 0x2f00, 0xffff,
+ 0x2200, 0xffff, 0x0300, 0xffff, 0x0082, 0xffff, 0x050e, 0xffff, 0x0e00, 0xffff,
+ 0xd300, 0xffff, 0xff00, 0xffff, 0xd300, 0xffff, 0x1000, 0xffff, 0x0700, 0xffff,
+ 0x0300, 0xffff, 0x3c00, 0xffff, 0xfa00, 0xffff, 0xff00, 0xffff, 0x8a00, 0xffff,
+ 0x0000, 0xffff, 0x0900, 0xffff, 0x0200, 0xffff, 0x0087, 0xffff, 0x6306, 0xffff,
+ 0xff00, 0xffff, 0xfb00, 0xffff, 0x6400, 0xffff, 0xea00, 0xffff, 0xff00, 0xffff,
+ 0xa100, 0xffff, 0x0084, 0xffff, 0x0500, 0xffff, 0x0987, 0xffff, 0x0404, 0xffff,
+ 0x0200, 0xffff, 0x0900, 0xffff, 0x0900, 0xffff, 0x0400, 0xffff, 0x0083, 0xffff,
+ 0x070c, 0xffff, 0x0900, 0xffff, 0x0800, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0x0500, 0xffff, 0x0900, 0xffff, 0x0900, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0x1e00, 0xffff, 0x1b00, 0xffff, 0x0100, 0xffff, 0x0082, 0xffff, 0x1c03, 0xffff,
+ 0x2a00, 0xffff, 0x2000, 0xffff, 0x0200, 0xffff, 0x0082, 0xffff, 0x0001, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0xf284, 0xff89, 0xf284, 0xff04, 0xf262,
+ 0xf500, 0xf2c7, 0x1d00, 0xff9e, 0x9f00, 0xbed4, 0xff00, 0x75a0, 0xff89, 0x7dc0,
+ 0xdb01, 0x9e2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x3906, 0xffff, 0xfc00, 0xffff,
+ 0xff00, 0xffff, 0x7a00, 0xffff, 0xe200, 0xffff, 0xff00, 0xffff, 0xa600, 0xffff,
+ 0x0083, 0xffff, 0x050c, 0xffff, 0xcc00, 0xffff, 0xff00, 0xffff, 0x9800, 0xffff,
+ 0xbd00, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x6c00, 0xffff, 0xe600, 0xffff, 0xdb00, 0xffff, 0x3600, 0xffff, 0x0082, 0xffff,
+ 0x3519, 0xffff, 0xb100, 0xffff, 0xeb00, 0xffff, 0xfd00, 0xffff, 0xff00, 0xffff,
+ 0xf100, 0xffff, 0xa700, 0xffff, 0x0300, 0xffff, 0x1c00, 0xffff, 0xd100, 0xffff,
+ 0xe600, 0xffff, 0x8200, 0xffff, 0x5400, 0xffff, 0xde00, 0xffff, 0xfb00, 0xffff,
+ 0x8200, 0xffff, 0x0000, 0xffff, 0x0600, 0xffff, 0x7200, 0xffff, 0xd300, 0xffff,
+ 0xf400, 0xffff, 0xfd00, 0xffff, 0xf800, 0xffff, 0xe100, 0xffff, 0x9100, 0xffff,
+ 0x1400, 0xffff, 0x0082, 0xffff, 0x1806, 0xffff, 0x9e00, 0xffff, 0xec00, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xf200, 0xffff, 0x7600, 0xffff, 0x0082, 0xffff,
+ 0x2218, 0xffff, 0x9d00, 0xffff, 0xe400, 0xffff, 0xf900, 0xffff, 0xfd00, 0xffff,
+ 0xf300, 0xffff, 0xce00, 0xffff, 0x6200, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0xa000, 0xffff, 0xe300, 0xffff, 0xf900, 0xffff, 0xff00, 0xffff, 0xf900, 0xffff,
+ 0xdd00, 0xffff, 0xdc00, 0xffff, 0xdc00, 0xffff, 0xe300, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xef00, 0xffff, 0xdc00, 0xffff, 0xdf00, 0xffff, 0x3900, 0xffff,
+ 0x0087, 0xffff, 0xbe07, 0xffff, 0xff00, 0xffff, 0xd200, 0xffff, 0x0500, 0xffff,
+ 0xb200, 0xffff, 0xff00, 0xffff, 0xeb00, 0xffff, 0x1b00, 0xffff, 0x0083, 0xffff,
+ 0x7a01, 0xffff, 0xe500, 0xffff, 0xdd82, 0xffff, 0xdc82, 0xffff, 0xe605, 0xffff,
+ 0x7600, 0xffff, 0x3500, 0xffff, 0xe000, 0xffff, 0xe400, 0xffff, 0x6500, 0xffff,
+ 0x0083, 0xffff, 0xa518, 0xffff, 0xe700, 0xffff, 0xbf00, 0xffff, 0x0d00, 0xffff,
+ 0x0000, 0xffff, 0x8800, 0xffff, 0xe700, 0xffff, 0xca00, 0xffff, 0x3600, 0xffff,
+ 0xb000, 0xffff, 0xf400, 0xffff, 0xd900, 0xffff, 0x1300, 0xffff, 0x0000, 0xffff,
+ 0x3e00, 0xffff, 0xbb00, 0xffff, 0xf000, 0xffff, 0xfc00, 0xffff, 0xf300, 0xffff,
+ 0xca00, 0xffff, 0x5200, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0xf800, 0xf240, 0xff89, 0xf240, 0xff04, 0xf220,
+ 0xfa00, 0xf2a5, 0x1d00, 0xff9e, 0xa200, 0xbed4, 0xff00, 0x75a0, 0xff88, 0x7dc0,
+ 0xff02, 0x75a0, 0xdf00, 0x962c, 0x0f00, 0xffff, 0x0085, 0xffff, 0x3907, 0xffff,
+ 0xfc00, 0xffff, 0xff00, 0xffff, 0x5700, 0xffff, 0x9500, 0xffff, 0xff00, 0xffff,
+ 0xee00, 0xffff, 0x2000, 0xffff, 0x0082, 0xffff, 0x4521, 0xffff, 0xff00, 0xffff,
+ 0xfd00, 0xffff, 0x3d00, 0xffff, 0xc000, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff,
+ 0x1200, 0xffff, 0x0000, 0xffff, 0x7f00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x3f00, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x5000, 0xffff, 0xf500, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0xf500, 0xffff, 0xff00, 0xffff,
+ 0xec00, 0xffff, 0x0c00, 0xffff, 0x2000, 0xffff, 0xf700, 0xffff, 0xff00, 0xffff,
+ 0xd500, 0xffff, 0xf600, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x9100, 0xffff,
+ 0x0000, 0xffff, 0xaf00, 0xffff, 0xff82, 0xffff, 0xf800, 0xffff, 0xff82, 0xffff,
+ 0xce12, 0xffff, 0x1800, 0xffff, 0x0000, 0xffff, 0x0a00, 0xffff, 0xc500, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xeb00, 0xffff, 0xec00, 0xffff, 0xff00, 0xffff,
+ 0x9d00, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3200, 0xffff, 0xe500, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xfe00, 0xffff, 0xf900, 0xffff, 0xff82, 0xffff,
+ 0x8b02, 0xffff, 0x0000, 0xffff, 0xbf00, 0xffff, 0xff8c, 0xffff, 0x4400, 0xffff,
+ 0x0086, 0xffff, 0x3108, 0xffff, 0xf800, 0xffff, 0xff00, 0xffff, 0x8400, 0xffff,
+ 0x0000, 0xffff, 0x5f00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x6800, 0xffff,
+ 0x0083, 0xffff, 0x9000, 0xffff, 0xff87, 0xffff, 0x4c04, 0xffff, 0x4000, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0x7700, 0xffff, 0x0083, 0xffff, 0xc318, 0xffff,
+ 0xff00, 0xffff, 0xe100, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0x9f00, 0xffff,
+ 0xff00, 0xffff, 0xf300, 0xffff, 0xd300, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xf300, 0xffff, 0x1000, 0xffff, 0x5100, 0xffff, 0xf900, 0xffff, 0xff00, 0xffff,
+ 0xfc00, 0xffff, 0xdd00, 0xffff, 0xf500, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x6000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
+ 0xcc00, 0xf3cc, 0xd689, 0xf3cc, 0xd804, 0xf3ac, 0xce00, 0xf3ed, 0x1800, 0xff9e,
+ 0x8600, 0xc6f6, 0xde00, 0x8e0a, 0xd688, 0x962c, 0xda02, 0x962b, 0xb900, 0xae71,
+ 0x0c00, 0xffff, 0x0085, 0xffff, 0x3907, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff,
+ 0x5700, 0xffff, 0x3400, 0xffff, 0xfe00, 0xffff, 0xff00, 0xffff, 0x7300, 0xffff,
+ 0x0082, 0xffff, 0xa74f, 0xffff, 0xff00, 0xffff, 0xc200, 0xffff, 0x0500, 0xffff,
+ 0xc500, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x7d00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0x3e00, 0xffff, 0x0000, 0xffff,
+ 0x2100, 0xffff, 0xea00, 0xffff, 0xff00, 0xffff, 0xfe00, 0xffff, 0x8d00, 0xffff,
+ 0x2d00, 0xffff, 0x1d00, 0xffff, 0x4a00, 0xffff, 0x9700, 0xffff, 0x0d00, 0xffff,
+ 0x2000, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xd900, 0xffff,
+ 0x6700, 0xffff, 0x6a00, 0xffff, 0x4f00, 0xffff, 0x7c00, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xc700, 0xffff, 0x4400, 0xffff, 0x2000, 0xffff, 0x3b00, 0xffff,
+ 0xbb00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xa000, 0xffff, 0x0000, 0xffff,
+ 0x4f00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x9100, 0xffff, 0x1100, 0xffff,
+ 0x1600, 0xffff, 0x5600, 0xffff, 0x6100, 0xffff, 0x0000, 0xffff, 0x0b00, 0xffff,
+ 0xcf00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x9300, 0xffff, 0x2e00, 0xffff,
+ 0x2200, 0xffff, 0x5e00, 0xffff, 0xe800, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x4c00, 0xffff, 0x2f00, 0xffff, 0x5100, 0xffff, 0xdf00, 0xffff, 0xff00, 0xffff,
+ 0xdf00, 0xffff, 0x5100, 0xffff, 0x4b00, 0xffff, 0x4800, 0xffff, 0x7000, 0xffff,
+ 0xfc00, 0xffff, 0xff00, 0xffff, 0xaa00, 0xffff, 0x4600, 0xffff, 0x4d00, 0xffff,
+ 0x1300, 0xffff, 0x0086, 0xffff, 0x8809, 0xffff, 0xff00, 0xffff, 0xfa00, 0xffff,
+ 0x3300, 0xffff, 0x0000, 0xffff, 0x1900, 0xffff, 0xea00, 0xffff, 0xff00, 0xffff,
+ 0xc100, 0xffff, 0x0100, 0xffff, 0x0082, 0xffff, 0x220d, 0xffff, 0x4000, 0xffff,
+ 0x3e00, 0xffff, 0x3e00, 0xffff, 0x3400, 0xffff, 0x8f00, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x8f00, 0xffff, 0x0000, 0xffff, 0x4600, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x7500, 0xffff, 0x0083, 0xffff, 0xbf05, 0xffff, 0xff00, 0xffff,
+ 0xdd00, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0x9d00, 0xffff, 0xff82, 0xffff,
+ 0x900f, 0xffff, 0x5900, 0xffff, 0x7300, 0xffff, 0x3600, 0xffff, 0xec00, 0xffff,
+ 0xff00, 0xffff, 0xd100, 0xffff, 0x3400, 0xffff, 0x0900, 0xffff, 0x2700, 0xffff,
+ 0xc800, 0xffff, 0xff00, 0xffff, 0xe300, 0xffff, 0x3100, 0xffff, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0x0d00, 0xffbf, 0x0e8a, 0xffbf, 0x0d02, 0xffbf,
+ 0x0100, 0xffff, 0x0800, 0xffff, 0x0e8a, 0xffde, 0x0c00, 0xffde, 0x0086, 0xffff,
+ 0x391c, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0x5d00, 0xffff, 0x0000, 0xffff,
+ 0xc500, 0xffff, 0xff00, 0xffff, 0xcd00, 0xffff, 0x0500, 0xffff, 0x0000, 0xffff,
+ 0x2500, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0x6400, 0xffff, 0x0000, 0xffff,
+ 0xc600, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x7d00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0x3e00, 0xffff, 0x0000, 0xffff,
+ 0x8600, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x7f00, 0xffff, 0x0085, 0xffff,
+ 0x220b, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0xef00, 0xffff, 0x2b00, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x1000, 0xffff, 0xe300, 0xffff, 0xff00, 0xffff,
+ 0xe400, 0xffff, 0x1b00, 0xffff, 0x0082, 0xffff, 0x1008, 0xffff, 0xd900, 0xffff,
+ 0xff00, 0xffff, 0xf000, 0xffff, 0x1700, 0xffff, 0x6300, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x7300, 0xffff, 0x0084, 0xffff, 0x5503, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xa200, 0xffff, 0x0083, 0xffff, 0x5008, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0xb000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0xd000, 0xffff,
+ 0xff00, 0xffff, 0xd100, 0xffff, 0x0082, 0xffff, 0x2f03, 0xffff, 0xfa00, 0xffff,
+ 0xff00, 0xffff, 0x8300, 0xffff, 0x0088, 0xffff, 0x0d0a, 0xffff, 0xda00, 0xffff,
+ 0xff00, 0xffff, 0xc400, 0xffff, 0x0100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0xa500, 0xffff, 0xff00, 0xffff, 0xfb00, 0xffff, 0x3500, 0xffff, 0x0086, 0xffff,
+ 0x2309, 0xffff, 0xe500, 0xffff, 0xff00, 0xffff, 0xc400, 0xffff, 0x0900, 0xffff,
+ 0x0000, 0xffff, 0x4600, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x7500, 0xffff,
+ 0x0083, 0xffff, 0xbf08, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff, 0x1000, 0xffff,
+ 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x8800, 0xffff,
+ 0x0082, 0xffff, 0x8703, 0xffff, 0xff00, 0xffff, 0xf700, 0xffff, 0x2d00, 0xffff,
+ 0x0082, 0xffff, 0x4205, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xae00, 0xffff,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xcc00, 0x659e, 0xd689, 0x659e,
+ 0xd804, 0x5d9e, 0xce00, 0x6dbe, 0x1800, 0xefbf, 0x8600, 0xfef6, 0xde00, 0xfe0a,
+ 0xd688, 0xfe2c, 0xda02, 0xfe0b, 0xb900, 0xfe71, 0x0c00, 0xffff, 0x0085, 0xffff,
+ 0x391c, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0000, 0xffff,
+ 0x6500, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x4200, 0xffff, 0x0000, 0xffff,
+ 0x7f00, 0xffff, 0xff00, 0xffff, 0xe500, 0xffff, 0x1500, 0xffff, 0x0000, 0xffff,
+ 0xc600, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x7d00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0x3d00, 0xffff, 0x0000, 0xffff,
+ 0xc700, 0xffff, 0xff00, 0xffff, 0xea00, 0xffff, 0x1800, 0xffff, 0x0085, 0xffff,
+ 0x2303, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0xb500, 0xffff, 0x0082, 0xffff,
+ 0x3f03, 0xffff, 0xfe00, 0xffff, 0xff00, 0xffff, 0x9b00, 0xffff, 0x0084, 0xffff,
+ 0x9009, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x4400, 0xffff, 0x3000, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xf800, 0xffff, 0x9b00, 0xffff, 0x3400, 0xffff,
+ 0x0082, 0xffff, 0x9203, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x4500, 0xffff,
+ 0x0083, 0xffff, 0x0c0f, 0xffff, 0xdc00, 0xffff, 0xff00, 0xffff, 0xdc00, 0xffff,
+ 0x0c00, 0xffff, 0x0300, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff, 0xd200, 0xffff,
+ 0x0700, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3500, 0xffff, 0xfa00, 0xffff,
+ 0xff00, 0xffff, 0x8700, 0xffff, 0x0088, 0xffff, 0x4f0a, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x7500, 0xffff, 0x0000, 0xffff, 0x0600, 0xffff, 0x0000, 0xffff,
+ 0x5400, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x8c00, 0xffff, 0x0085, 0xffff,
+ 0x080a, 0xffff, 0xc400, 0xffff, 0xff00, 0xffff, 0xed00, 0xffff, 0x2b00, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x4600, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x7500, 0xffff, 0x0083, 0xffff, 0xbf18, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff,
+ 0x1000, 0xffff, 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff, 0xfa00, 0xffff,
+ 0x3200, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0100, 0xffff, 0xc500, 0xffff,
+ 0xff00, 0xffff, 0xe700, 0xffff, 0x7300, 0xffff, 0x6e00, 0xffff, 0x6f00, 0xffff,
+ 0x6c00, 0xffff, 0x8800, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0xf200, 0xffff,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf800, 0x051d, 0xff8a, 0x051d,
+ 0xfa03, 0x1d3e, 0x1d00, 0xefbf, 0xa200, 0xfeb4, 0xff00, 0xfda0, 0xff88, 0xfdc0,
+ 0xff02, 0xfda0, 0xdf00, 0xfe0c, 0x0f00, 0xffff, 0x0085, 0xffff, 0x391c, 0xffff,
+ 0xfc00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0000, 0xffff, 0x1500, 0xffff,
+ 0xe400, 0xffff, 0xff00, 0xffff, 0x9c00, 0xffff, 0x0500, 0xffff, 0xd900, 0xffff,
+ 0xff00, 0xffff, 0x9400, 0xffff, 0x0000, 0xffff, 0x0300, 0xffff, 0xc600, 0xffff,
+ 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff, 0x7d00, 0xffff,
+ 0xff00, 0xffff, 0xfd00, 0xffff, 0x3c00, 0xffff, 0x0700, 0xffff, 0xdf00, 0xffff,
+ 0xff00, 0xffff, 0xd100, 0xffff, 0x0300, 0xffff, 0x0085, 0xffff, 0x2303, 0xffff,
+ 0xf200, 0xffff, 0xff00, 0xffff, 0x9e00, 0xffff, 0x0082, 0xffff, 0x5303, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0x7c00, 0xffff, 0x0084, 0xffff, 0x7405, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0x5b00, 0xffff, 0x0000, 0xffff, 0x8000, 0xffff,
+ 0xff82, 0xffff, 0xfd07, 0xffff, 0xa800, 0xffff, 0x1700, 0xffff, 0x0000, 0xffff,
+ 0xab00, 0xffff, 0xff00, 0xffff, 0xf600, 0xffff, 0x2c00, 0xffff, 0x0083, 0xffff,
+ 0x040f, 0xffff, 0xc600, 0xffff, 0xff00, 0xffff, 0xe600, 0xffff, 0x1600, 0xffff,
+ 0x0100, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff, 0xd200, 0xffff, 0x0700, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x3500, 0xffff, 0xfa00, 0xffff, 0xff00, 0xffff,
+ 0x8700, 0xffff, 0x0088, 0xffff, 0xaa0b, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xdb00, 0xffff, 0xcf00, 0xffff, 0xd000, 0xffff, 0xcf00, 0xffff, 0xd600, 0xffff,
+ 0xfe00, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff, 0x0e00, 0xffff, 0x0084, 0xffff,
+ 0x9103, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0082, 0xffff,
+ 0x4603, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x7500, 0xffff, 0x0083, 0xffff,
+ 0xbf0c, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff,
+ 0x9d00, 0xffff, 0xff00, 0xffff, 0xef00, 0xffff, 0x2100, 0xffff, 0x0000, 0xffff,
+ 0x0000, 0xffff, 0x0d00, 0xffff, 0xd700, 0xffff, 0xff89, 0xffff, 0x0001, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d,
+ 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0,
+ 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x391c, 0xffff, 0xfc00, 0xffff,
+ 0xff00, 0xffff, 0x5e00, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x9000, 0xffff,
+ 0xff00, 0xffff, 0xe200, 0xffff, 0x7400, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff,
+ 0x3800, 0xffff, 0x0000, 0xffff, 0x0300, 0xffff, 0xc600, 0xffff, 0xff00, 0xffff,
+ 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff, 0x7d00, 0xffff, 0xff00, 0xffff,
+ 0xfd00, 0xffff, 0x3c00, 0xffff, 0x0700, 0xffff, 0xdf00, 0xffff, 0xff00, 0xffff,
+ 0xd800, 0xffff, 0x0800, 0xffff, 0x0085, 0xffff, 0x2303, 0xffff, 0xf200, 0xffff,
+ 0xff00, 0xffff, 0x9d00, 0xffff, 0x0082, 0xffff, 0x5003, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x8400, 0xffff, 0x0084, 0xffff, 0x7d10, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x5100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3e00, 0xffff,
+ 0xad00, 0xffff, 0xf800, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xb800, 0xffff,
+ 0x0000, 0xffff, 0xa500, 0xffff, 0xff00, 0xffff, 0xf900, 0xffff, 0x3300, 0xffff,
+ 0x0083, 0xffff, 0x060f, 0xffff, 0xce00, 0xffff, 0xff00, 0xffff, 0xe000, 0xffff,
+ 0x1000, 0xffff, 0x0200, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff, 0xd200, 0xffff,
+ 0x0700, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3500, 0xffff, 0xfa00, 0xffff,
+ 0xff00, 0xffff, 0x8700, 0xffff, 0x0087, 0xffff, 0x2101, 0xffff, 0xef00, 0xffff,
+ 0xff89, 0xffff, 0x5300, 0xffff, 0x0083, 0xffff, 0x5703, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x9700, 0xffff, 0x0083, 0xffff, 0x4703, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x7400, 0xffff, 0x0083, 0xffff, 0xbf0f, 0xffff, 0xff00, 0xffff,
+ 0xdd00, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff,
+ 0xef00, 0xffff, 0x2100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0b00, 0xffff,
+ 0xd500, 0xffff, 0xff00, 0xffff, 0xe100, 0xffff, 0x8200, 0xffff, 0x8485, 0xffff,
+ 0x8102, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d,
+ 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4,
+ 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x391c, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0000, 0xffff,
+ 0x0000, 0xffff, 0x3200, 0xffff, 0xf900, 0xffff, 0xff00, 0xffff, 0xf700, 0xffff,
+ 0xff00, 0xffff, 0xc100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0300, 0xffff,
+ 0xc600, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff,
+ 0x7d00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0x3d00, 0xffff, 0x0000, 0xffff,
+ 0xc200, 0xffff, 0xff00, 0xffff, 0xfa00, 0xffff, 0x3600, 0xffff, 0x0085, 0xffff,
+ 0x2303, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0x9d00, 0xffff, 0x0082, 0xffff,
+ 0x3203, 0xffff, 0xfa00, 0xffff, 0xff00, 0xffff, 0xbb00, 0xffff, 0x0084, 0xffff,
+ 0xb303, 0xffff, 0xff00, 0xffff, 0xf900, 0xffff, 0x2c00, 0xffff, 0x0083, 0xffff,
+ 0x3308, 0xffff, 0xd900, 0xffff, 0xff00, 0xffff, 0xfa00, 0xffff, 0x2700, 0xffff,
+ 0x7c00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x6700, 0xffff, 0x0083, 0xffff,
+ 0x220f, 0xffff, 0xf000, 0xffff, 0xff00, 0xffff, 0xc000, 0xffff, 0x0000, 0xffff,
+ 0x0400, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff, 0xd200, 0xffff, 0x0700, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x3600, 0xffff, 0xfa00, 0xffff, 0xff00, 0xffff,
+ 0x8700, 0xffff, 0x0087, 0xffff, 0x7204, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xa700, 0xffff, 0x6c00, 0xffff, 0x7182, 0xffff, 0x6e04, 0xffff, 0x9100, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xae00, 0xffff, 0x0082, 0xffff, 0x2704, 0xffff,
+ 0xea00, 0xffff, 0xff00, 0xffff, 0xcb00, 0xffff, 0x0c00, 0xffff, 0x0083, 0xffff,
+ 0x4303, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x8800, 0xffff, 0x0082, 0xffff,
+ 0x0809, 0xffff, 0xd500, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff, 0x1000, 0xffff,
+ 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff, 0xef00, 0xffff, 0x2100, 0xffff,
+ 0x0082, 0xffff, 0xbc03, 0xffff, 0xff00, 0xffff, 0xde00, 0xffff, 0x0600, 0xffff,
+ 0x0086, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d,
+ 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4,
+ 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x3903, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0082, 0xffff,
+ 0xb800, 0xffff, 0xff82, 0xffff, 0x641b, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0x0300, 0xffff, 0xc600, 0xffff, 0xff00, 0xffff, 0xe200, 0xffff, 0x1200, 0xffff,
+ 0x0000, 0xffff, 0x7d00, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0x3e00, 0xffff,
+ 0x0000, 0xffff, 0x7100, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xc700, 0xffff,
+ 0x2100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0900, 0xffff, 0x4900, 0xffff,
+ 0x0800, 0xffff, 0x2100, 0xffff, 0xf200, 0xffff, 0xff00, 0xffff, 0x9d00, 0xffff,
+ 0x0082, 0xffff, 0x0504, 0xffff, 0xc900, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x6600, 0xffff, 0x0082, 0xffff, 0x5a06, 0xffff, 0xfb00, 0xffff, 0xff00, 0xffff,
+ 0xbf00, 0xffff, 0x0000, 0xffff, 0x3500, 0xffff, 0x3400, 0xffff, 0x0082, 0xffff,
+ 0x961e, 0xffff, 0xff00, 0xffff, 0xfc00, 0xffff, 0x2e00, 0xffff, 0x3200, 0xffff,
+ 0xfc00, 0xffff, 0xff00, 0xffff, 0xdd00, 0xffff, 0x2b00, 0xffff, 0x0000, 0xffff,
+ 0x0000, 0xffff, 0x0600, 0xffff, 0xa100, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x6b00, 0xffff, 0x0000, 0xffff, 0x0500, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff,
+ 0xd200, 0xffff, 0x0700, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x3100, 0xffff,
+ 0xfa00, 0xffff, 0xff00, 0xffff, 0xb100, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0x0300, 0xffff, 0x0083, 0xffff, 0x0404, 0xffff, 0xca00, 0xffff, 0xff00, 0xffff,
+ 0xf500, 0xffff, 0x2600, 0xffff, 0x0084, 0xffff, 0x080a, 0xffff, 0xdc00, 0xffff,
+ 0xff00, 0xffff, 0xf100, 0xffff, 0x2400, 0xffff, 0x0000, 0xffff, 0x0700, 0xffff,
+ 0xc300, 0xffff, 0xff00, 0xffff, 0xed00, 0xffff, 0x3100, 0xffff, 0x0084, 0xffff,
+ 0x2a10, 0xffff, 0xf700, 0xffff, 0xff00, 0xffff, 0xd600, 0xffff, 0x1500, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x6900, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xdd00, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff,
+ 0xef00, 0xffff, 0x2100, 0xffff, 0x0082, 0xffff, 0x7403, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x8700, 0xffff, 0x0083, 0xffff, 0x1604, 0xffff, 0x3500, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d,
+ 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4,
+ 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff,
+ 0x3903, 0xffff, 0xfc00, 0xffff, 0xff00, 0xffff, 0x5e00, 0xffff, 0x0082, 0xffff,
+ 0x571f, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xe400, 0xffff, 0x1500, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x0300, 0xffff, 0xc600, 0xffff, 0xff00, 0xffff,
+ 0xe200, 0xffff, 0x1200, 0xffff, 0x0000, 0xffff, 0x7d00, 0xffff, 0xff00, 0xffff,
+ 0xfd00, 0xffff, 0x3e00, 0xffff, 0x0000, 0xffff, 0x0a00, 0xffff, 0xc300, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xed00, 0xffff, 0xb100, 0xffff, 0xa300, 0xffff,
+ 0xd900, 0xffff, 0xe400, 0xffff, 0x0d00, 0xffff, 0x2000, 0xffff, 0xf300, 0xffff,
+ 0xff00, 0xffff, 0x9e00, 0xffff, 0x0083, 0xffff, 0x462f, 0xffff, 0xfb00, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xc500, 0xffff, 0xa000, 0xffff, 0xbd00, 0xffff,
+ 0xfc00, 0xffff, 0xff00, 0xffff, 0xf100, 0xffff, 0x3700, 0xffff, 0x0000, 0xffff,
+ 0x6f00, 0xffff, 0xff00, 0xffff, 0xba00, 0xffff, 0x8b00, 0xffff, 0x9f00, 0xffff,
+ 0xf100, 0xffff, 0xff00, 0xffff, 0xd000, 0xffff, 0x0900, 0xffff, 0x0000, 0xffff,
+ 0x9300, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xef00, 0xffff, 0xb000, 0xffff,
+ 0xa200, 0xffff, 0xd500, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xbc00, 0xffff,
+ 0x0800, 0xffff, 0x0000, 0xffff, 0x0500, 0xffff, 0xd200, 0xffff, 0xff00, 0xffff,
+ 0xd200, 0xffff, 0x0700, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x1400, 0xffff,
+ 0xe500, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0xb900, 0xffff, 0xb500, 0xffff,
+ 0x3a00, 0xffff, 0x0083, 0xffff, 0x3c03, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xbc00, 0xffff, 0x0086, 0xffff, 0x8d09, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0x7600, 0xffff, 0x0000, 0xffff, 0x8d00, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff,
+ 0xee00, 0xffff, 0xc400, 0xffff, 0xc982, 0xffff, 0xd112, 0xffff, 0x7100, 0xffff,
+ 0x0000, 0xffff, 0xc000, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xd700, 0xffff,
+ 0x9400, 0xffff, 0xb300, 0xffff, 0xff00, 0xffff, 0xfd00, 0xffff, 0xff00, 0xffff,
+ 0xdd00, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0x9d00, 0xffff, 0xff00, 0xffff,
+ 0xef00, 0xffff, 0x2100, 0xffff, 0x0082, 0xffff, 0x110c, 0xffff, 0xd400, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0xc800, 0xffff, 0x8800, 0xffff, 0x7e00, 0xffff,
+ 0xa000, 0xffff, 0xed00, 0xffff, 0xa000, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d,
+ 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0,
+ 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x3a03, 0xffff, 0xff00, 0xffff,
+ 0xff00, 0xffff, 0x6100, 0xffff, 0x0082, 0xffff, 0x0d03, 0xffff, 0xdc00, 0xffff,
+ 0xff00, 0xffff, 0x9300, 0xffff, 0x0082, 0xffff, 0x030d, 0xffff, 0xcb00, 0xffff,
+ 0xff00, 0xffff, 0xe800, 0xffff, 0x1300, 0xffff, 0x0000, 0xffff, 0x8000, 0xffff,
+ 0xff00, 0xffff, 0xff00, 0xffff, 0x4000, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff,
+ 0x1700, 0xffff, 0xb000, 0xffff, 0xff84, 0xffff, 0xd505, 0xffff, 0x0700, 0xffff,
+ 0x2100, 0xffff, 0xf800, 0xffff, 0xff00, 0xffff, 0xa200, 0xffff, 0x0084, 0xffff,
+ 0x5101, 0xffff, 0xe100, 0xffff, 0xff84, 0xffff, 0xd604, 0xffff, 0x3f00, 0xffff,
+ 0x0000, 0xffff, 0x0000, 0xffff, 0x6400, 0xffff, 0xff84, 0xffff, 0xd906, 0xffff,
+ 0x3400, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0500, 0xffff, 0x8e00, 0xffff,
+ 0xf700, 0xffff, 0xff84, 0xffff, 0xa908, 0xffff, 0x1400, 0xffff, 0x0000, 0xffff,
+ 0x0000, 0xffff, 0x0500, 0xffff, 0xd700, 0xffff, 0xff00, 0xffff, 0xd700, 0xffff,
+ 0x0800, 0xffff, 0x0082, 0xffff, 0x7400, 0xffff, 0xff83, 0xffff, 0x4400, 0xffff,
+ 0x0083, 0xffff, 0x9c03, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0x6b00, 0xffff,
+ 0x0086, 0xffff, 0x3a05, 0xffff, 0xff00, 0xffff, 0xff00, 0xffff, 0xd000, 0xffff,
+ 0x1a00, 0xffff, 0xe900, 0xffff, 0xff87, 0xffff, 0x9903, 0xffff, 0x0000, 0xffff,
+ 0x2d00, 0xffff, 0xd600, 0xffff, 0xff83, 0xffff, 0x8a09, 0xffff, 0xc700, 0xffff,
+ 0xff00, 0xffff, 0xe200, 0xffff, 0x1000, 0xffff, 0x0000, 0xffff, 0xa100, 0xffff,
+ 0xff00, 0xffff, 0xf400, 0xffff, 0x2200, 0xffff, 0x0083, 0xffff, 0x2701, 0xffff,
+ 0xc800, 0xffff, 0xff85, 0xffff, 0x7a03, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d,
+ 0xf500, 0x355e, 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0,
+ 0xdb01, 0xfe2d, 0x0e00, 0xffff, 0x0085, 0xffff, 0x1103, 0xffff, 0x4e00, 0xffff,
+ 0x5100, 0xffff, 0x1d00, 0xffff, 0x0083, 0xffff, 0x3302, 0xffff, 0x5400, 0xffff,
+ 0x1800, 0xffff, 0x0082, 0xffff, 0x0109, 0xffff, 0x3e00, 0xffff, 0x5200, 0xffff,
+ 0x4600, 0xffff, 0x0500, 0xffff, 0x0000, 0xffff, 0x2700, 0xffff, 0x5200, 0xffff,
+ 0x4e00, 0xffff, 0x1300, 0xffff, 0x0083, 0xffff, 0x3c0a, 0xffff, 0x7a00, 0xffff,
+ 0x9400, 0xffff, 0x8b00, 0xffff, 0x6400, 0xffff, 0x2000, 0xffff, 0x0000, 0xffff,
+ 0x0a00, 0xffff, 0x4b00, 0xffff, 0x5200, 0xffff, 0x3100, 0xffff, 0x0085, 0xffff,
+ 0x1106, 0xffff, 0x5800, 0xffff, 0x8700, 0xffff, 0x9400, 0xffff, 0x8300, 0xffff,
+ 0x4f00, 0xffff, 0x0b00, 0xffff, 0x0082, 0xffff, 0x0c06, 0xffff, 0x4b00, 0xffff,
+ 0x7d00, 0xffff, 0x9400, 0xffff, 0x8800, 0xffff, 0x5800, 0xffff, 0x0e00, 0xffff,
+ 0x0084, 0xffff, 0x2905, 0xffff, 0x6d00, 0xffff, 0x8f00, 0xffff, 0x9100, 0xffff,
+ 0x7400, 0xffff, 0x3500, 0xffff, 0x0083, 0xffff, 0x0104, 0xffff, 0x4100, 0xffff,
+ 0x5200, 0xffff, 0x4100, 0xffff, 0x0200, 0xffff, 0x0083, 0xffff, 0x4404, 0xffff,
+ 0x8800, 0xffff, 0x9200, 0xffff, 0x6e00, 0xffff, 0x1100, 0xffff, 0x0082, 0xffff,
+ 0x0104, 0xffff, 0x4000, 0xffff, 0x5100, 0xffff, 0x4f00, 0xffff, 0x1000, 0xffff,
+ 0x0086, 0xffff, 0x0406, 0xffff, 0x4600, 0xffff, 0x5000, 0xffff, 0x4c00, 0xffff,
+ 0x1100, 0xffff, 0x4500, 0xffff, 0x5000, 0xffff, 0x4e85, 0xffff, 0x5212, 0xffff,
+ 0x2d00, 0xffff, 0x0000, 0xffff, 0x0000, 0xffff, 0x0f00, 0xffff, 0x5300, 0xffff,
+ 0x7400, 0xffff, 0x6900, 0xffff, 0x2e00, 0xffff, 0x0000, 0xffff, 0x3900, 0xffff,
+ 0x5200, 0xffff, 0x4500, 0xffff, 0x0500, 0xffff, 0x0000, 0xffff, 0x3100, 0xffff,
+ 0x5200, 0xffff, 0x4a00, 0xffff, 0x0a00, 0xffff, 0x0084, 0xffff, 0x060a, 0xffff,
+ 0x4a00, 0xffff, 0x8100, 0xffff, 0x9400, 0xffff, 0x8a00, 0xffff, 0x6700, 0xffff,
+ 0x2d00, 0xffff, 0x0100, 0xffff, 0x0000, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e,
+ 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d,
+ 0x0e00, 0xffff, 0x00ff, 0xffff, 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e,
+ 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d,
+ 0x0e00, 0xffff, 0x00ff, 0xffff, 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e,
+ 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d,
+ 0x0e00, 0xffff, 0x00ff, 0xffff, 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0000, 0xf300, 0x053d, 0xff89, 0x053d, 0xff04, 0x051d, 0xf500, 0x355e,
+ 0x1d00, 0xefbf, 0x9f00, 0xfed4, 0xff00, 0xfda0, 0xff89, 0xfdc0, 0xdb01, 0xfe2d,
+ 0x0e00, 0xffff, 0x00ff, 0xffff, 0x009d, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0000, 0xed00, 0x053d, 0xfa89, 0x053d, 0xfc04, 0x051d, 0xf000, 0x355e,
+ 0x1c00, 0xefbf, 0x9c00, 0xfed4, 0xff00, 0xfda0, 0xfa88, 0xfdc0, 0xff02, 0xfdc0,
+ 0xd700, 0xfe2d, 0x0e00, 0xffff, 0x00ff, 0xffff, 0x009d, 0xffff, 0x0001, 0x0000,
+ 0x0000, 0x0000, 0x00ff, 0x0000, 0x00bc, 0x0000, 0x00ff, 0x0000, 0x00bc, 0x0000
+
+};
+GX_CONST GX_PIXELMAP MAIN_DISPLAY_THEME_1_MS_AZURE_LOGO_pixelmap =
+{
+ 0x00000001, /* major version */
+ 0x00000000, /* minor version */
+ GX_PIXELMAP_COMPRESSED|GX_PIXELMAP_ALPHA, /* flags */
+ GX_COLOR_FORMAT_565RGB, /* Format */
+ (GX_UBYTE *) MAIN_DISPLAY_THEME_1_MS_AZURE_LOGO_pixelmap_data,
+ sizeof(MAIN_DISPLAY_THEME_1_MS_AZURE_LOGO_pixelmap_data), /* the size of pixelmap_data*/
+ NULL,
+ 0, /* auxiliary data size */
+ 0x00, /* used for transparent iamges */
+ 189, /* width in pixel */
+ 30 /* height in pixel */
+};
+
+/* Pixelmap Table */
+
+
+GX_CONST GX_PIXELMAP *main_display_theme_1_pixelmap_table[] =
+{
+ GX_NULL,
+ &MAIN_DISPLAY_THEME_1_RADIO_ON_pixelmap,
+ &MAIN_DISPLAY_THEME_1_RADIO_OFF_pixelmap,
+ &MAIN_DISPLAY_THEME_1_CHECKBOX_ON_pixelmap,
+ &MAIN_DISPLAY_THEME_1_CHECKBOX_OFF_pixelmap,
+ &MAIN_DISPLAY_THEME_1_MS_AZURE_LOGO_pixelmap
+};
+
+/* String values */
+
+GX_CONST GX_UBYTE main_display_STRING_1_English[] = "Hello World!";
+
+/* String Table for main_display language English */
+
+GX_CONST GX_STRING main_display_English_string_table[2] =
+{
+ {GX_NULL, 0},
+ {(GX_CONST GX_CHAR *)main_display_STRING_1_English, sizeof(main_display_STRING_1_English) - 1}
+};
+
+/* Language Table */
+
+
+GX_CONST GX_STRING *main_display_language_table[1] =
+{
+ main_display_English_string_table,
+};
+
+GX_THEME main_display_theme_1 =
+{
+ (GX_COLOR *) main_display_theme_1_color_table,
+ (GX_FONT **) main_display_theme_1_font_table,
+ (GX_PIXELMAP **) main_display_theme_1_pixelmap_table,
+ NULL,
+ {
+ 20, /* scroll width */
+ 18, /* thumb width */
+ 20, /* thumb travel min */
+ 20, /* thumb travel max */
+ 4, /* thumb border style */
+ 0, /* scroll fill pixelmap */
+ 0, /* scroll thumb pixelmap */
+ 0, /* scroll up pixelmap */
+ 0, /* scroll down pixelmap */
+ GX_COLOR_ID_CANVAS, /* scroll thumb color */
+ GX_COLOR_ID_CANVAS, /* scroll thumb border color */
+ GX_COLOR_ID_SCROLL_BUTTON, /* scroll button color */
+ },
+ {
+ 20, /* scroll width */
+ 18, /* thumb width */
+ 20, /* thumb travel min */
+ 20, /* thumb travel max */
+ 4, /* thumb border style */
+ 0, /* scroll fill pixelmap */
+ 0, /* scroll thumb pixelmap */
+ 0, /* scroll up pixelmap */
+ 0, /* scroll down pixelmap */
+ GX_COLOR_ID_CANVAS, /* scroll thumb color */
+ GX_COLOR_ID_CANVAS, /* scroll thumb border color */
+ GX_COLOR_ID_SCROLL_BUTTON, /* scroll button color */
+ },
+ GX_SCROLLBAR_RELATIVE_THUMB|GX_SCROLLBAR_END_BUTTONS|GX_SCROLLBAR_VERTICAL,
+ GX_SCROLLBAR_RELATIVE_THUMB|GX_SCROLLBAR_END_BUTTONS|GX_SCROLLBAR_HORIZONTAL,
+ 30, /* color table size */
+ 4, /* font table size */
+ 6, /* pixelmap table size */
+ 0 /* palette size */
+
+};
+GX_CONST GX_THEME *main_display_theme_table[1] =
+{
+ &main_display_theme_1
+};
+
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.h b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.h
new file mode 100644
index 00000000..a247f8a5
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_resources.h
@@ -0,0 +1,51 @@
+/*******************************************************************************/
+/* This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this */
+/* file by hand. Modifications to this file should only be made by running */
+/* the Azure RTOS GUIX Studio application and re-generating the application */
+/* resource file(s). For more information please refer to the Azure RTOS GUIX */
+/* Studio User Guide, or visit our web site at azure.com/rtos */
+/* */
+/* GUIX Studio Revision 6.2.1.5 (Preview Version) */
+/* Date (dd.mm.yyyy): 17. 8.2023 Time (hh:mm): 15:56 */
+/*******************************************************************************/
+
+
+#ifndef _DEMO_GUIX_BINRES_STANDALONE_MAIN_DISPLAY_RESOURCES_H_
+#define _DEMO_GUIX_BINRES_STANDALONE_MAIN_DISPLAY_RESOURCES_H_
+
+#include "gx_api.h"
+
+/* Display and theme definitions */
+
+#define MAIN_DISPLAY 0
+#define MAIN_DISPLAY_COLOR_FORMAT GX_COLOR_FORMAT_565RGB
+#define MAIN_DISPLAY_X_RESOLUTION 640
+#define MAIN_DISPLAY_Y_RESOLUTION 480
+#define MAIN_DISPLAY_THEME_1 0
+#define MAIN_DISPLAY_THEME_TABLE_SIZE 1
+
+/* Language definitions */
+
+#define LANGUAGE_ENGLISH 0
+#define MAIN_DISPLAY_LANGUAGE_TABLE_SIZE 1
+
+/* Color ID definitions */
+
+#define GX_COLOR_ID_BLUE 29
+#define MAIN_DISPLAY_COLOR_TABLE_SIZE 30
+
+/* Font ID definitions */
+
+#define MAIN_DISPLAY_FONT_TABLE_SIZE 4
+
+/* Pixelmap ID definitions */
+
+#define GX_PIXELMAP_ID_MS_AZURE_LOGO 5
+#define MAIN_DISPLAY_PIXELMAP_TABLE_SIZE 6
+
+/* String Ids */
+
+#define GX_STRING_ID_STRING_1 1
+#define MAIN_DISPLAY_STRING_TABLE_SIZE 2
+
+#endif /* sentry */
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.c b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.c
new file mode 100644
index 00000000..afa9f30b
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.c
@@ -0,0 +1,425 @@
+/*******************************************************************************/
+/* This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this */
+/* file by hand. Modifications to this file should only be made by running */
+/* the Azure RTOS GUIX Studio application and re-generating the application */
+/* specification file(s). For more information please refer to the Azure RTOS */
+/* GUIX Studio User Guide, or visit our web site at azure.com/rtos */
+/* */
+/* GUIX Studio Revision 6.2.1.5 (Preview Version) */
+/* Date (dd.mm.yyyy): 17. 8.2023 Time (hh:mm): 15:56 */
+/*******************************************************************************/
+
+
+#define GUIX_STUDIO_GENERATED_FILE
+#include
+#include "demo_guix_binres_standalone_resources.h"
+#include "demo_guix_binres_standalone_specifications.h"
+
+static GX_WIDGET *gx_studio_nested_widget_create(GX_BYTE *control, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent);
+MAIN_SCREEN_CONTROL_BLOCK main_screen;
+GX_DISPLAY main_display_control_block;
+GX_WINDOW_ROOT main_display_root_window;
+GX_CANVAS main_display_canvas_control_block;
+ULONG main_display_canvas_memory[153600];
+
+extern GX_CONST GX_THEME *main_display_theme_table[];
+extern GX_CONST GX_STRING *main_display_language_table[];
+
+GX_STUDIO_DISPLAY_INFO demo_guix_binres_standalone_display_table[1] =
+{
+ {
+ "main_display",
+ "main_display_canvas",
+ main_display_theme_table,
+ main_display_language_table,
+ MAIN_DISPLAY_THEME_TABLE_SIZE,
+ MAIN_DISPLAY_LANGUAGE_TABLE_SIZE,
+ MAIN_DISPLAY_STRING_TABLE_SIZE,
+ 640, /* x resolution */
+ 480, /* y resolution */
+ &main_display_control_block,
+ &main_display_canvas_control_block,
+ &main_display_root_window,
+ main_display_canvas_memory, /* canvas memory area */
+ 614400, /* canvas memory size in bytes */
+ GX_SCREEN_ROTATION_NONE /* rotation angle */
+ }
+};
+
+
+UINT gx_studio_icon_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent)
+{
+ UINT status;
+ GX_ICON *icon = (GX_ICON *) control_block;
+ GX_ICON_PROPERTIES *props = (GX_ICON_PROPERTIES *) info->properties;
+ status = gx_icon_create(icon, info->widget_name, parent, props->normal_pixelmap_id, info->style, info->widget_id, info->size.gx_rectangle_left, info->size.gx_rectangle_top);
+ if (props->selected_pixelmap_id)
+ {
+ gx_icon_pixelmap_set(icon, props->normal_pixelmap_id, props->selected_pixelmap_id);
+ }
+ else
+ {
+ gx_widget_resize((GX_WIDGET *)icon, (GX_RECTANGLE *)&info->size);
+ }
+ return status;
+}
+
+UINT gx_studio_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent)
+{
+ UINT status;
+ GX_PROMPT *prompt = (GX_PROMPT *) control_block;
+ GX_PROMPT_PROPERTIES *props = (GX_PROMPT_PROPERTIES *) info->properties;
+ status = gx_prompt_create(prompt, info->widget_name, parent, props->string_id, info->style, info->widget_id, &info->size);
+ if (status == GX_SUCCESS)
+ {
+ gx_prompt_font_set(prompt, props->font_id);
+#if defined(GUIX_5_4_0_COMPATIBILITY)
+ gx_prompt_text_color_set(prompt, props->normal_text_color_id, props->selected_text_color_id);
+#else
+ gx_prompt_text_color_set(prompt, props->normal_text_color_id, props->selected_text_color_id, props->disabled_text_color_id);
+#endif
+ }
+ return status;
+}
+
+UINT gx_studio_window_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent)
+{
+ UINT status;
+ GX_WINDOW *window = (GX_WINDOW *) control_block;
+ GX_WINDOW_PROPERTIES *props = (GX_WINDOW_PROPERTIES *) info->properties;
+ status = gx_window_create(window, info->widget_name, parent, info->style, info->widget_id, &info->size);
+ if (status == GX_SUCCESS)
+ {
+ if (props->wallpaper_id)
+ {
+ gx_window_wallpaper_set(window, props->wallpaper_id, info->style & GX_STYLE_TILE_WALLPAPER);
+ }
+ }
+ return status;
+}
+GX_WINDOW_PROPERTIES main_screen_properties =
+{
+ 0 /* wallpaper pixelmap id */
+};
+GX_ICON_PROPERTIES main_screen_express_logo_properties =
+{
+ GX_PIXELMAP_ID_MS_AZURE_LOGO, /* normal pixelmap id */
+ 0 /* selected pixelmap id */
+};
+GX_WINDOW_PROPERTIES main_screen_pixelmap_window_properties =
+{
+ 0 /* wallpaper pixelmap id */
+};
+GX_PROMPT_PROPERTIES main_screen_prompt_properties =
+{
+ GX_STRING_ID_STRING_1, /* string id */
+ GX_FONT_ID_SYSTEM, /* font id */
+ GX_COLOR_ID_TEXT, /* normal text color */
+ GX_COLOR_ID_SELECTED_TEXT, /* selected text color */
+ GX_COLOR_ID_DISABLED_TEXT /* disabled text color */
+};
+
+GX_CONST GX_STUDIO_WIDGET main_screen_prompt_define =
+{
+ "prompt",
+ GX_TYPE_PROMPT, /* widget type */
+ GX_ID_NONE, /* widget id */
+ #if defined(GX_WIDGET_USER_DATA)
+ 0, /* user data */
+ #endif
+ GX_STYLE_BORDER_THIN|GX_STYLE_TRANSPARENT|GX_STYLE_ENABLED|GX_STYLE_TEXT_CENTER, /* style flags */
+ GX_STATUS_ACCEPTS_FOCUS, /* status flags */
+ sizeof(GX_PROMPT), /* control block size */
+ GX_COLOR_ID_WIDGET_FILL, /* normal color id */
+ GX_COLOR_ID_SELECTED_FILL, /* selected color id */
+ GX_COLOR_ID_DISABLED_FILL, /* disabled color id */
+ gx_studio_prompt_create, /* create function */
+ (VOID (*)(GX_WIDGET *)) text_draw, /* drawing function override */
+ GX_NULL, /* event function override */
+ {388, 107, 541, 151}, /* widget size */
+ GX_NULL, /* no next widget */
+ GX_NULL, /* no child widgets */
+ offsetof(MAIN_SCREEN_CONTROL_BLOCK, main_screen_prompt), /* control block */
+ (void *) &main_screen_prompt_properties /* extended properties */
+};
+
+GX_CONST GX_STUDIO_WIDGET main_screen_pixelmap_window_define =
+{
+ "pixelmap_window",
+ GX_TYPE_WINDOW, /* widget type */
+ GX_ID_NONE, /* widget id */
+ #if defined(GX_WIDGET_USER_DATA)
+ 0, /* user data */
+ #endif
+ GX_STYLE_BORDER_THIN|GX_STYLE_TRANSPARENT|GX_STYLE_ENABLED, /* style flags */
+ GX_STATUS_ACCEPTS_FOCUS, /* status flags */
+ sizeof(GX_WINDOW), /* control block size */
+ GX_COLOR_ID_WINDOW_FILL, /* normal color id */
+ GX_COLOR_ID_WINDOW_FILL, /* selected color id */
+ GX_COLOR_ID_DISABLED_FILL, /* disabled color id */
+ gx_studio_window_create, /* create function */
+ (VOID (*)(GX_WIDGET *)) pixelmap_window_draw, /* drawing function override */
+ GX_NULL, /* event function override */
+ {114, 98, 310, 366}, /* widget size */
+ &main_screen_prompt_define, /* next widget definition */
+ GX_NULL, /* no child widgets */
+ offsetof(MAIN_SCREEN_CONTROL_BLOCK, main_screen_pixelmap_window), /* control block */
+ (void *) &main_screen_pixelmap_window_properties /* extended properties */
+};
+
+GX_CONST GX_STUDIO_WIDGET main_screen_express_logo_define =
+{
+ "express_logo",
+ GX_TYPE_ICON, /* widget type */
+ GX_ID_NONE, /* widget id */
+ #if defined(GX_WIDGET_USER_DATA)
+ 0, /* user data */
+ #endif
+ GX_STYLE_BORDER_NONE|GX_STYLE_TRANSPARENT|GX_STYLE_ENABLED|GX_STYLE_HALIGN_LEFT|GX_STYLE_VALIGN_TOP, /* style flags */
+ GX_STATUS_ACCEPTS_FOCUS, /* status flags */
+ sizeof(GX_ICON), /* control block size */
+ GX_COLOR_ID_WIDGET_FILL, /* normal color id */
+ GX_COLOR_ID_SELECTED_FILL, /* selected color id */
+ GX_COLOR_ID_WIDGET_FILL, /* disabled color id */
+ gx_studio_icon_create, /* create function */
+ GX_NULL, /* drawing function override */
+ GX_NULL, /* event function override */
+ {18, 18, 206, 47}, /* widget size */
+ &main_screen_pixelmap_window_define, /* next widget definition */
+ GX_NULL, /* no child widgets */
+ offsetof(MAIN_SCREEN_CONTROL_BLOCK, main_screen_express_logo), /* control block */
+ (void *) &main_screen_express_logo_properties /* extended properties */
+};
+
+GX_CONST GX_STUDIO_WIDGET main_screen_define =
+{
+ "main_screen",
+ GX_TYPE_WINDOW, /* widget type */
+ GX_ID_NONE, /* widget id */
+ #if defined(GX_WIDGET_USER_DATA)
+ 0, /* user data */
+ #endif
+ GX_STYLE_BORDER_NONE, /* style flags */
+ GX_STATUS_ACCEPTS_FOCUS, /* status flags */
+ sizeof(MAIN_SCREEN_CONTROL_BLOCK), /* control block size */
+ GX_COLOR_ID_CANVAS, /* normal color id */
+ GX_COLOR_ID_CANVAS, /* selected color id */
+ GX_COLOR_ID_CANVAS, /* disabled color id */
+ gx_studio_window_create, /* create function */
+ GX_NULL, /* drawing function override */
+ GX_NULL, /* event function override */
+ {0, 0, 639, 479}, /* widget size */
+ GX_NULL, /* next widget */
+ &main_screen_express_logo_define, /* child widget */
+ 0, /* control block */
+ (void *) &main_screen_properties /* extended properties */
+};
+GX_CONST GX_STUDIO_WIDGET_ENTRY demo_guix_binres_standalone_widget_table[] =
+{
+ { &main_screen_define, (GX_WIDGET *) &main_screen },
+ {GX_NULL, GX_NULL}
+};
+
+static GX_WIDGET *gx_studio_nested_widget_create(GX_BYTE *control, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent)
+{
+ UINT status = GX_SUCCESS;
+ GX_WIDGET *widget = GX_NULL;
+ GX_VALUE list_count = 0;
+ GX_VALUE list_total_count = 0;
+
+ if(parent && (parent->gx_widget_type == GX_TYPE_MENU))
+ {
+ list_total_count = ((GX_MENU *)parent)->gx_menu_list_total_count;
+ }
+
+ while(definition && status == GX_SUCCESS)
+ {
+ if (definition->create_function)
+ {
+ if (definition->style & GX_STYLE_DYNAMICALLY_ALLOCATED)
+ {
+ status = gx_widget_allocate(&widget, definition->control_block_size);
+ if (status != GX_SUCCESS)
+ {
+ return GX_NULL;
+ }
+ }
+ else
+ {
+ if (control == GX_NULL)
+ {
+ return GX_NULL;
+ }
+ widget = (GX_WIDGET *) (control + definition->control_block_offset);
+ }
+
+ status = definition->create_function(definition, widget, parent);
+
+ if(list_count < list_total_count)
+ {
+ gx_menu_insert((GX_MENU *)parent, widget);
+ ((GX_MENU *)parent)->gx_menu_list_total_count--;
+ list_count++;
+ }
+
+ if (status == GX_SUCCESS)
+ {
+ if (definition->widget_type != GX_TYPE_TEMPLATE)
+ {
+#if defined(GUIX_5_4_0_COMPATIBILITY)
+ gx_widget_fill_color_set(widget, definition->normal_fill_color_id, definition->selected_fill_color_id);
+#else
+ gx_widget_fill_color_set(widget, definition->normal_fill_color_id, definition->selected_fill_color_id, definition->disabled_fill_color_id);
+#endif
+ }
+
+ if (!(definition->status & GX_STATUS_ACCEPTS_FOCUS))
+ {
+ gx_widget_status_remove(widget, GX_STATUS_ACCEPTS_FOCUS);
+ }
+
+ if (definition->draw_function)
+ {
+ gx_widget_draw_set(widget, definition->draw_function);
+ }
+ if (definition->event_function)
+ {
+ gx_widget_event_process_set(widget, definition->event_function);
+ }
+
+ #if defined(GX_WIDGET_USER_DATA)
+ widget->gx_widget_user_data = definition->user_data;
+ #endif
+
+ if (definition->child_widget)
+ {
+ gx_studio_nested_widget_create(control, definition->child_widget, widget);
+ }
+ }
+ definition = definition->next_widget;
+ }
+ }
+ return widget;
+}
+
+GX_WIDGET *gx_studio_widget_create(GX_BYTE *control, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent)
+{
+ GX_WIDGET *widget;
+ widget = gx_studio_nested_widget_create(control, definition, GX_NULL);
+
+ if (parent && widget)
+ {
+ gx_widget_attach(parent, widget);
+ }
+ return widget;
+}
+
+UINT gx_studio_named_widget_create(char *name, GX_WIDGET *parent, GX_WIDGET **new_widget)
+{
+ UINT status = GX_FAILURE;
+ GX_CONST GX_STUDIO_WIDGET_ENTRY *entry = demo_guix_binres_standalone_widget_table;
+ GX_WIDGET *widget = GX_NULL;
+
+ while(entry->widget_information)
+ {
+ if (!strcmp(name, entry->widget_information->widget_name))
+ {
+ widget = gx_studio_widget_create((GX_BYTE *) entry->widget, entry->widget_information, parent);
+ if (widget)
+ {
+ status = GX_SUCCESS;
+ }
+ break;
+ }
+ entry++;
+ }
+
+ if (new_widget)
+ {
+ *new_widget = widget;
+ }
+ return status;
+}
+
+
+UINT gx_studio_display_configure(USHORT display, UINT (*driver)(GX_DISPLAY *),
+ GX_UBYTE language, USHORT theme, GX_WINDOW_ROOT **return_root)
+{
+ GX_CONST GX_THEME *theme_ptr;
+ GX_RECTANGLE size;
+
+ GX_STUDIO_DISPLAY_INFO *display_info = &demo_guix_binres_standalone_display_table[display];
+
+
+/* create the requested display */
+
+ gx_display_create(display_info->display,
+ display_info->name,
+ driver,
+ (GX_VALUE) display_info->x_resolution,
+ (GX_VALUE) display_info->y_resolution);
+
+
+/* install the request theme */
+
+ if(display_info->theme_table)
+ {
+ theme_ptr = display_info->theme_table[theme];
+ if(theme_ptr)
+ {
+ gx_display_color_table_set(display_info->display, theme_ptr->theme_color_table, theme_ptr->theme_color_table_size);
+
+/* install the color palette if required */
+ if (display_info->display->gx_display_driver_palette_set &&
+ theme_ptr->theme_palette != NULL)
+ {
+ display_info->display->gx_display_driver_palette_set(display_info->display, theme_ptr->theme_palette, theme_ptr->theme_palette_size);
+ }
+
+ gx_display_font_table_set(display_info->display, theme_ptr->theme_font_table, theme_ptr->theme_font_table_size);
+ gx_display_pixelmap_table_set(display_info->display, theme_ptr->theme_pixelmap_table, theme_ptr->theme_pixelmap_table_size);
+ gx_system_scroll_appearance_set(theme_ptr->theme_vertical_scroll_style, (GX_SCROLLBAR_APPEARANCE *) &theme_ptr->theme_vertical_scrollbar_appearance);
+ gx_system_scroll_appearance_set(theme_ptr->theme_horizontal_scroll_style, (GX_SCROLLBAR_APPEARANCE *) &theme_ptr->theme_horizontal_scrollbar_appearance);
+ }
+ }
+
+/* Install the language table. */
+
+ if(display_info->language_table)
+ {
+ gx_display_language_table_set_ext(display_info->display, display_info->language_table, (GX_UBYTE) display_info->language_table_size, display_info->string_table_size);
+ gx_display_active_language_set(display_info->display, language);
+ }
+
+/* Set screen rotation angle. */
+
+ display_info->display->gx_display_rotation_angle = display_info->rotation_angle;
+
+/* create the canvas for this display */
+
+ gx_canvas_create(display_info->canvas,
+ display_info->canvas_name,
+ display_info->display,
+ GX_CANVAS_MANAGED | GX_CANVAS_VISIBLE,
+ display_info->x_resolution,
+ display_info->y_resolution,
+ display_info->canvas_memory,
+ display_info->canvas_memory_size);
+
+/* Create the root window for this canvas */
+
+ gx_utility_rectangle_define(&size,
+ 0, 0,
+ (GX_VALUE) (display_info->x_resolution - 1),
+ (GX_VALUE) (display_info->y_resolution - 1));
+
+ gx_window_root_create(display_info->root_window,
+ display_info->name,
+ display_info->canvas, GX_STYLE_NONE, 0, &size);
+ if (return_root)
+ {
+ *return_root = display_info->root_window;
+ }
+ return GX_SUCCESS;
+}
+#undef GUIX_STUDIO_GENERATED_FILE
diff --git a/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.h b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.h
new file mode 100644
index 00000000..cf5a70f0
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/demo_guix_binres_standalone_specifications.h
@@ -0,0 +1,150 @@
+/*******************************************************************************/
+/* This file is auto-generated by Azure RTOS GUIX Studio. Do not edit this */
+/* file by hand. Modifications to this file should only be made by running */
+/* the Azure RTOS GUIX Studio application and re-generating the application */
+/* specification file(s). For more information please refer to the Azure RTOS */
+/* GUIX Studio User Guide, or visit our web site at azure.com/rtos */
+/* */
+/* GUIX Studio Revision 6.2.1.5 (Preview Version) */
+/* Date (dd.mm.yyyy): 17. 8.2023 Time (hh:mm): 15:56 */
+/*******************************************************************************/
+
+
+#ifndef _DEMO_GUIX_BINRES_STANDALONE_SPECIFICATIONS_H_
+#define _DEMO_GUIX_BINRES_STANDALONE_SPECIFICATIONS_H_
+
+#include "gx_api.h"
+
+/* Determine if C++ compiler is being used, if so use standard C. */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define widget ids */
+
+
+
+/* Define animation ids */
+
+#define GX_NEXT_ANIMATION_ID 1
+
+
+/* Define user event ids */
+
+#define GX_NEXT_USER_EVENT_ID GX_FIRST_USER_EVENT
+
+
+/* Declare properties structures for each utilized widget type */
+
+typedef struct GX_STUDIO_WIDGET_STRUCT
+{
+ GX_CHAR *widget_name;
+ USHORT widget_type;
+ USHORT widget_id;
+ #if defined(GX_WIDGET_USER_DATA)
+ INT user_data;
+ #endif
+ ULONG style;
+ ULONG status;
+ ULONG control_block_size;
+ GX_RESOURCE_ID normal_fill_color_id;
+ GX_RESOURCE_ID selected_fill_color_id;
+ GX_RESOURCE_ID disabled_fill_color_id;
+ UINT (*create_function) (GX_CONST struct GX_STUDIO_WIDGET_STRUCT *, GX_WIDGET *, GX_WIDGET *);
+ void (*draw_function) (GX_WIDGET *);
+ UINT (*event_function) (GX_WIDGET *, GX_EVENT *);
+ GX_RECTANGLE size;
+ GX_CONST struct GX_STUDIO_WIDGET_STRUCT *next_widget;
+ GX_CONST struct GX_STUDIO_WIDGET_STRUCT *child_widget;
+ ULONG control_block_offset;
+ GX_CONST void *properties;
+} GX_STUDIO_WIDGET;
+
+typedef struct
+{
+ GX_CONST GX_STUDIO_WIDGET *widget_information;
+ GX_WIDGET *widget;
+} GX_STUDIO_WIDGET_ENTRY;
+
+typedef struct
+{
+ GX_RESOURCE_ID normal_pixelmap_id;
+ GX_RESOURCE_ID selected_pixelmap_id;
+} GX_ICON_PROPERTIES;
+
+typedef struct
+{
+ GX_RESOURCE_ID string_id;
+ GX_RESOURCE_ID font_id;
+ GX_RESOURCE_ID normal_text_color_id;
+ GX_RESOURCE_ID selected_text_color_id;
+ GX_RESOURCE_ID disabled_text_color_id;
+} GX_PROMPT_PROPERTIES;
+
+typedef struct
+{
+ GX_RESOURCE_ID wallpaper_id;
+} GX_WINDOW_PROPERTIES;
+
+
+/* Declare top-level control blocks */
+
+typedef struct MAIN_SCREEN_CONTROL_BLOCK_STRUCT
+{
+ GX_WINDOW_MEMBERS_DECLARE
+ GX_ICON main_screen_express_logo;
+ GX_WINDOW main_screen_pixelmap_window;
+ GX_PROMPT main_screen_prompt;
+} MAIN_SCREEN_CONTROL_BLOCK;
+
+
+/* extern statically defined control blocks */
+
+#ifndef GUIX_STUDIO_GENERATED_FILE
+extern MAIN_SCREEN_CONTROL_BLOCK main_screen;
+#endif
+
+/* Declare event process functions, draw functions, and callback functions */
+
+VOID pixelmap_window_draw(GX_WINDOW *widget);
+VOID text_draw(GX_PROMPT *widget);
+
+/* Declare the GX_STUDIO_DISPLAY_INFO structure */
+
+
+typedef struct GX_STUDIO_DISPLAY_INFO_STRUCT
+{
+ GX_CONST GX_CHAR *name;
+ GX_CONST GX_CHAR *canvas_name;
+ GX_CONST GX_THEME **theme_table;
+ GX_CONST GX_STRING **language_table;
+ USHORT theme_table_size;
+ USHORT language_table_size;
+ UINT string_table_size;
+ UINT x_resolution;
+ UINT y_resolution;
+ GX_DISPLAY *display;
+ GX_CANVAS *canvas;
+ GX_WINDOW_ROOT *root_window;
+ GX_COLOR *canvas_memory;
+ ULONG canvas_memory_size;
+ USHORT rotation_angle;
+} GX_STUDIO_DISPLAY_INFO;
+
+
+/* Declare Studio-generated functions for creating top-level widgets */
+
+UINT gx_studio_icon_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
+UINT gx_studio_prompt_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
+UINT gx_studio_window_create(GX_CONST GX_STUDIO_WIDGET *info, GX_WIDGET *control_block, GX_WIDGET *parent);
+GX_WIDGET *gx_studio_widget_create(GX_BYTE *storage, GX_CONST GX_STUDIO_WIDGET *definition, GX_WIDGET *parent);
+UINT gx_studio_named_widget_create(char *name, GX_WIDGET *parent, GX_WIDGET **new_widget);
+UINT gx_studio_display_configure(USHORT display, UINT (*driver)(GX_DISPLAY *), GX_UBYTE language, USHORT theme, GX_WINDOW_ROOT **return_root);
+
+/* Determine if a C++ compiler is being used. If so, complete the standard
+ C conditional started above. */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* sentry */
diff --git a/tutorials/demo_guix_binres_standalone/font_vera.bin b/tutorials/demo_guix_binres_standalone/font_vera.bin
new file mode 100644
index 00000000..55d16819
Binary files /dev/null and b/tutorials/demo_guix_binres_standalone/font_vera.bin differ
diff --git a/tutorials/demo_guix_binres_standalone/font_vera.xml b/tutorials/demo_guix_binres_standalone/font_vera.xml
new file mode 100644
index 00000000..f433d3ae
--- /dev/null
+++ b/tutorials/demo_guix_binres_standalone/font_vera.xml
@@ -0,0 +1,34 @@
+
+
+
+
+font_vera
+56
+GUIX Studio
+6020105
+60201
+Generic
+Generic
+FALSE
+
+
+GX_COLOR_FORMAT_565RGB
+None
+
+
+FONT
+VERA
+
+..\..\fonts\verasans\Vera.ttf
+project_relative
+
+FALSE
+20
+8
+FALSE
+
+32
+126
+
+
+
diff --git a/tutorials/demo_guix_binres_standalone/graphics/MS-Azure_logo.png b/tutorials/demo_guix_binres_standalone/graphics/MS-Azure_logo.png
new file mode 100644
index 00000000..91c1186b
Binary files /dev/null and b/tutorials/demo_guix_binres_standalone/graphics/MS-Azure_logo.png differ
diff --git a/tutorials/demo_guix_binres_standalone/graphics/red_apple.png b/tutorials/demo_guix_binres_standalone/graphics/red_apple.png
new file mode 100644
index 00000000..36b44caf
Binary files /dev/null and b/tutorials/demo_guix_binres_standalone/graphics/red_apple.png differ
diff --git a/tutorials/demo_guix_binres_standalone/pixelmap_red_apple.bin b/tutorials/demo_guix_binres_standalone/pixelmap_red_apple.bin
new file mode 100644
index 00000000..b3ca818f
Binary files /dev/null and b/tutorials/demo_guix_binres_standalone/pixelmap_red_apple.bin differ