mem_api
mem_api 提供图形模块内存管理接口,包括图像缓存内存申请与释放、图形模块通用内存申请与释放及内存重分配功能。
Functions
自由函数
ImageCacheMalloc
void* ImageCacheMalloc(ImageInfo& info)
功能说明
- 根据图像信息申请图像缓存内存
- 可通过自定义内存区域加载图像资源时调用
- 返回申请到的内存指针,大小由图像数据的dataSize字段决定
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| info | ImageInfo& | 图像信息,用于确定申请内存的大小 | ImageInfo结构体实例引用 |
ImageCacheFree
void ImageCacheFree(ImageInfo& info, bool syncHwDraw = true)
功能说明
- 释放图像缓存内存
- 释放后将info.data置为nullptr
- syncHwDraw参数控制是否同步硬件绘制
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| info | ImageInfo& | 图像信息,包含待释放的缓存数据指针 | ImageInfo结构体实例引用 |
| syncHwDraw | bool | 是否同步硬件绘制 | true、false,默认值为true |
UIMalloc
void* UIMalloc(uint32_t size)
功能说明
- 申请图形模块内存
- 可通过实现该函数覆盖malloc和new函数
- 返回申请到的内存指针
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| size | uint32_t | 申请内存的大小 | 0 ~ 4294967295 |
UIFree
void UIFree(void* buffer)
功能说明
- 释放图形模块内存
- 可通过实现该函数覆盖free和delete函数
- 当buffer为nullptr时直接返回
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| buffer | void* | 指向待释放内存的指针 | 有效的内存指针或NULL |
UIRealloc
void* UIRealloc(void* buffer, uint32_t size)
功能说明
- 重新调整内存块大小
- 可对已分配的内存块进行扩展或缩小
- 返回调整后的内存指针
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| buffer | void* | 指向待调整内存块的指针 | 有效的内存指针或NULL |
| size | uint32_t | 调整后的内存大小 | 0 ~ 4294967295 |
Structures
ImageHeader
struct ImageHeader {
/** Color format, which is used to match image type. This variable is important. */
uint32_t colorMode : 8;
uint32_t version : 4;
uint32_t compressMode : 4;
uint32_t reserved : 16;
/** Image width */
uint16_t width;
/** Image height */
uint16_t height;
};
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| colorMode | uint32_t:8 | 颜色格式,用于匹配图像类型 |
| version | uint32_t:4 | 版本信息 |
| compressMode | uint32_t:4 | 压缩模式 |
| reserved | uint32_t:16 | 保留字段 |
| width | uint16_t | 图像宽度 |
| height | uint16_t | 图像高度 |
ImageInfo
struct ImageInfo {
/** Image head node information. For details, see {@link ImageHeader}. */
ImageHeader header;
/** Size of the image data (in bytes) */
uint32_t dataSize;
/** Pixel color data of pixelmap images */
const uint8_t* data;
#if IMG_CACHE_MEMORY_CUSTOM || defined(VERSION_IOT)
const uint8_t* phyAddr;
/** used for ImageCacheManager lru logic */
void* cacheNode;
char file[MAX_IMG_PATH_LEN];
uint8_t fileLen;
uint32_t resId;
#endif
union {
/** used for alpha image */
uint32_t color;
/** User-defined data */
void* userData;
};
bool isHdr;
};
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| header | ImageHeader | 图像头节点信息 |
| dataSize | uint32_t | 图像数据大小(字节数) |
| data | const uint8_t* | 像素图像的像素颜色数据 |
| phyAddr | const uint8_t* | 物理地址(IMG_CACHE_MEMORY_CUSTOM或VERSION_IOT条件下可用) |
| cacheNode | void* | 用于ImageCacheManager LRU逻辑 |
| file | char[] | 图像文件路径 |
| fileLen | uint8_t | 文件路径长度 |
| resId | uint32_t | 资源ID |
| color | uint32_t | 用于alpha图像的颜色值 |
| userData | void* | 用户自定义数据 |
| isHdr | bool | 是否为HDR图像 |