mirror of
https://github.com/azure-rtos/guix.git
synced 2025-02-04 07:13:17 +08:00
175 lines
9.0 KiB
C
175 lines
9.0 KiB
C
/**************************************************************************/
|
|
/* */
|
|
/* 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 */
|
|
/** */
|
|
/** Image Reader Management (Image Reader) */
|
|
/** */
|
|
/**************************************************************************/
|
|
/**************************************************************************/
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* COMPONENT DEFINITION RELEASE */
|
|
/* */
|
|
/* gx_image_reader.h PORTABLE C */
|
|
/* 6.0 */
|
|
/* AUTHOR */
|
|
/* */
|
|
/* Kenneth Maxwell, Microsoft Corporation */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* This file defines the GUIX image reader management component, */
|
|
/* including all data types and external references. It is assumed */
|
|
/* that gx_api.h and gx_port.h have already been included. */
|
|
/* */
|
|
/* RELEASE HISTORY */
|
|
/* */
|
|
/* DATE NAME DESCRIPTION */
|
|
/* */
|
|
/* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
|
|
/* */
|
|
/**************************************************************************/
|
|
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
|
|
#ifndef GX_IMAGE_READER_H
|
|
#define GX_IMAGE_READER_H
|
|
|
|
#define GX_IMAGE_FORMAT_1BPP 0xf0
|
|
#define GX_IMAGE_FORMAT_2BPP 0xf1
|
|
#define GX_IMAGE_FORMAT_4BPP 0xf2
|
|
#define GX_IMAGE_FORMAT_8BPP 0xf3
|
|
#define GX_IMAGE_FORMAT_16BPP_GRAY 0xf4 /* Internal format: 16bits for each gray value. */
|
|
#define GX_IMAGE_FORMAT_16BPP_GRAY_ALPHA 0xf5 /* Internal format: gray: alpha stream, 8 bits. */
|
|
#define GX_IMAGE_FORMAT_32BPP_GRAY_ALPHA 0xf6 /* Internal format: gray: alpha steam, 16bits. */
|
|
#define GX_IMAGE_FORMAT_24BPP 0xf7 /* Internal format: r:g:b stream, 8bits for each channel. */
|
|
#define GX_IMAGE_FORMAT_32BPP 0xf8 /* Internal format: r:g:b:a strem, 8bits for each channel. */
|
|
#define GX_IMAGE_FORMAT_48BPP 0xf9 /* Internal format: r:g:b stream, 16bits for each channel. */
|
|
#define GX_IMAGE_FORMAT_64BPP 0xfa /* Internal format: r:g:b:a stream, 16bits for each channel */
|
|
|
|
#define GX_TRANSPARENT_COLOR 0xff
|
|
|
|
/* Control block used internally for jpeg reader. */
|
|
|
|
typedef struct GX_JPEG_INFO_STRUCT
|
|
{
|
|
USHORT gx_jpeg_width;
|
|
USHORT gx_jpeg_height;
|
|
INT gx_jpeg_num_of_components;
|
|
GX_UBYTE gx_jpeg_sample_factor[3];
|
|
GX_UBYTE gx_jpeg_component_id[3];
|
|
GX_UBYTE gx_jpeg_qantization_table_index[3];
|
|
GX_UBYTE gx_jpeg_dc_table_index[3];
|
|
GX_UBYTE gx_jpeg_ac_table_index[3];
|
|
INT gx_jpeg_quantization_table[4][64];
|
|
INT *gx_jpeg_huffman_table[2][2];
|
|
GX_VALUE gx_jpeg_huffman_bits_count[2][2][16];
|
|
INT gx_jpeg_restart_interval;
|
|
GX_UBYTE gx_jpeg_Y_block[256];
|
|
GX_UBYTE gx_jpeg_Cr_block[64];
|
|
GX_UBYTE gx_jpeg_Cb_block[64];
|
|
INT gx_jpeg_pre_dc[3];
|
|
INT gx_jpeg_vecter[64];
|
|
GX_UBYTE *gx_jpeg_data;
|
|
INT gx_jpeg_data_size;
|
|
INT gx_jpeg_data_index;
|
|
GX_UBYTE *gx_jpeg_decoded_data;
|
|
UINT gx_jpeg_decoded_data_size;
|
|
GX_DRAW_CONTEXT *gx_jpeg_draw_context;
|
|
UINT (*gx_jpeg_mcu_draw)(struct GX_JPEG_INFO_STRUCT *, INT, INT);
|
|
INT gx_jpeg_draw_xpos;
|
|
INT gx_jpeg_draw_ypos;
|
|
} GX_JPEG_INFO;
|
|
|
|
/* control block used internally for png reader */
|
|
typedef struct GX_PNG_STRUCT
|
|
{
|
|
GX_UBYTE *gx_png_data;
|
|
INT gx_png_data_size;
|
|
INT gx_png_data_index;
|
|
GX_UBYTE *gx_png_decoded_data;
|
|
INT gx_png_decoded_data_len;
|
|
INT gx_png_width;
|
|
INT gx_png_height;
|
|
GX_UBYTE gx_png_bit_depth;
|
|
INT gx_png_color_type;
|
|
GX_UBYTE gx_png_bpp; /* bits per pixel */
|
|
INT gx_png_compression_method;
|
|
INT gx_png_filter_method;
|
|
INT gx_png_interlace_method;
|
|
UINT gx_png_crc_table[256];
|
|
INT gx_png_gamma;
|
|
INT gx_png_huffman_clen_table[20];
|
|
INT gx_png_huffman_clen_bits_count[17];
|
|
INT gx_png_huffman_lit_table[286];
|
|
INT gx_png_huffman_lit_code_len[286];
|
|
INT gx_png_huffman_lit_bits_count[17];
|
|
INT gx_png_huffman_dist_table[30];
|
|
INT gx_png_huffman_dist_code_len[30];
|
|
INT gx_png_huffman_dist_bits_count[17];
|
|
GX_COLOR gx_png_palette_table[256];
|
|
INT gx_png_palette_table_size;
|
|
GX_COLOR *gx_png_trans;
|
|
INT gx_png_trans_num;
|
|
INT gx_png_trunk_end_index;
|
|
UINT gx_png_trunk_crc;
|
|
} GX_PNG;
|
|
|
|
/* Define API functions for image reader. */
|
|
UINT _gx_image_reader_start(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_colorspace_convert(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
|
|
UINT _gx_image_reader_create(GX_IMAGE_READER *image_reader,
|
|
GX_CONST GX_UBYTE *read_data,
|
|
INT read_data_size,
|
|
GX_UBYTE color_format,
|
|
GX_UBYTE mode);
|
|
|
|
/* Define internal function prototypes. */
|
|
UINT _gx_image_reader_png_decode(GX_CONST GX_UBYTE *read_data, ULONG read_data_size, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_jpeg_decode(GX_CONST GX_UBYTE *read_data, ULONG data_size, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_jpeg_mcu_decode(GX_CONST GX_UBYTE * read_data, ULONG data_size,
|
|
GX_DRAW_CONTEXT * context, INT xpos, INT ypos,
|
|
UINT(draw_function)(GX_JPEG_INFO *, INT, INT));
|
|
|
|
|
|
UINT _gx_image_reader_pixel_read_callback_set(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_pixel_write_callback_set(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_image_decode(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
UINT _gx_image_reader_palette_set(GX_IMAGE_READER *image_reader, GX_COLOR *pal, UINT palsize);
|
|
UINT _gx_image_reader_nearest_palette_color_get(GX_IMAGE_READER *image_reader, GX_PIXEL *want_color, INT *index);
|
|
VOID _gx_image_reader_rgb2gray(GX_PIXEL *pixel, GX_UBYTE *gray);
|
|
UINT _gx_image_reader_rle_encode(GX_IMAGE_READER *image_reader, GX_PIXELMAP *pRLEmap);
|
|
UINT _gx_image_reader_rle_encode_size_get(GX_IMAGE_READER *image_reader, UINT *data_size, UINT *aux_size);
|
|
VOID _gx_image_reader_rgb2gray(GX_PIXEL *pixel, GX_UBYTE *gray);
|
|
|
|
/* Define error checking shells for API services. These are only referenced by the
|
|
application. */
|
|
|
|
UINT _gxe_image_reader_create(GX_IMAGE_READER *image_reader,
|
|
GX_CONST GX_UBYTE *read_data,
|
|
INT read_data_size,
|
|
GX_UBYTE color_format,
|
|
GX_UBYTE mode);
|
|
|
|
UINT _gxe_image_reader_palette_set(GX_IMAGE_READER *image_reader, GX_COLOR *pal, UINT palsize);
|
|
UINT _gxe_image_reader_start(GX_IMAGE_READER *image_reader, GX_PIXELMAP *outmap);
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|