1 /*************************************************************************** 2 * Copyright (c) 2024 Microsoft Corporation 3 * 4 * This program and the accompanying materials are made available under the 5 * terms of the MIT License which is available at 6 * https://opensource.org/licenses/MIT. 7 * 8 * SPDX-License-Identifier: MIT 9 **************************************************************************/ 10 11 12 /**************************************************************************/ 13 /**************************************************************************/ 14 /** */ 15 /** GUIX Component */ 16 /** */ 17 /** Binres Loader Management (Binres Loader) */ 18 /** */ 19 /**************************************************************************/ 20 /**************************************************************************/ 21 22 23 /**************************************************************************/ 24 /* */ 25 /* COMPONENT DEFINITION RELEASE */ 26 /* */ 27 /* gx_binres_loader.h PORTABLE C */ 28 /* 6.3.0 */ 29 /* AUTHOR */ 30 /* */ 31 /* Kenneth Maxwell, Microsoft Corporation */ 32 /* */ 33 /* DESCRIPTION */ 34 /* */ 35 /* This file defines the GUIX binres loader component, */ 36 /* including all data types and external references. It is assumed */ 37 /* that gx_api.h and gx_port.h have already been included. */ 38 /* */ 39 /* RELEASE HISTORY */ 40 /* */ 41 /* DATE NAME DESCRIPTION */ 42 /* */ 43 /* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */ 44 /* 09-30-2020 Kenneth Maxwell Modified comment(s), */ 45 /* defined macros to read */ 46 /* integer value, */ 47 /* resulting in version 6.1 */ 48 /* 10-31-2023 Ting Zhu Modified comment(s), */ 49 /* declared new prototypes, */ 50 /* resulting in version 6.3.0 */ 51 /* */ 52 /**************************************************************************/ 53 54 #ifndef GX_BINRES_LOADER_H 55 #define GX_BINRES_LOADER_H 56 57 #define GX_BINRES_VERSION_ADD_STRING_LENGTH 50600 58 59 #define GX_BINRES_READ_GX_UBYTE(dest, src) (dest) = (GX_UBYTE)(src)[0] 60 #define GX_BINRES_READ_GX_BYTE(dest, src) (dest) = (GX_BYTE)(src)[0] 61 #define GX_BINRES_READ_USHORT(dest, src) (dest) = (USHORT)(((src)[1] << 8) | (src)[0]) 62 #define GX_BINRES_READ_SHORT(dest, src) (dest) = (SHORT)(((src)[1] << 8) | (src)[0]) 63 #define GX_BINRES_READ_GX_VALUE(dest, src) (dest) = (GX_VALUE)(((src)[1] << 8) | (src)[0]) 64 #define GX_BINRES_READ_ULONG(dest, src) (dest) = (ULONG)(((src)[3] << 24) | ((src)[2] << 16) | ((src)[1] << 8) | (src)[0]) 65 66 #ifdef GX_BINARY_RESOURCE_SUPPORT 67 typedef struct GX_BINRES_DATA_INFO_STRUCT 68 { 69 GX_UBYTE *gx_binres_root_address; 70 UINT gx_binres_read_offset; 71 GX_UBYTE *gx_binres_buffer; 72 UINT gx_binres_buffer_size; 73 UINT gx_binres_buffer_index; 74 } GX_BINRES_DATA_INFO; 75 76 /* Define utility component function prototypes. */ 77 78 UINT _gx_binres_language_count_get(GX_UBYTE *root_address, GX_VALUE *put_count); 79 UINT _gx_binres_language_info_load(GX_UBYTE *root_address, GX_LANGUAGE_HEADER *put_info); 80 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 81 UINT _gx_binres_language_table_load(GX_UBYTE *root_address, GX_UBYTE ****returned_language_table); 82 #endif 83 UINT _gx_binres_language_table_load_ext(GX_UBYTE *root_address, GX_STRING ***returned_language_table); 84 UINT _gx_binres_theme_load(GX_UBYTE *root_address, INT theme_id, GX_THEME **returned_theme); 85 UINT _gx_binres_resource_header_load(GX_BINRES_DATA_INFO *info, GX_RESOURCE_HEADER *header); 86 87 UINT _gx_binres_string_header_load(GX_BINRES_DATA_INFO *info, GX_STRING_HEADER *header); 88 UINT _gx_binres_language_header_load(GX_BINRES_DATA_INFO *info, GX_LANGUAGE_HEADER *header); 89 UINT _gx_binres_one_pixelmap_load(GX_BINRES_DATA_INFO *info, GX_PIXELMAP **returned_pixelmap, USHORT *map_id); 90 UINT _gx_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap); 91 UINT _gx_binres_font_buffer_size_get(GX_BINRES_DATA_INFO *info, UINT *buffer_size, GX_BOOL reset_read_offset); 92 UINT _gx_binres_one_font_load(GX_BINRES_DATA_INFO *info, GX_FONT **return_font); 93 UINT _gx_binres_font_header_load(GX_BINRES_DATA_INFO *info, GX_FONT_HEADER *header); 94 UINT _gx_binres_font_load(GX_UBYTE *root_address, UINT font_index, GX_UBYTE *buffer, ULONG *buffer_size); 95 UINT _gx_binres_standalone_resource_seek(GX_BINRES_DATA_INFO *info, UINT res_index); 96 97 /* Define error checking shells for API services. These are only referenced by the 98 application. */ 99 100 UINT _gxe_binres_language_count_get(GX_UBYTE *root_address, GX_VALUE *put_count); 101 UINT _gxe_binres_language_info_load(GX_UBYTE *root_address, GX_LANGUAGE_HEADER *put_info); 102 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 103 UINT _gxe_binres_language_table_load(GX_UBYTE *root_address, GX_UBYTE ****returned_language_table); 104 #endif 105 UINT _gxe_binres_language_table_load_ext(GX_UBYTE *root_address, GX_STRING ***returned_language_table); 106 UINT _gxe_binres_theme_load(GX_UBYTE *root_address, INT theme_id, GX_THEME **returned_theme); 107 UINT _gxe_binres_pixelmap_load(GX_UBYTE *root_address, UINT map_index, GX_PIXELMAP *pixelmap); 108 UINT _gxe_binres_font_load(GX_UBYTE *root_address, UINT res_index, GX_UBYTE *buffer, ULONG *buffer_size); 109 110 #endif 111 112 #endif 113 114