241 lines
7.3 KiB
C
241 lines
7.3 KiB
C
|
/************************************************************************************************/
|
|||
|
/* Copyright (C), 2001-2016, Allwinner Tech. Co., Ltd. */
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file aw_osd.h
|
|||
|
* @brief
|
|||
|
* @author id: guixing
|
|||
|
* @version v0.1
|
|||
|
* @date 2016-08-28
|
|||
|
*/
|
|||
|
|
|||
|
#ifndef _RGB_CTRL_H_
|
|||
|
#define _RGB_CTRL_H_
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/* Include Files */
|
|||
|
/************************************************************************************************/
|
|||
|
#include <errno.h>
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdio.h>
|
|||
|
#include <string.h>
|
|||
|
#include <sys/ioctl.h>
|
|||
|
#include <log/log_wrapper.h>
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
#if __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/* Macros & Typedefs */
|
|||
|
/************************************************************************************************/
|
|||
|
#define MAX_COLOR_SIZE 8
|
|||
|
|
|||
|
#define RGB_DB
|
|||
|
#ifdef RGB_DB
|
|||
|
#define RGB_DB_PRT(fmt, args...) \
|
|||
|
do { \
|
|||
|
LOGD(fmt, ##args); \
|
|||
|
} while (0)
|
|||
|
#endif
|
|||
|
|
|||
|
#define RGB_ERR
|
|||
|
#ifdef RGB_ERR
|
|||
|
#define RGB_ERR_PRT(fmt, args...) \
|
|||
|
do { \
|
|||
|
LOGE(fmt, ##args); \
|
|||
|
} while (0)
|
|||
|
#endif
|
|||
|
|
|||
|
typedef enum tag_OSD_RGB_TYPE {
|
|||
|
OSD_RGB_555 = 0,
|
|||
|
OSD_RGB_565,
|
|||
|
OSD_RGB_24,
|
|||
|
OSD_RGB_32,
|
|||
|
OSD_RGB_BUTT,
|
|||
|
} OSD_RGB_TYPE;
|
|||
|
|
|||
|
typedef enum tag_FONT_SIZE_TYPE {
|
|||
|
FONT_SIZE_16 = 0,
|
|||
|
FONT_SIZE_20,
|
|||
|
FONT_SIZE_24,
|
|||
|
FONT_SIZE_32,
|
|||
|
FONT_SIZE_40,
|
|||
|
FONT_SIZE_48,
|
|||
|
FONT_SIZE_56,
|
|||
|
FONT_SIZE_64,
|
|||
|
FONT_SIZE_BUTT,
|
|||
|
} FONT_SIZE_TYPE;
|
|||
|
|
|||
|
typedef enum tag_CHAR_CODE_TYPE {
|
|||
|
CHAR_CODE_ASCII = 0,
|
|||
|
CHAR_CODE_GB2312,
|
|||
|
CHAR_CODE_UTF8,
|
|||
|
CHAR_CODE_USC2_LIT, /* unicode 2 little endian */
|
|||
|
CHAR_CODE_USC2_BIG, /* unicode 2 big endian */
|
|||
|
CHAR_CODE_BUTT,
|
|||
|
} CHAR_CODE_TYPE;
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/* Structure Declarations */
|
|||
|
/************************************************************************************************/
|
|||
|
typedef struct tag_RGB_PIC_S {
|
|||
|
unsigned int wide;
|
|||
|
unsigned int high;
|
|||
|
OSD_RGB_TYPE rgb_type;
|
|||
|
int enable_mosaic;
|
|||
|
int mosaic_size;
|
|||
|
unsigned char background[MAX_COLOR_SIZE]; /* support rgb555, rgb565, rgb24, rgb32 */
|
|||
|
unsigned char mosaic_color[MAX_COLOR_SIZE];
|
|||
|
|
|||
|
char *pic_addr;
|
|||
|
int pic_size;
|
|||
|
} RGB_PIC_S;
|
|||
|
|
|||
|
typedef struct tag_PIC_REGION_S {
|
|||
|
int x;
|
|||
|
int y;
|
|||
|
int w;
|
|||
|
int h;
|
|||
|
OSD_RGB_TYPE rgb_type;
|
|||
|
} PIC_REGION_S;
|
|||
|
|
|||
|
typedef struct tag_FONT_RGBPIC_S {
|
|||
|
FONT_SIZE_TYPE font_type;
|
|||
|
OSD_RGB_TYPE rgb_type;
|
|||
|
int enable_bg;
|
|||
|
unsigned char foreground[MAX_COLOR_SIZE];
|
|||
|
unsigned char background[MAX_COLOR_SIZE];
|
|||
|
} FONT_RGBPIC_S;
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/* Global Variables */
|
|||
|
/************************************************************************************************/
|
|||
|
/* None */
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/* Function Declarations */
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief 加载字体
|
|||
|
* @param font_type 字体大小类型
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int load_font_file(FONT_SIZE_TYPE font_type);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 卸载字体。调用该函数后,相关字体操作函数就不能被执行
|
|||
|
* @param
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int unload_gb2312_font(void);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 根据rgb_pic规格创建RGB矩形框
|
|||
|
* @param rgb_pic
|
|||
|
* - wide input 矩形的宽度
|
|||
|
* - high input 矩形的高度
|
|||
|
* - rgb_type input rgb的像素格式如,rgb555 rgb888 rgb8888等
|
|||
|
* - enable_mosaic input 是否使能背景马赛克功能
|
|||
|
* - mosaic_size input 背景马赛克的宽高度
|
|||
|
* - background input 矩形RGB图片的底色
|
|||
|
* - mosaic_color input 背景马赛克的颜色
|
|||
|
* - pic_addr output 创建成功后的图片地址,若失败则为NULL。使用完毕后记得
|
|||
|
* - pic_size output 创建成功后的图片数据字节长度
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int create_rectangle_rgb(RGB_PIC_S *rgb_pic);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 根据rgb_pic规格创建RGB矩形框
|
|||
|
* @param font_pic
|
|||
|
* - font_type input 字体大小类型
|
|||
|
* - rgb_type input RGB格式
|
|||
|
* - enable_bg input 是否使能背景色
|
|||
|
* - foreground input 字体颜色,即前景色
|
|||
|
* - background input 字体背景色
|
|||
|
* @param rgb_pic
|
|||
|
* - enable_mosaic input 是否使能背景马赛克功能
|
|||
|
* - mosaic_size input 背景马赛克的宽高度
|
|||
|
* - mosaic_color input 背景马赛克的颜色
|
|||
|
* - background output 矩形RGB图片的底色,同font_pic中的background格式一样值
|
|||
|
* - rgb_type output rgb的像素格式,同font_pic中的rgb格式一样值
|
|||
|
* - pic_addr output 创建成功后的图片地址,若失败则为NULL。使用完毕后记得
|
|||
|
* - pic_size output 创建成功后的图片数据字节长度
|
|||
|
* - wide output 矩形的宽度
|
|||
|
* - high output 矩形的高度
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int create_font_rectangle(const char *code, const FONT_RGBPIC_S *font_pic, RGB_PIC_S *rgb_pic);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 释放rgb_pic图片
|
|||
|
* @param rgb_pic 待释放的rgb图片
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int release_rgb_picture(RGB_PIC_S *rgb_pic);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 将color填充满该图片
|
|||
|
* @param rgb_pic 待填充的RGB图片
|
|||
|
* @param color 所要填充的颜色。注意数据宽度为4字节及以上。
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int fill_rectangle_rgb(RGB_PIC_S *rgb_pic, const unsigned char *color);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 将src_pic图片,按位置信息叠加到dst_pic图片中
|
|||
|
* @param src_pic 源RGB图片
|
|||
|
* @param dst_pic 目标RGB图片
|
|||
|
* @param top 相对目标图片的顶部位置
|
|||
|
* @param left 相对目标图片的左边位置
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int draw_pic_in_pic(const RGB_PIC_S *src_pic, const RGB_PIC_S *dst_pic, int top, int left);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief 将字体,按位置信息叠加到dst_pic图片中
|
|||
|
* @param code 字符编码序列
|
|||
|
* @param font_pic 字体RGB格式
|
|||
|
* @param dst_pic 目标RGB图片
|
|||
|
* @param top 相对目标图片的顶部位置
|
|||
|
* @param left 相对目标图片的左边位置
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int draw_font_in_pic(const char *code, const FONT_RGBPIC_S *font_pic, const RGB_PIC_S *dst_pic, int top, int left);
|
|||
|
|
|||
|
/**
|
|||
|
* 单独去加载某种大小的字体
|
|||
|
* @param font_type
|
|||
|
* @return
|
|||
|
* - 成功 0
|
|||
|
* - 失败 -1
|
|||
|
*/
|
|||
|
int unload_font_file(FONT_SIZE_TYPE font_type);
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
#if __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#endif /* _RGB_CTRL_H_ */
|