4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-01-28 10:01:03 +08:00

159 lines
5.3 KiB
C

/****************************************************************************
*
* Copyright 2021 Vivante Corporation, Santa Clara, California.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* 'Software'), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL VIVANTE AND/OR ITS SUPPLIERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*****************************************************************************/
#ifndef __ELM_HEADERS_H__
#define __ELM_HEADERS_H__
#define ATTR_PACKED __attribute__((packed, aligned(4)))
typedef struct {
vg_lite_matrix_t matrix;
uint32_t reserved;
uint32_t stop_count;
uint32_t stop_offset;
uint32_t color_offset;
} el_EVO_GradData;
typedef struct {
vg_lite_radial_gradient_parameter_t params;
vg_lite_radial_gradient_spreadmode_t spread_mode;
} el_EVO_RadGradDataExt;
struct el_PaintType_t {
uint32_t paint:28;
uint32_t flags:1;
uint32_t is_image:1;
uint32_t is_pattern:1;
uint32_t has_pattern:1;
};
typedef struct ATTR_PACKED {
uint32_t type;
vg_lite_float_t min_x, min_y, max_x, max_y;
uint32_t format;
uint32_t length:31;
uint32_t arc_flag:1;
uint32_t offset;
vg_lite_matrix_t matrix;
uint32_t reserved;
uint32_t quality;
uint32_t fill_rule;
uint32_t blend;
union {
uint32_t paint_data;
struct el_PaintType_t paint_type;
};
vg_lite_color_t color;
el_EVO_GradData grad;
} el_EVO_Polygon;
typedef struct ATTR_PACKED {
uint32_t type;
uint32_t namelength;
char eboname[76];
union {
uint32_t paint_data;
struct el_PaintType_t paint_type;
};
vg_lite_matrix_t matrix;
uint32_t width;
uint32_t height;
} el_EVO_Image;
typedef struct ATTR_PACKED {
union {
el_EVO_Polygon polygon;
el_EVO_Image image;
};
} el_EVO_Header;
typedef struct ATTR_PACKED {
uint32_t type;
uint32_t size_font_block;
uint32_t num_ttf_fonts;
uint32_t num_vector_fonts;
uint32_t num_text_fonts;
uint32_t ttf_fonts_block_offset;
uint32_t ttf_fonts_block_length;
uint32_t vector_fonts_block_offset;
uint32_t vector_fonts_block_length;
uint32_t text_fonts_block_offset;
uint32_t text_fonts_block_length;
uint32_t property_block_offset;
uint32_t property_block_length;
} el_Font_Header;
struct el_TextFlags_t {
uint32_t flags1:1;
uint32_t text_anchor:2;
uint32_t flags2:29;
};
typedef struct ATTR_PACKED {
uint32_t type;
uint32_t size_text_block;
uint32_t tspan_has_dx_dy;
float x_pos;
float y_pos;
float font_size;
uint32_t font_id;
uint32_t color;
union {
uint32_t flags_data;
struct el_TextFlags_t text_flags;
};
vg_lite_matrix_t matrix;
uint32_t reserved;
uint16_t data_length;
} el_Text_Header;
typedef struct ATTR_PACKED {
uint32_t type;
uint32_t width;
uint32_t height;
uint32_t stride;
uint32_t tiled;
uint32_t format;
uint32_t data_offset;
} el_EBO_Header;
typedef struct ATTR_PACKED {
uint32_t clut_count;
uint32_t clut_data_offset;
} el_EBO_Palette;
typedef struct ATTR_PACKED {
uint32_t type;
vg_lite_matrix_t matrix;
uint32_t count;
} el_EGO_Header;
#endif /* __ELM_HEADERS_H__ */