跳转至

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 是否同步硬件绘制 truefalse,默认值为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图像

Macros

#define MAX_IMG_PATH_LEN 128