PainterEngine API manual

                                                                                                                                  

PainterEngine API manual. 1

Core. 9

预编译... 9

计算数组个数... 9

日志/调试信息... 10

输出日志信息... 10

错误信息... 10

断言... 10

取得日志文本... 10

内存... 11

内存拷贝... 11

内存设值... 11

4字节对齐设置内存值... 11

内存比对... 11

内存池... 12

创建内存池... 12

返回一块内存指针所指向内存的内存大小... 12

从内存池分配一块内存... 12

从内存池释放一块内存... 13

重置内存池... 13

设置内存池异常回调... 14

字符串操作... 14

转换... 19

字节类型转十六进制字符串... 19

十六进制字符串转字节类型... 19

十六进制字符转数字... 19

字符转数字... 20

字符串转IPv4地址... 20

IPv4地址转字符串... 20

数字转字符串... 20

弧度角度转换... 21

字节序... 22

主机字节序转网络字节序... 22

网络字节序转主机字节序... 22

数学... 22

素数模乘同余发生器... 22

高斯随机数发生器... 23

对数函数... 23

三角函数... 24

平方根... 24

方差... 25

协方差... 25

求绝对值... 25

tanh. 25

sigmoid. 26

ReLU.. 26

四舍五入... 26

... 26

复数... 27

矩阵... 28

/向量... 30

交叉碰撞... 33

快速排序(由小到大) 33

快速排序(由大到小) 34

矩形... 34

CRC校验(CRC32... 35

CRC校验(CRC16... 35

累加和校验(Sum32... 35

第一类修正贝塞尔函数... 36

通讯链接器(IO虚拟层). 36

初始化链接器... 36

链接器读... 37

链接器写... 37

数据结构... 37

取得结构体偏移量... 37

字母... 37

链表... 38

容器... 41

字符串映射表... 43

自适应内存... 45

内存自适应字符串... 48

几何绘制... 52

线... 52

边框... 53

矩形... 53

实心圆... 53

... 54

圆笔... 54

... 54

扇形... 55

圆角矩形... 55

实心圆角矩形... 56

描边路径... 56

三角形... 56

箭头... 57

绘制贝塞尔曲线... 57

图形图像... 58

渲染表面... 58

纹理... 61

图像算子... 70

轮廓... 72

位图... 74

TRaw纹理格式... 76

Delaunary三角划分... 77

带限制区域的Delaunary角建立... 77

纹理特效... 78

字体... 78

绘制字体... 78

字模初始化... 79

加载字模... 79

释放字模库... 79

绘制单个字... 80

计算绘制文本的宽高... 80

信号处理... 80

离散傅里叶变换(DFT... 80

离散余弦变换(DCT... 81

快速傅里叶变换(FFT... 81

强制共轭对称... 82

上采样(插值, UpSampled) 82

下采样(抽取, SubSampled, DownSampled) 83

tukey... 83

triangular... 83

blackMan... 83

hamming... 84

hanning... 84

kaiser... 84

应用窗函数... 84

计算系统幅频响应和相频响应... 85

计算级联型系统幅频响应和相频响应... 85

倒谱... 85

人声基音频率估算... 86

估算瞬时频率... 86

预加重... 86

卡尔曼滤... 87

MFCC. 87

WAV文件格式... 88

混音器... 89

调音台... 92

反向传播神经网络... 95

初始化神经网络框架... 95

添加网络层... 95

训练网络... 96

前向传播... 96

取得输出结果... 97

重置神经网络... 97

释放神经网络框架... 97

导出神经网络框架... 97

导入神经网络框架... 97

物理... 98

四叉树AABB碰撞检测... 98

密码学... 99

AES. 99

curve25519. 100

SHA256. 101

编码及数据压缩... 101

BASE64. 101

ARLE. 102

Huffman. 103

3D渲染管线... 103

Kernel 109

词法分析机... 109

初始化词法分析机... 109

注册注释块... 109

注册包含块... 109

注册空白符... 110

注册分隔符... 110

取得分隔符ID.. 110

取得字符串包含块类型... 110

释放词法分析机资源... 111

加载分析文本... 111

读取文本... 111

取得特殊符号... 111

取得当前词... 112

取得包含文本... 112

设置词大小写敏感... 112

取得词法分析机当前状态... 112

设置词法分析机当前状态... 113

判断当前词是否是合法数字... 113

读取下一个字母... 113

读取下一个词... 113

取得当前词性... 114

PainterScript语法规则... 114

脚本语法... 114

PainterScript 简化编译器... 126

初始化编译器... 126

添加源代码... 126

编译源代码... 126

释放编译器... 127

PainterScript Asm汇编语法... 127

标志... 127

汇编指令集... 127

表达... 138

PainterScript Asm汇编器... 138

编译汇编代码... 138

PainterVM虚拟机... 139

vm实例... 139

host函数定义... 139

执行虚拟机函数... 140

运行虚拟机... 141

线程上下文切换... 142

终止线程... 142

挂起线程... 142

恢复线程... 143

注册host函数... 143

释放虚拟机... 143

类型访问... 143

命令调试系统... 145

Obj静态3D模型加载器... 145

加载器初始化... 145

解析Object数据... 146

数据转换到RenderList. 146

释放加载器... 146

2dx动画描述语言... 146

指令... 147

编译... 148

2dx动画... 148

2dx library. 148

2dx animation. 149

PainterEngine LiveFramework. 153

导入LiveFramework. 153

LiveFramework动画播放... 154

LiveFramework暂停播放... 154

重置LiveFramework. 154

停止LiveFramework. 155

渲染LiveFramework. 155

PainterEngine Live. 155

创建Live. 155

释放Live. 156

Live动画播放... 156

Live暂停播放... 156

重置live. 156

停止live. 157

渲染live. 157

粒子系统... 157

粒子发射器参数... 157

以默认值初始化一个发射器参数... 158

创建粒子系统... 159

渲染粒子发射器... 159

释放粒子发射器... 159

设置粒子发射器的位置... 159

设置粒子发射器喷射方向... 160

MQTT协议... 160

初始化协议... 160

MQTT连接... 160

发布数据... 161

订阅数据... 161

取消订阅数据... 162

MQTT Ping. 162

监听... 162

释放... 163

资源管理器... 163

初始化... 163

加载一个资源... 163

添加一个贴图资源... 164

读取资源... 164

读取纹理资源... 164

读取轮廓资源... 165

读取动画资源... 165

读取脚本资源... 165

读取声音资源... 165

读取数据资源... 166

删除资源... 166

释放资源库... 166

帧同步协议... 166

同步服务端... 167

帧客户端... 169

JSON.. 170

初始化... 171

读取JSON Object的子数据... 171

读取JSON数据... 171

读取JSON Array数据... 172

解析JSON数据... 172

建立JSON数据类型... 172

JSON结构转换为文本... 172

删除JSON结构中一个数据... 173

释放JSON.. 173

JSON数据建立... 173

PainterEngine 基本对象... 178

使用PainterEngine绘制对象... 178

PainterEngine对象机制... 178

创建对象... 184

设置对象的usercode. 185

删除对象... 185

对象属性设置... 185

PainterEngine更新/绘制流水线... 186

对象事件机制... 187

事件类型... 187

响应处理函数... 188

注册对象事件... 188

派分事件... 189

构造事件... 189

构造字符串事件... 189

指针事件偏移... 190

取得指针事件的X坐标... 190

取得指针事件的Y坐标... 190

取得指针事件的Z坐标... 190

设置指针事件的X坐标... 191

设置指针事件的Y坐标... 191

设置指针事件的X坐标... 191

取得键盘事件的输入码... 191

取得输入法事件的输入字符串... 192

PainterEngine UI对象... 192

静态文本框... 192

进度... 194

图片框... 196

滑动框... 197

按钮... 199

文本编辑框... 203

列表框... 207

虚拟键盘... 210

勾选框... 213

菜单... 216

下拉框... 217

单选框... 220

文件浏览器... 223

子窗口... 226

消息对话框... 230

PainterEngine UI设计框架... 232

基本数据类型... 232

UI类型及对应属性... 233

label静态文本框... 233

processbar进度条... 233

image图像框... 234

sliderbar 滑动框... 234

pushbutton/cursorbutton按钮... 234

edit文本编辑框... 234

scrollarea滚动区域... 235

autotext自动换行静态文本框... 235

virtualkeyboard虚拟键盘... 235

virtualnumberkeyboard虚拟数字键盘... 235

checkbox 选择框... 236

radiobox单选框... 236

selectbar下拉框... 236

Widget 子窗体... 237

游戏世界框架... 237

游戏世界初始化... 237

取得游戏世界Object的个数... 237

删除Object. 238

在世界查找Object. 238

添加Object. 238

更新游戏世界... 239

渲染游戏世界... 239

设置摄像机... 239

设置游戏对象的碰撞类型... 239

设置游戏世界辅助线间隔... 240

设置游戏世界辅助线... 240

设置游戏世界辅助线的颜色... 240

世界坐标转换为屏幕坐标... 241

释放游戏世界... 241

 

Core

预编译

计算数组个数

函数名

PX_COUNTOF(x)

说明

计算一个数组的个数

参数

fmt 日志信息

返回值

 

 

 

日志/调试信息

输出日志信息

函数名

void PX_LOG(char fmt[]);

说明

输出一段日志信息

参数

fmt 日志信息

返回值

 

 

错误信息

函数名

void PX_ERROR(char fmt[]);

说明

输出一段错误日志信息

参数

fmt 日志信息

返回值

 

 

断言

函数名

void PX_ASSERT(void);

说明

断言函数,debug模式下执行该函数将触发一个异常中断

参数

fmt 日志信息

返回值

 

 

取得日志文本

函数名

char *PX_GETLOG(void);

说明

取得日志文本

参数

 

返回值

日志文本指针

 

内存

内存拷贝

函数名

void px_memcpy(void *dst,void *src,px_uint size);

说明

内存拷贝

参数

dst:指向目标内存

src:指向源内存

size:需要拷贝的内存大小

 

 

内存设值

函数名

void px_memset(void *dst,px_byte byte,px_uint size)

说明

设置内存值

参数

Dst 目标内存指针

Byte

Size 设置内存大小

 

4字节对齐设置内存值

函数名

void px_memdwordset(void *dst,px_dword dw,px_uint count)

说明

4字节对齐设置内存值

参数

Dst 目标内存指针

dw

count 需要设置的四字节个数

 

 

内存比对

 

函数名

px_bool px_memequ(void *dst,void *src,px_uint size)

说明

比较目标内存是否相同

参数

Dst 目标内存指针

src 目标内存指针

Size 比较大小

返回值

如果相同返回PX_TRUE,否者返回PX_FALSE

 

内存池

创建内存池

//Create a memory pool & return a MemoryPool structure

//MemoryAddr :Start address of memory

//MemorySize :Size of memory pool

 

函数名

MemoryPool    MP_Create      (void *MemoryAddr,unsigned int MemorySize);

说明

创建一个内存池

参数

MemoryAddr :内存池的开始地址

MemorySize :需要创建的内存池的大小

返回一个MemoryPool结构体

返回值

内存池结构

 

 

返回一块内存指针所指向内存的内存大小

//Get memory size of Ptr

//Pool: Pool MemoryPool structure pointer

//Ptr: memory pointer

//Return - if succeeded return the size of Ptr,else return zero

 

函数名

px_uint MP_Size(px_memorypool *Pool,px_void *Ptr);

说明

返回一块内存指针所指向内存的内存大小

参数

Pool 内存池

Ptr 指针

返回值

该指针所指向内存块大小

 

 

从内存池分配一块内存

//Alloc a memory from memory pool

//Pool: Pool MemoryPool structure pointer

//Size: Size of alloc

//Return - if succeeded return the begin address of memories

//         if faith return null    

 

函数名

void          *MP_Malloc    (MemoryPool *Pool,unsigned int Size);

说明

从内存池分配一块内存

该内存将会优先从已回收内存节点中分配,如果回收节点无法分配再从空余空间分配

参数

Pool:指向MemoryPool的结构体,这个结构体使用MP_Create进行创建

Size:需要分配的大小

如果成功返回这个内存的指针,如果失败返回null/0    

返回值

分配的内存指针,如果分配失败将会返回PX_NULL

 

 

从内存池释放一块内存

//Free the memory from memory pool

//Pool: Pool MemoryPool structure pointer

//pAddress: Pointer memory need to be free

 

Pool:指向MemoryPool的结构体,这个结构体使用MP_Create进行创建

pAddress:内存首地址指针

void          MP_Free           (MemoryPool *Pool,void *pAddress);

void           MP_Release    (MemoryPool *Pool);

 

函数名

void          MP_Free           (MemoryPool *Pool,void *pAddress);

说明

释放一个内存节点

参数

Pool:指向MemoryPool的结构体,这个结构体使用MP_Create进行创建

pAddress:内存首地址指针

返回值

-

 

重置内存池

void           MP_Reset        (MemoryPool *Pool);

函数名

void          MP_Reset        (MemoryPool *Pool);

说明

重置内存池, 重置内存池将该内存池所有内存分配节点快速释放,对于某类归类或计算算法的加速尤为有用

参数

Pool:指向MemoryPool的结构体,这个结构体使用MP_Create进行创建

返回值

-

 

 

设置内存池异常回调

 

函数名

px_void    MP_ErrorCatch(px_memorypool *Pool,PX_MP_ErrorCall ErrorCall);

说明

设置内存池的错误回调函数

参数

Pool:指向MemoryPool的结构体,这个结构体使用MP_Create进行创建

ErrorCall:异常回调函数

返回值

-

 

typedef px_void (*PX_MP_ErrorCall)(PX_MEMORYPOOL_ERROR);

当内存池触发异常时将会执行该异常回调函数,如果没有设置异常回调将会以PX_ERROR进行处理

异常回调消息包括

PX_MEMORYPOOL_ERROR_OUTOFMEMORY 内存池内存不足

PX_MEMORYPOOL_ERROR_INVALID_ACCESS 内存池指向内存无法读/写访问

PX_MEMORYPOOL_ERROR_INVALID_ADDRESS 释放无效的内存地址

字符串操作

字符串拷贝函数

dst:指向目标内存

src:指向源字符串

size:目标内存的大小

void px_strcpy(px_char *dst,px_char *src,px_uint size);

 

宽字符串拷贝函数

dst:指向目标内存

src:指向源字符串

size:目标内存的大小

void px_wstrcpy(px_word *dst,px_ word *src,px_uint size);

 

字符串长度

函数名

px_int px_strlen(px_char *dst)

说明

字符串长度

参数

字符串指针

返回值

返回长度

 

宽字符字符串长度

函数名

px_int px_wstrlen(px_word *dst)

说明

宽字符字符串长度

参数

字符串指针

返回值

返回长度

 

字符串设置

函数名

px_void px_strset(px_char *dst, const px_char *src);

说明

将目标字符串拷贝为源字符串

参数

Dst 目标字符串原指针

src 源字符串

返回值

-

 

字符串拼接

函数名

px_void px_strcat(px_char *src, const px_char *cat);

说明

字符串拼接

参数

src字符串原指针

cat 需要拼接到src的字符串

返回值

-

 

宽字符串拼接

函数名

px_void px_wstrcat(px_word *src,const px_ word *cat);

说明

宽字符串拼接

参数

src字符串原指针

cat 需要拼接到src的字符串

返回值

-

 

字符串转大写

函数名

px_void px_strupr(px_char *src);

说明

src指向字符串转换为大写

参数

src字符串原指针

返回值

-

 

字符串转小写

函数名

px_void px_strlwr(px_char *src);

说明

src指向字符串转换为小写

参数

src字符串原指针

返回值

-

 

字符串全等

函数名

px_bool px_strequ(px_char *src,px_char *dst);

说明

字符串全等

参数

src字符串指针

dst 字符串指针

返回值

若两个字符串全等,返回PX_TRUE,否者返回PX_FALSE

 

字符串是否是数字

函数名

px_bool px_strIsNumeric(px_char *src);

说明

字符串是否是数字

参数

src字符串指针

返回值

若字符串是数字,返回PX_TRUE,否者返回PX_FALSE

 

字符串是否是小数

函数名

px_bool px_strIsFloat(px_char *src);

说明

字符串是否是小数

参数

src字符串指针

返回值

若字符串是小数,返回PX_TRUE,否者返回PX_FALSE

 

字符串是否是整数

函数名

px_bool px_strIsInt(px_char *src);

说明

字符串是否是整数

参数

src字符串指针

返回值

若字符串是整数,返回PX_TRUE,否者返回PX_FALSE

 

字符串查找字符

函数名

px_char *PX_strchr(const char *s,int ch);

说明

字符串查找字符

参数

s查找字符串,ch 字符

返回值

如果找到返回首指针,否者返回PX_NULL

 

 

字符串查找字符串

函数名

char* PX_strstr(const char* dest, const char* src);

说明

字符串查找字符串

参数

dest 待比较字符串

src 比对字符串

返回值

如果找到返回首指针,否者返回PX_NULL

字符串格式化

函数名

px_int px_sprintf1(px_char *_out_str,px_int str_size,px_char fmt[], px_stringformat _1)

px_int px_sprintf2(px_char *_out_str,px_int str_size,px_char fmt[], px_stringformat _1, px_stringformat _2)

px_int px_sprintf2(px_char *_out_str,px_int str_size,px_char fmt[], px_stringformat _1, px_stringformat _2, px_stringformat _3)

…..

说明

字符串格式化函数

参数

_out_str输出字符串指针

Fmt 格式化输出字符串

使用%1 %2 %3….来表示需要格式化的字符串

当需要指定浮点精度时,可以使用%1.x的格式来表述,其中x为拓展精度

_1,_2,_3…..参数,数量和px_sprintf后的数字对应,用于对应%1 %2…对应格式化字符串

px_stringformat可以用

PX_STRING_FORMAT_INT

PX_STRING_FORMAT_FLOAT

PX_STRING_FORMAT_STRING

函数,进行构造分别用于表述一个整数,浮点数,字符串

返回值

-

 

*取得文件路径的文件名

函数名

px_void PX_FileGetName(const px_char filefullName[],px_char _out[],px_int outSize);

说明

取得文件路径的文件名

参数

filefullName路径

out 输出文件名

outsize 输出数组长度

返回值

 

 

*取得文件路径的路径

函数名

px_void PX_FileGetPath(const px_char filefullName[],px_char _out[],px_int outSize);

说明

取得文件路径的路径

参数

filefullName路径

out 输出路径

outsize 输出数组长度

返回值

 

 

*取得文件路径的后缀名

函数名

px_void PX_FileGetExt(const px_char filefullName[],px_char _out[],px_int outSize);

说明

取得文件路径的后缀名

参数

filefullName路径

out 输出路径

outsize 输出数组长度

返回值

 

 

转换

字节类型转十六进制字符串

函数名

px_void PX_BufferToHexString(px_byte data[],px_int size,px_char hex_str[]);

说明

数据类型转十六进制字符串类型

参数

data数据指针,size为数据长度,hex_str字符串指针长度为size*2+1,

返回值

 

 

十六进制字符串转字节类型

函数名

px_bool PX_HexStringToBuffer(const px_char hex_str[],px_byte data[])

说明

十六进制字符串转数据类型

参数

hex_str字符串指针,data数据指针,长度是hex_str字符串长度的一半

返回值

成功返回PX_TRUE,失败返回PX_FALSE;

 

 

十六进制字符转数字

函数名

px_uint PX_htoi(char* )

说明

十六进制字符串转px_uint

参数

字符串指针

返回值

返回转换值

 

字符转数字

函数名

px_int PX_atoi(char* )

说明

字符串转px_int

参数

字符串指针

返回值

返回转换值

 

函数名

px_float PX_atof(char* )

说明

字符串转px_float

参数

字符串指针

返回值

返回转换值

 

字符串转IPv4地址

函数名

px_dword PX_inet_addr(px_char i[]);

 

说明

字符串转IPv4地址

参数

I字符串ip地址

返回值

转换后的双字

 

IPv4地址转字符串

函数名

px_char* PX_inet_ntoa(px_dword ipv4);

 

说明

IPv4转字符串地址

参数

Ipv4双字ip地址

返回值

转换后的字符串

 

数字转字符串

整数

函数名

px_int *PX_itoa(int num,char *str,px_int size,int radix)

说明

数字转字符串

参数

num 数字

str 结果字符串指针

size 缓存大小

radix 进制

返回值

返回转换长度

 

函数名

PX_RETRUN_STRING PX_itos(px_int num,px_int radix);

说明

数字转字符串

参数

num 数字

radix 进制

返回值

返回一个字符串结构体,访问其data成员可直接取得转换字符串

 

 

小数

函数名

px_int *PX_ftoa(float num,char *str,px_int size,px_int precision)

说明

数字转字符串

参数

num 数字

str 结果字符串指针

size 缓存大小

precision精度长度

返回值

返回转换长度

 

函数名

PX_RETRUN_STRING PX_ftos(float f, int precision);

说明

数字转字符串

参数

num 数字

precision精度长度

返回值

返回一个字符串结构体,访问其data成员可直接取得转换字符串

 

弧度角度转换

函数名

PX_RadianToAngle(angle)

说明

弧度转换为角度

参数

angle 角度

返回值

角度

 

 

函数名

PX_AngleToRadian(radian)

说明

角度转弧度

参数

radian 弧度

返回值

弧度

 

字节序

主机字节序转网络字节序

函数名

px_dword PX_htonl(px_dword h);

px_word PX_htons(px_word h);

说明

主机字节序转网络字节序

参数

h:dwordword类型值

返回值

转换后的字节序

 

 

网络字节序转主机字节序

函数名

px_dword PX_ntohl(px_dword n);

px_word PX_ntohs(px_word n);

说明

网络字节序转主机字节序

参数

h:dwordword类型值

返回值

转换后的字节序

 

数学

素数模乘同余发生器

函数名

px_void PX_srand(px_uint64 seed);

说明

初始化一个素数模乘同余发生器的随机数种子

参数

seed 种子,如果未调用该函数,将会以默认值对其初始化

返回值

-

 

函数名

px_int PX_rand();

说明

返回一个0~PX_RAND_MAX-1之间的随机数

参数

 

返回值

返回随机数,范围为0~PX_RAND_MAX-1

 

 

函数名

px_uint32 PX_randEx(px_uint64 seed)

说明

返回一个0~PX_RAND_MAX-1之间的随机数以seed作为运算种子

参数

 

返回值

返回随机数,范围为0~PX_RAND_MAX-1

 

高斯随机数发生器

函数名

px_int PX_GaussRand();

说明

返回一个符合高斯分布的随机数

参数

 

返回值

返回高斯随机数,见上图分布

 

对数函数

函数名

px_double PX_ln(px_double __x)

px_double PX_log(px_double __x)

说明

求一个数e为底对数函数

参数

__x这个数的值

返回值

 

 

函数名

px_double PX_lg(px_double __x)

px_double PX_log10(px_double __x)

说明

求一个数10为底对数函数

参数

__x这个数的值

返回值

 

 

三角函数

函数名

px_double PX_sind(px_ double radian);

px_double PX_cosd(px_ double radian);

说明

px_double PX_sind(px_ double radian); 弧度制求正弦

px_double PX_cosd(px_ double radian); 弧度制求余弦

该函数使用泰勒展开

 

 

函数名

px_float PX_sin_radian(px_float radian);

px_float PX_cos_radian(px_float radian);

px_float PX_tan_radian(px_float radian);

px_float PX_sin_angle(px_float angle);

px_float PX_cos_angle(px_float angle);

px_float PX_tan_angle(px_float angle);

px_double PX_atan(px_double x);

px_double PX_atan2(px_double y, px_double x);

px_double PX_asin(px_double x);

px_double PX_acos(px_double x);

说明

px_float PX_sin_radian(px_float radian); 弧度制求正弦

px_float PX_cos_radian(px_float radian); 弧度制求余弦

px_float PX_tan_radian(px_float radian); 弧度制求正切

px_float PX_sin_angle(px_float angle);角度制求正弦

px_float PX_cos_angle(px_float angle); 角度制求余弦

px_float PX_tan_angle(px_float angle); 角度制求正切

px_double PX_atan(px_double x); 弧度制求反正切

px_double PX_atan2(px_double y, px_double x); 弧度制atan2

px_double PX_asin(px_double x); 弧度制arcsin

px_double PX_acos(px_double x); 弧度制arccos

 

 

平方根

函数名

float PX_Sqrt( float number )

说明

求一个数的平方根

参数

Number 需要求平方根的数

返回值

返回这个数的平方根(这个数必须是正数)

 

函数名

px_double PX_Sqrtd(px_double number )

说明

求一个数更高精度的平方根

参数

Number 需要求平方根的数

返回值

返回这个数的平方根(这个数必须是正数)

 

函数名

float PX_SqrtRec( float number )

说明

求一个数平方根的倒数

参数

Number 需要求平方根的倒数

返回值

返回这个数的平方根的倒数(这个数必须是正数)

 

 

方差

函数名

px_double PX_Variance(px_double x[],px_int n)

说明

计算一个序列的方差

参数

x 序列数据

n 元素个数

返回值

返回这个矩阵计算方差

 

协方差

函数名

px_double PX_Covariance(px_double x[],px_double y[],px_int n);

说明

计算一个矩阵的协方差

参数

x, y两数据

n 数据长度

返回值

返回这两个数据协计算方差

 

求绝对值

函数名

PX_ABS(x)

说明

宏函数求绝对值

参数

返回值

返回绝对值

 

tanh

函数名

px_double PX_tanh(px_double x)

说明

tanh函数

参数

x

返回值

tanh计算结果

 

sigmoid

函数名

px_double PX_ sigmoid(px_double x)

说明

sigmoid函数

参数

x

返回值

sigmoid计算结果

 

ReLU

函数名

px_double PX_ sigmoid(px_double x)

说明

ReLU函数

参数

x

返回值

ReLU计算结果

 

四舍五入

函数名

PX_APO(x)

说明

宏函数小数点后四舍五入求整数

参数

小数

返回值

返回四舍五入的整数

 

函数名

px_int       PX_pow_ii(px_int i,px_int n);

说明

整数整幂

参数

i底数 n次幂

返回值

in

 

 

 

函数名

px_double PX_pow_ff(double num,double m);

说明

参数

num底数 m次幂

返回值

numm

 

复数

函数名

px_complex PX_complexBuild(px_float re,px_float im);

说明

构造一个复数

参数

re为实部,im为虚部

返回值

构造的复数结构

 

函数名

px_complex PX_complexAdd(px_complex a,px_complex b);

说明

复数相加

参数

a,b 需要相加的两复数

返回值

结果

 

函数名

px_complex PX_complexMult(px_complex a,px_complex b);

说明

复数相乘

参数

a,b 需要相乘的两复数

返回值

结果

 

函数名

px_double PX_complexMod(px_complex a)

说明

复数的模

参数

需要求解的复数

返回值

结果

 

 

函数名

px_complex PX_complexLog(px_complex a);

说明

复数的e的对数

参数

需要求解的复数

返回值

结果

 

函数名

px_complex PX_complexExp(px_complex a);

说明

复数的e的次数

参数

需要求解的复数

返回值

结果

函数名

px_complex PX_complexSin(px_complex a);

说明

复数的sin

参数

需要求解的复数

返回值

结果

 

矩阵

Px_matrix 结构体,声明为

union {

                   struct {

                            px_float        _11, _12, _13, _14;

                            px_float        _21, _22, _23, _24;

                            px_float        _31, _32, _33, _34;

                            px_float        _41, _42, _43, _44;

                   };

                   px_float m[4][4];

}

是一个4x4的矩阵

 

函数名

void PX_MatrixZero(px_matrix *Mat);

说明

构造一个0矩阵

参数

Mat指向该矩阵的指针

 

 

函数名

void PX_MatrixIdentity(px_matrix *Mat);

说明

构造一个单位矩阵

参数

Mat指向该矩阵的指针

 

函数名

px_matrix PX_MatrixMultiply(px_matrix Mat1,px_matrix Mat2);

说明

矩阵相乘

参数

Mat1Mat2 需要相乘的两个矩阵

返回值

返回矩阵相乘结果矩阵

 

函数名

px_matrix PX_MatrixAdd(px_matrix Mat1,px_matrix Mat2);

说明

矩阵相加

参数

Mat1Mat2 需要相加的两个矩阵

返回值

返回矩阵相加结果矩阵

 

函数名

px_matrix PX_MatrixSub(px_matrix Mat1,px_matrix Mat2);

说明

矩阵相减

参数

Mat1Mat2 需要相减的两个矩阵

返回值

返回矩阵相减结果矩阵

 

函数名

px_bool PX_MatrixEqual(px_matrix Mat1,px_matrix Mat2);

说明

判断两个矩阵是否相等

参数

Mat1Mat2 需要判断的两个矩阵

返回值

如果相等返回PX_TRUE,否者返回PX_FALSE

 

函数名

px_void PX_MatrixTranslation(px_matrix *mat,float x,float y,float z);

说明

构造平移矩阵

参数

Mat指向该矩阵的指针

X,Y,Z平移向量

 

函数名

px_void PX_MatrixRotateX(px_matrix *mat,float Angle);

说明

构造X轴旋转矩阵

参数

Mat指向该矩阵的指针

Angle 旋转角度(角度制)

 

 

函数名

px_void PX_MatrixRotateY(px_matrix *mat,float Angle);

说明

构造Y轴旋转矩阵

参数

Mat指向该矩阵的指针

Angle 旋转角度(角度制)

 

 

函数名

px_void PX_MatrixRotateZ(px_matrix *mat,float Angle);

说明

构造Z轴旋转矩阵

参数

Mat指向该矩阵的指针

Angle 旋转角度(角度制)

 

 

函数名

px_void PX_MatrixRotateXRadian (px_matrix *mat,float rad);

说明

构造X轴旋转矩阵

参数

Mat指向该矩阵的指针

rad 旋转角度(弧度制)

 

 

函数名

px_void PX_MatrixRotateYRadian (px_matrix *mat,float rad);

说明

构造Y轴旋转矩阵

参数

Mat指向该矩阵的指针

rad 旋转角度(弧度制)

 

 

函数名

px_void PX_MatrixRotateZRadian(px_matrix *mat,float rad);

说明

构造Z轴旋转矩阵

参数

Mat指向该矩阵的指针

rad 旋转角度(弧度制)

 

 

 

 

函数名

px_void PX_MatrixScale(px_matrix *mat,float x,float y,float z);

说明

构造缩放矩阵

参数

Mat指向该矩阵的指针

X,Y,Z缩放方向

 

函数名

px_bool PX_MatrixInverse(px_matrix *mat);

说明

矩阵求逆

参数

Mat指向该矩阵的指针

如果求逆成功,则mat为逆矩阵

 

函数名

px_void PX_MatrixTranspose(px_matrix *matrix);

说明

矩阵转置

参数

Marixt为需要转置的矩阵指针

 

 

函数名

 

说明

 

参数

 

 

/向量

函数名

px_point2D PX_Point2DRotate(px_point2D p,px_float angle);

px_point PX_PointRotate(px_point p,px_float angle);

 

说明

返回一个点绕原点顺时针旋转角度后的点

参数

P绕原点旋转的参考点

angle 旋转角度

返回值

返回结果点

 

 

函数名

px_point PX_PointAdd(px_point p1,px_point p2);

px_point PX_Point2DAdd(px_point2D p1,px_point2D p2);

px_point PX_Point4DAdd(px_point4D p1,px_point4D p2);

说明

向量相加

参数

P1,p2需要相加的两个向量

返回值

返回结果向量

 

函数名

px_point PX_PointSub(px_point p1,px_point p2);

px_point2D PX_Point2DSub(px_point2D p1,px_point2D p2);

px_point4D PX_Point4DSub(px_point4D p1,px_point4D p2);

说明

向量相减

参数

P1,p2需要相减的两个向量

返回值

返回结果向量

 

函数名

px_point PX_PointMul(px_point p1,px_float m);

px_point2D PX_Point2DMul(px_point2D p1,px_float m);

px_point4D PX_Point4DMul(px_point4D p1,px_float m);

说明

向量缩放

参数

P1 缩放向量

M 倍数

返回值

返回结果向量

 

函数名

px_point PX_PointDiv(px_point p1,px_float m);

px_point2D PX_Point2DDiv(px_point2D p1,px_float m);

px_point4D PX_PointDiv(px_point4D p1,px_float m);

说明

向量缩放

参数

P1 缩放向量

M 除以倍数

返回值

返回结果向量

 

函数名

px_float PX_PointDot(px_point p1,px_point p2);

px_float PX_Point2DDot(px_point2D p1,px_point2D p2);

px_float PX_Point4DDot(px_point4D p1,px_point4D p2);

说明

向量点乘

参数

P1,p2两点乘向量

返回值

返回结果

 

函数名

px_point PX_PointCross(px_point p1,px_point p2);

px_point2D PX_Point2DCross(px_point2D p1,px_point2D p2);

px_point4D PX_Point4DCross(px_point4D p1,px_point4D p2);

说明

向量叉乘

参数

P1,P2 两叉乘向量

返回值

返回叉乘结果

 

函数名

px_float PX_PointMod(px_point p);

px_float PX_Point2DMod(px_point2D p);

px_float PX_Point4DMod(px_point4D p);

说明

向量的模

参数

P 该向量

返回值

返回该向量的模

 

函数名

px_float PX_PointSquare(px_point p);

说明

向量模的平方

参数

P 该向量

返回值

返回该向量模的平方

 

函数名

px_float PX_PointDistance(px_point p1,px_point p2);

说明

求两点间距离

参数

P1 p2 两点

返回值

返回两点间距离

 

 

函数名

px_point PX_PointNormalization(px_point p);

px_point2D PX_Point2DNormalization(px_point p);

px_point4D PX_Point4DNormalization(px_point p);

说明

求单位向量(归一化向量)

参数

P 该向量

返回值

返回该向量模的单位向量

 

函数名

px_point PX_PointMulMatrix(px_point p,px_matrix mat)

px_point2D PX_Point2DMulMatrix(px_point p,px_matrix mat)

说明

点乘矩阵

参数

P 该向量,mat变换矩阵

返回值

返回变换后的点

 

 

函数名

px_float PX_Point_sin (px_point p)

说明

求该向量与x轴夹角sin

参数

P 该向量

返回值

Sin

 

函数名

px_float PX_Point_cos (px_point p)

说明

求该向量与x轴夹角cos

参数

P 该向量

返回值

cos

 

函数名

px_point PX_PointReflectX(px_point vector_refer,px_point respoint)

说明

参照向量关于x轴夹角对一个点做相应旋转

参数

vector_refer 向量

respoint 原点

返回值

旋转后的点

 

 

函数名

px_point PX_PointInverse(px_point p1)

说明

向量方向取反

参数

P1 需要取反的向量

返回值

取反的向量

 

交叉碰撞

函数名

px_bool PX_isLineCrossRect(px_point p1,px_point p2,px_rect rect,px_point *cp1,px_point *cp2);

说明

检测一条线与矩形是否相交

参数

P1,p2 这条线的两个点

Rect 矩形范围

Cp1 如果有相交,输出交点1

Cp2 如果有相交,输出交点2

返回值

如果有交叉返回PX_TRUE,否者返回PX_FALSE

 

 

函数名

px_bool PX_isRectCrossRect(px_rect rect1,px_rect rect2);

说明

检测两个矩形是否有交叉碰撞

参数

Rect1

Rect2

两矩形范围

返回值

如果有交叉返回PX_TRUE,否者返回PX_FALSE

 

函数名

px_bool PX_isRectCrossCircle(px_rect rect1,px_point center,px_float radius);

说明

检测一个矩形和一个圆是否有交叉碰撞

参数

Rect1 矩形

Center 圆心

Radius 圆半径

返回值

如果有交叉返回PX_TRUE,否者返回PX_FALSE

 

函数名

px_bool PX_isCircleCrossCircle(px_point center1,px_float radius1,px_point center2,px_float radius2);

说明

检测两个圆是否有交叉碰撞

参数

Center1  Center2圆心1,2

Radius1 Radius21,2半径

返回值

如果有交叉返回PX_TRUE,否者返回PX_FALSE

 

快速排序(由小到大)

函数名

void PX_Quicksort_MinToMax(PX_QuickSortAtom array[], px_int left, px_int right);

说明

对特定结构体进行由小到大排序

参数

typedef struct

{

         px_int power;//决定排序的权值

         px_void *pData;

}PX_QuickSortAtom;

 

array 排序序列

left 开始索引

right 结束索引

 

快速排序(由大到小)

函数名

void PX_Quicksort_MaxToMin(PX_QuickSortAtom array[], px_int left, px_int right);

说明

对特定结构体进行由大到小排序

参数

typedef struct

{

         px_int power;//决定排序的权值

         px_void *pData;

}PX_QuickSortAtom;

 

array 排序序列

left 开始索引

right 结束索引

 

矩形

px_rect

typedef struct _px_rect

{

         px_float x,y,width,height;

}px_rect;

 

x,y为矩形左上角坐标,widthheight为宽高

 

函数名

px_rect PX_RECT(px_float x,px_float y,px_float width,px_float height);

说明

构造一个矩形

参数

x,y 左上角坐标

width,height 矩形的宽度和高度

返回值

返回构造的矩形结构体

 

函数名

px_rect PX_RECTPOINT2(px_point p1,px_point p2);

说明

用两个点构造一个矩形

参数

p1,p2 构造的两点

返回值

返回构造的矩形结构体

 

 

函数名

px_bool PX_isPointInRect(px_point p,px_rect rect)

说明

判断点是否在矩形内

参数

p该点,rect为该矩形

返回值

若在矩形内返回PX_TRUE 否者返回PX_FALSE

 

函数名

px_bool PX_isRectInRect(px_rect rect1,px_rect rect2)

说明

判断是两个矩形是否相交

参数

Rect1 矩形1,rect2 矩形2

返回值

若在矩形内返回PX_TRUE 否者返回PX_FALSE

 

CRC校验(CRC32

函数名

px_uint32 PX_crc32( px_byte *buffer, px_uint size);

说明

对一段缓存区进行CRC32校验

参数

Buffer 缓存区

Size 缓存区大小

返回值

CRC32校验值

 

CRC校验(CRC16

函数名

px_uint16 PX_crc16( px_byte *buffer, px_uint size);

说明

对一段缓存区进行CRC16校验

参数

Buffer 缓存区

Size 缓存区大小

返回值

CRC32校验值

 

累加和校验(Sum32

函数名

px_uint32 PX_sum32( px_byte *buffer, px_uint size);

说明

对一段缓存区进行累加和校验

参数

Buffer 缓存区

Size 缓存区大小

返回值

累加和校验值

 

第一类修正贝塞尔函数

函数名

px_double PX_Bessel(int n,double x);

说明

第一类修正贝塞尔函数

参数

n,x

返回值

对应PX_Bessel(0,x), PX_Bessel(1,x), PX_Bessel(2,x)…..

通讯链接器(IO虚拟层)

通讯链接器(PX_Linker)PainterEngine默认的对通讯协议/IO的虚拟层,它可以被解释为TCP,UDP,串口,并口,文件读写等通讯协议的IO统一及虚拟

初始化链接器

函数名

px_void PX_LinkerInitialize(PX_Linker *linker,PX_LinkerRead read,px_void *readUserPtr,PX_LinkerWrite write,px_void *writeUserPtr);

说明

初始化链接器

参数

linker 链接器结构体

read 读函数(需要自行实现)

readuserptr 读函数传递指针

write 写函数(需要自行实现)

writeuserptr 写函数传递指针

 

*注意,对于有连接协议的抽象,在读写函数中必须自行维护连接的可用性

返回值

-

 

链接器读

函数名

px_int PX_LinkerRead(PX_Linker *linker,px_void *data,px_int datasize);

说明

链接器读

参数

linker 链接器结构体

data 读缓存

datasize读缓存大小

 

返回值

成功读字节数

 

链接器写

函数名

px_int PX_LinkerWrite(PX_Linker *linker,px_void *data,px_int datasize);

说明

链接器写

参数

linker 链接器结构体

data 写缓存

datasize写缓存大小

 

返回值

成功写字节数

 

数据结构

取得结构体偏移量

函数名

PX_STRUCT_OFFSET(t,m)

说明

取得结构体成员m对于结构体的偏移量

参数

t 结构体类型

m 成员名

返回值

一个px_uint类型,m在该结构体的偏移量

 

字母

函数名

px_void PX_CharIsNumeric(px_char ch)

说明

判断字母是否是数字

参数

ch字母

返回值

若是返回PX_TRUE,若不是返回PX_FALSE

 

链表

PainterEngine提供链表模板函数px_list,对该链表使用前都要改由PX_ListInitialize进行初始化并在使用完毕后使用PX_ListFree释放内存

 

初始化

函数名

px_void PX_ListInitialize (px_list *list,px_memorypool *mp);

说明

对链表结构进行初始化

参数

list 需要初始化的结构指针

mp 链表部署内存池指针

 

 

 

插入数据

函数名

px_void PX_ListPush(px_list *list,px_void *data,px_int size);

说明

插入一个数据到链表

参数

list 结构指针

data 数据指针

size 数据大小

 

删除数据

函数名

px_bool PX_ListPop(px_list *list,px_list_node *node);

说明

将一个节点为node的数据从链表中删除

参数

list 结构指针

node 链表节点

返回值

若成功删除返回PX_TRUE,否者为PX_FALSE

 

函数名

px_bool PX_ListErase(px_list *list,px_int i);

说明

将一个节点为node的数据从链表中删除

参数

list 结构指针

i 节点索引

返回值

若成功删除返回PX_TRUE,否者为PX_FALSE

 

取得链表节点

函数名

px_list_node* PX_ListNodeAt(px_list *list,px_int index);

说明

取得链表当前节点指针

参数

list结构指针

index 索引

返回值

索引节点,如果索引不合法返回PX_NULL

 

取得下一个链表节点

函数名

px_list_node* PX_ListNodeNext(px_list_node* node);

说明

取得节点的下一个节点指针

参数

node当前链表节点

返回值

下一个链表节点指针

 

取得链表当前节点数

函数名

px_int       PX_ListSize(px_list *list);

说明

取得链表当前节点数

参数

list结构指针

返回值

当前节点数

 

移动节点

函数名

px_void PX_ListMove(px_list *list,px_int index,px_int moveto);

说明

移动一个索引节点到目标索引

参数

index要移动的节点索引

moveto 移动到的索引

返回值

 

 

取得链表节点数

函数名

px_int       PX_ListSize(px_list *list);

说明

取得链表节点数

参数

list结构指针

返回值

链表节点数

 

清空链表(释放占用内存)

函数名

px_void PX_ListClear(px_list *list);

说明

清空链表

参数

list结构指针

返回值

-

 

函数名

px_void PX_ListFree(px_list *list);

说明

清空链表

参数

list结构指针

返回值

-

 

取节点数据

函数名

PX_LIST_NODEDATA(x)

PX_LIST_NODETDATA (t,x) ((t *)(x->pdata))

#define PX_LISTAT(t,x,i) ((t *)(PX_ListNodeAt(x,i)->pdata))   

说明

取节点数据

参数

x结构指针

*t 类型

返回值

-

 

DEMO

    px_list list;

    PX_ListInitialize(&list,&mempool2);

    PX_ListPush(&list,"Hello",6);

    PX_ListPush(&list,"World",6);

    PX_ListPush(&list,"binar",6);

 

    PX_ListPop(&list,PX_ListAt(&list,1));

    PX_ListPop(&list,PX_ListAt(&list,1));

    PX_ListPop(&list,PX_ListAt(&list,1));

 

    for (int i=0;i<PX_ListSize(&list);i++)

    {

        printf((px_char *)PX_LIST_NODEDATA(PX_ListAt(&list,i)));

    }

 

容器

PainterEngine提供容器模板函数px_vector,对该链表使用前都要改由PX_VectorInitialize进行初始化并在使用完毕后使用PX_VectorFree释放内存

 

初始化

函数名

px_void PX_VectorInitialize

(px_vector *vec,px_memorypool *mp,px_int nodeSize,px_int init_size);

说明

对容器结构进行初始化

参数

vec 容器指针

mp 容器部署内存池指针

nodesize 每个元素的大小

init_size 初始容器大小(初始化分配的元素个数)

 

添加元素

函数名

px_bool PX_VectorPushback(px_vector *vec,px_void *data);

说明

在容器中添加一个元素

参数

vec容器指针

data  压入数据指针

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

函数名

px_bool PX_VectorPushTo(px_vector *vec,px_void *data,px_int index);

说明

在容器中指定位置添加一个元素

参数

vec容器指针

data  压入数据指针

index 插入的位置索引

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

设定元素

函数名

px_bool PX_VectorSet(px_vector *vec,px_uint index,px_void *data);

说明

在容器中设定对应索引的元素,注意,如果索引小于分配容量,改容器将会重新分配内存空间以设定元素,同时索引小于使用大小,容器也会设定对应使用大小以适应设定索引

参数

vec容器指针

index 索引

data  压入数据指针

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

 

删除元素

函数名

px_bool PX_VectorErase(px_vector *vec,px_int index);

说明

在容器中删除一个元素

参数

vec容器指针

index 需要删除的索引

返回值

若成功返回PX_TRUE,否者PX_FALSE

 

清空容器(不释放预留内存)

函数名

px_void PX_VectorClear(px_vector *vec);

说明

清空容器

参数

vec容器指针

返回值

-

 

 

取容器数据

函数名

PX_VectorAt(vec,i)

说明

取容器数据

参数

vec容器指针

I 索引

返回值

-

 

释放容器(释放预留内存)

函数名

PX_VectorFree(x)

说明

释放容器,同时释放内存,若需要重新使用该容器必须对其重新初始化

参数

x容器指针

返回值

-

 

拷贝容器

函数名

px_bool PX_VectorCopy(px_vector *destvec,px_vector *resvec);

说明

拷贝容器

参数

destvec 目标容器

resvec 原容器

返回值

成功返回PX_TRUE,否者PX_FALSE

 

重置容器的大小

函数名

px_bool PX_VectorResize(px_vector *vec,px_int size);

说明

重置容器的大小

参数

vec目标容器

size重置大小

注意,重置大小的容器数据将直接丢失

返回值

成功返回PX_TRUE,否者PX_FALSE

 

字符串映射表

初始化映射表

函数名

px_bool PX_MapInitialize(px_memorypool *mp,px_map *hashmap);

说明

初始化一个映射

参数

mp,内存池

hashmap 映射表

返回值

如果成功返回PX_TRUE,否者PX_FALSE

 

插入元素

函数名

PX_HASHMAP_RETURN PX_MapPut (px_map * m, px_char* key, px_void * value);

说明

插入一个节点到表中

参数

m 哈希表

key 映射字符串

value

返回值

如果成功返回PX_HASHMAP_RETURN_OK

 

函数名

PX_HASHMAP_RETURN PX_MapPutInt (px_map * m, px_char* key, px_int value);

说明

插入一个int节点到表中

参数

m 哈希表

key 映射字符串

value

返回值

如果成功返回PX_HASHMAP_RETURN_OK

 

函数名

PX_HASHMAP_RETURN PX_MapPutFloat (px_map * m, px_char* key, px_int value);

说明

插入一个float节点到表中

参数

m 哈希表

key 映射字符串

value

返回值

如果成功返回PX_HASHMAP_RETURN_OK

 

查找元素

函数名

px_void *PX_MapGet(px_map * m, px_char* stringkey);

说明

查找哈希表对应key的元素

参数

m 哈希表

key 映射字符串

返回值

对于返回类型

 

函数名

px_bool PX_MapGetInt(px_map * m, px_char* stringkey,px_int *v);

说明

查找哈希表对应keyint元素

参数

m 哈希表

key 映射字符串

v返回赋值指针

返回值

如果成功返回PX_TRUE,否则返回PX_FALSE

 

函数名

px_float PX_MapGetFloat(px_map * m, px_char* stringkey);

说明

查找哈希表对应keyfloat元素

参数

m 哈希表

key 映射字符串

v返回赋值指针

返回值

如果成功返回PX_TRUE,否则返回PX_FALSE

 

删除元素

函数名

PX_HASHMAP_RETURN PX_MapErase (px_map * m, px_char* key);

说明

删除对应key的元素

参数

m 哈希表

key 映射字符串

返回值

如果成功返回PX_HASHMAP_RETURN_OK

 

释放map

函数名

px_void PX_MapFree(px_map * m)

说明

删除对应map所有元素并释放内存资源

参数

m 哈希表

返回值

-

 

自适应内存

PainterEngine Core提供自动内存类型px_memory,注意,px_ memory使用前,都应该使用PX_MemoryInit进行初始化,并在使用完毕后使用PX_MemoryFree释放内存

 

初始化

函数名

px_void PX_MemoryInitialize(px_memorypool *mp,px_memory *memory);

说明

对自适应内存结构进行初始化

参数

mp 容器部署内存池指针

memory 内存指针

 

拼接内存

函数名

px_bool PX_MemonyCat(px_memory *memory,px_void *buffer,px_int size);

说明

对自适应内存进行数据拼接

参数

memory内存指针

buffer 需要拼接的内存指针

size 拼接大小

返回值

若成功返回PX_TRUE,否者返回PX_FALSE

 

重置内存分配大小

函数名

px_void PX_MemonyResize(px_memory *memory, px_int size);

说明

重置内存分配大小

参数

memory内存指针

size 新的分配大小

返回值

若成功返回PX_TRUE,否者返回PX_FALSE

 

释放内存

函数名

px_void PX_MemoryFree(px_memory *memory);

说明

释放内存

参数

memory 内存指针

 

 

取内存数据

函数名

px_byte * PX_MemoryData(px_memory *memory);

说明

取内存数据指针

参数

memory 内存指针

返回值

内存数据指针

 

内存查找

函数名

px_byte * PX_MemoryFind(px_memory *memory,px_void *buffer,px_int size);

说明

在内存中查找匹配内存

参数

memory 内存指针

buffer 匹配内存缓存

size 匹配内存缓存大小

返回值

如果找到返回该内存数据指针,否者返回PX_NULL

 

 

内存拷贝

函数名

px_void PX_MemoryCopy(px_memory *memory,px_void *buffer,px_uint startoffset,px_int size);

说明

拷贝内存到目标内存结构中,注意,这个函数会依据拷贝内存大小自动调整内存部署

参数

memory 内存指针

buffer 拷贝内存缓存

startoffset 拷贝到的起始地址

size 拷贝内存缓存大小

返回值

 

 

 

内存清理

函数名

px_void PX_MemoryClear(px_memory *memory);

说明

清空内存,这个函数并不会释放占用内存空间

参数

memory 内存指针

返回值

 

 

移除内存

函数名

px_void PX_MemoryRemove(px_memory *memory,px_int start,px_int end)

说明

移除一块内存区域,在区域之后的内存数据将自动拼接到移除的位置中

参数

memory 内存指针

start 开始索引

end 结束索引

*开始索引必须小于等于结束索引,结束索引不得大于等于实际已用内存大小

 

返回值

 

 

 

内存自适应字符串

PainterEngine Core提供自动内存调节的字符串类型px_string,注意,px_string的需要更多的性能开销,字符串使用前,都应该使用PX_StringInit进行初始化,并在使用完毕后使用PX_StringFree释放内存

初始化

函数名

px_bool PX_StringInitialize(px_memorypool *mp,px_string *str);

说明

对字符串结构进行初始化

参数

mp 容器部署内存池指针

str 字符串指针

返回值

成功返回PX_TRUE,否者PX_FALSE

 

函数名

px_void PX_StringInitFromConst(px_string *str,px_char *conststr);

说明

使用一个字符串常量对字符串结构初始化,这个字符串额外占据的内存为0

参数

str 字符串指针

conststr 字符串常量指针

 

转换
转换为整数

函数名

px_int PX_StringToInteger(px_string *str);

说明

转换字符串为整数,支持十六进制转换(0x0X开头)

参数

str 字符串指针

返回值

转换整数结果,

 

转换为小数

函数名

px_float PX_StringToFloat(px_string *str);

说明

转换字符串为浮点数

参数

str 字符串指针

返回值

转换浮点结果,

 

设置字符串文本

函数名

px_bool PX_StringSet(px_string *str,px_char fmt[]);

说明

设置字符串文本

参数

str 字符串指针

fmt 需要设置的文本

返回值

成功返回PX_TRUE,否者PX_FALSE(内存不足)

 

 

去除首位空格

函数名

px_void PX_StringTrim(px_string *str);

说明

去除首位空格,

参数

str 字符串指针

返回值

-

 

取字符串长度

函数名

px_int  PX_StringLen(px_string *str);

说明

取得字符串长度

参数

str 字符串指针

返回值

字符长度

 

字符串拼接

函数名

px_void PX_StringCatChar(px_string *str,px_char ch);

说明

ch拼接到字符串str的尾部

参数

str 字符串指针

ch 拼接字母

返回值

-

函数名

px_void PX_StringCat(px_string *str,px_char *str2);

说明

str2拼接到字符串str的尾部

参数

str 字符串指针

str2 拼接字符串指针

返回值

-

释放字符串

函数名

px_void PX_StringFree(px_string *str);

说明

释放字符串内存

参数

str 字符串指针

 

清理字符串

函数名

px_void PX_StringClear(px_string *str);

说明

清理字符串文本(不释放内存)

参数

str 字符串指针

 

插入字符

函数名

px_bool PX_StringInsertChar(px_string *str,px_int index,px_char ch);

说明

将一个字符插入到字符串中

参数

str 字符串指针

index 插入的位置索引

ch 要插入的字符

 

删除字符

函数名

px_bool PX_StringRemoveChar(px_string *str,px_int index);

说明

将一个字符到从字符串中删除

参数

str 字符串指针

index 插入的位置索引

ch 要插入的字符

 

裁剪字符串

函数名

px_void PX_StringTrimLeft(px_string *str,px_int leftCount);

说明

裁剪字符串左边的字符

参数

str 字符串指针

leftCount裁去左边的字符数

 

函数名

px_void PX_StringTrimRight(px_string *str,px_int RightCount);

说明

裁剪字符串右边的字符

参数

str 字符串指针

RightCount裁去左边的字符数

 

格式化字符串

函数名

px_bool PX_StringFormat8(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3, px_stringformat _4,px_stringformat _5, px_stringformat _6, px_stringformat _7, px_stringformat _8);

px_bool PX_StringFormat7(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3, px_stringformat _4,px_stringformat _5, px_stringformat _6, px_stringformat _7);

px_bool PX_StringFormat6(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3, px_stringformat _4,px_stringformat _5, px_stringformat _6);

px_bool PX_StringFormat5(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3, px_stringformat _4,px_stringformat _5);

px_bool PX_StringFormat4(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3, px_stringformat _4);

px_bool PX_StringFormat3(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2, px_stringformat _3);

px_bool PX_StringFormat2(px_string *str,px_char fmt[],px_stringformat _1, px_stringformat _2);

px_bool PX_StringFormat1(px_string *str,px_char fmt[],px_stringformat _1);

 

说明

格式化字符串

参数

参考px_sprintf1…的实现

 

 

 

筛选

函数名

px_bool PX_StringIsNumeric(px_string *str);

说明

判断字符串是否为合法数字

参数

str 字符串指针

返回值

如果是返回PX_TRUE,否者PX_FALSE

 

函数名

px_bool PX_StringIsFloat(px_string *str);

说明

判断字符串是否为合法浮点数

参数

str 字符串指针

返回值

如果是返回PX_TRUE,否者PX_FALSE

 

 

字符串替换1

函数名

px_void PX_StringReplaceRange(px_string *str,px_int startindex,px_int endindex,px_char *replaceto)

说明

字符串替换,将目标范围的字符串替换为replaceto里的字符串

参数

str 字符串指针

startindex 开始索引

endindex 结束索引

replaceto  替换成的字符串

返回值

-

 

字符串替换2

函数名

px_void PX_StringReplace(px_string *str,px_char *source,px_char *replaceto);

说明

字符串替换,str中包含source的文本都替换为replaceto

参数

str 字符串指针

source 需要搜索的原始文本

replaceto 替换成的文本

返回值

-

 

 

几何绘制

线

 

函数名

px_void PX_GeoDrawLine(px_surface *psurface, px_int x0, px_int y0, px_int x1, px_int y1 ,pt_int lineWidth, px_color color);

说明

绘制一个反走样线段

参数

psurface 渲染表面

x0 y0起始点坐标

x1 y1 终点坐标

lineWidth 线宽

color 颜色

 

 

边框

 

函数名

px_void PX_GeoDrawBorder(px_surface *psurface, px_int left, px_int top, px_int rignt, px_int bottom ,px_int lineWidth,px_color color);

说明

绘制一个边框

参数

psurface 渲染表面

left top right bottom 位置描述

lineWidth 边框宽度像素

color 颜色

 

 

矩形

 

函数名

px_void PX_GeoDrawRect(px_surface *psurface, px_int left, px_int top, px_int right, px_int bottom,px_color color);

说明

绘制一个实心矩形

参数

psurface 渲染表面

left top right bottom 位置描述

color 颜色

 

实心圆

 

函数名

px_void PX_GeoDrawSolidCircle(px_surface *psurface, px_int x,px_int y,px_int Radius,px_color color );

说明

绘制一个反走样实心圆

参数

psurface 渲染表面

xy 圆心

radius 半径

color 颜色

 

 

函数名

px_void PX_GeoDrawCircle(px_surface *psurface,px_int x,px_int y,px_int Radius ,pt_int lineWidth,px_color color);

说明

绘制一个反走样圆

参数

psurface 渲染表面

xy 圆心

radius 半径

lineWidth 线宽

color 颜色

 

圆笔

 

函数名

px_void PX_GeoDrawPenCircle(px_surface *psurface, px_float x,px_float y,px_float Radius,px_color color)

说明

绘制一个反走样圆,这个算法用于高质量圆笔的绘制,可用这个算法组合为线段路径

参数

psurface 渲染表面

xy 圆心

radius 半径

lineWidth 线宽

color 颜色

 

函数名

px_void PX_GeoDrawRing(px_surface *psurface, px_int x,px_int y,px_int Radius,px_int lineWidth,px_color color,px_uint start_angle,px_uint end_angle)

说明

绘制一个反走样环

参数

psurface 渲染表面

xy 环心

radius 半径

lineWidth 线宽

color 颜色

start_angle 起始角度

end_angle 终止角度

这个环遵循顺时针方向

 

 

扇形

函数名

px_void PX_GeoDrawSector(px_surface *psurface, px_int x,px_int y,px_int Radius_outside,px_int Radius_inside,px_color color,px_uint start_angle,px_uint end_angle);

说明

绘制一个反走样扇形

参数

psurface 渲染表面

xy 环心

radius 半径

outside 外径

inside 内径

color 颜色

start_angle 起始角度

end_angle 终止角度

这个扇形遵循顺时针方向

 

 

圆角矩形

函数名

px_void PX_GeoDrawRoundRect(px_surface *psurface, px_int left, px_int top, px_int right, px_int bottom,px_float roundRaduis,px_float linewidth,px_color color);

说明

绘制一个反走样圆角矩形

参数

psurface 渲染表面

left top right bottom 位置描述

roundRadius 圆角半径

lineWidth 线宽

color 颜色

 

实心圆角矩形

函数名

px_void PX_GeoDrawSolidRoundRect(px_surface *psurface, px_int left, px_int top, px_int right, px_int bottom,px_float roundRaduis,px_color color);

说明

绘制一个反走样实心圆角矩形

参数

psurface 渲染表面

left top right bottom 位置描述

roundRadius 圆角半径

color 颜色

 

描边路径

函数名

px_void PX_GeoDrawPath(px_surface *psurface, px_point path[],px_int pathCount,px_float linewidth,px_color color)

说明

描边路径

*注意:渲染算法使用圆点插值算法进行绘制以获得高质量的描线,alpha值因为step也会有所放大(4),这个算法耗费性能资源较大,这个渲染算法应该谨慎用于实时渲染表面

参数

psurface 渲染表面

path 路径上所有的点

pathCount 点的数量

linewidth 线宽

color 颜色

 

 

 

三角形

函数名

px_void PX_GeoDrawTriangle(px_surface *psurface,px_point2D p0,px_point2D p1,px_point2D p2,px_color color);

说明

绘制一个反走样三角形

参数

psurface 渲染表面

p0 p1 p2 三角形三点

color 颜色

 

 

 

箭头

函数名

px_void PX_GeoDrawArrow(px_surface *psurface,px_point2D p0,px_point2D p1,px_float size,px_color color)

说明

绘制一个由p0指向p1的箭头

参数

psurface 渲染表面

p0 p1 箭头向量两点

size 箭头尺寸

color 颜色

 

 

 

绘制贝塞尔曲线

函数名

px_void PX_GeoDrawBezierCurvePoint(px_surface *rendersurface,px_point pt[],px_int pt_count,px_float t,px_float radius,px_color clr);

说明

绘制一条圆笔控制步长的由多个控制点组成的贝塞尔曲线

参数

Rendersurface 渲染表面

pt 贝塞尔控制点数组

pt_count 控制点个数

t 圆笔步长

radius 圆笔半径

clr 圆笔每点颜色

 

 

 

图形图像

渲染表面

颜色

函数名

px_color PX_COLOR(px_uchar a,px_uchar r,px_uchar g,px_uchar b);

说明

构造颜色

参数

A,r,g,b颜色分量

 

 

函数名

px_void PX_ColorIncrease(px_color *color,px_uchar inc);

说明

增量颜色值

参数

Color 指向需要增量的颜色结构

Inc 增量值

 

 

 

函数名

px_color PX_ColorAdd(px_color color1,px_color color2);

说明

颜色相加

参数

Color1color2 需要相加的两个颜色

返回值

返回相加的颜色结果

 

 

函数名

px_color PX_ColorSub(px_color color1,px_color color2);

说明

颜色相减

参数

Color1color2 需要相减的两个颜色

返回值

返回相减的颜色结果

 

 

函数名

px_bool PX_ColorEqual(px_color color1,px_color color2);

说明

判断两个颜色是否相等

参数

Color1color2 需要判断的两个颜色

返回值

如果相等返回PX_TRUE,否者返回PX_FALSE

 

 

 

表面操作

 

函数名

px_bool PX_SurfaceCreate(px_memorypool *mp,px_uint height,px_uint width,px_surface *surface);

说明

创建一个渲染表面,它是用于描述渲染内存的结构体,仅支持32BGRA色彩格式。

参数

Mp 内存池指针

Height

Width

Surface 渲染表面指针

返回值

如果成功返回PX_TRUE,否者返回PX_FALSE

 

 

函数名

px_void PX_SurfaceFree(px_surface *psurface);

说明

释放一个渲染表面

参数

psurface 指向需要释放的渲染表面

 

像素操作

函数名

px_void PX_SurfaceDrawPixel(px_surface *ps,px_int x,px_int y,px_color color);

说明

绘制一个像素

参数

ps 指向表面

xy 坐标

color 颜色

返回值

 

 

 

函数名

PX_SUFACECOLOR(Surface,X,Y)

说明

查找像素颜色

参数

Surface指向表面

XY 坐标

返回值

对应px_color

 

 

函数名

px_void PX_SetPixel(px_surface *ps,px_int x,px_int y,px_color color);

说明

设置一个像素

参数

ps 指向表面

xy 坐标

color 颜色

返回值

 

 

函数名

px_void PX_SurfaceSetRect(px_surface *psurface, px_int left, px_int top, px_int right, px_int bottom,px_color color)

说明

将一个渲染表面的一个矩形区域设置为某种颜色

参数

psurface 渲染表面

left top right bottom 位置描述

color 颜色

返回值

-

 

 

函数名

px_int PX_SurfaceMemorySize(px_uint width,px_uint height);

说明

预估一个表面的占用内存(实际占用依据内存池结构应适当增大)

参数

width 表面宽度

height 表面高度

返回值

-

设置渲染限制区域

 

函数名

px_void PX_SurfaceSetLimit(px_surface *ps,px_int limit_left,px_int limit_top,px_int limit_right,px_int limit_bottom);

说明

设置渲染的限制区域,该区域不得超出渲染表面的区域(否者函数会对其进行裁剪)

这个限制区域将会PX_SurfaceDrawPixelPX_SurfaceSetPixel生效

参数

ps

limit_left  限制区域左上角x坐标

limit_top 限制区域左上角y坐标

limit_right  限制区域右下角x坐标

limit_bottom 限制区域右下角y坐标

返回值

-

 

取得当前渲染限制信息

 

函数名

PX_SurfaceLimitInfo PX_SurfaceGetLimit(px_surface *ps);

说明

取得渲染的限制区域

参数

ps 渲染表面

返回值

-限制信息

设置当前渲染限制信息

函数名

px_void PX_SurfaceSetLimitInfo(px_surface *ps,PX_SurfaceLimitInfo info);

说明

设置渲染的限制区域

参数

ps 渲染表面

info 限制信息

返回值

 

 

纹理

 

px_texturePainterEngine的纹理对象结构,建议所有的图像数据都最终加载为px_texture

其本质上仍然是一个surface,其指针可以和px_surface互换使用.

创建纹理

函数名

px_bool PX_TextureCreate(px_memorypool *mp,px_texture *tex,px_int width,px_int height);

说明

创建一个Texture表面

参数

 mp 内存池指针

tex 输出表面指针

width

height

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

函数名

px_bool PX_TextureCreateFromMemory(px_memorypool *mp,px_void *data,px_int size,px_texture *tex);

说明

从支持的数据创建一个Texture表面(如bmpTRaw

参数

 mp 内存池指针

data 数据指针

size

tex 纹理格式

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

缩放纹理

函数名

px_bool PX_TextureCreateScale(px_memorypool *mp,px_texture *resTexture,px_int newWidth,px_int newHeight,px_texture *out);

说明

使用窗采样缩放一个纹理并创造缩放后的纹理

参数

 mp 内存池指针

resTexture 原纹理指针

newWidth newHeight 缩放后的大小

out 缩放后的纹理指针,在使用完毕后改指针必须被释放

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

 

 

 

拷贝纹理

函数名

px_bool PX_TextureCopy(px_memorypool *mp,px_texture *resTexture, px_texture *out);

说明

深拷贝一个纹理到目标纹理中

参数

 mp 内存池指针

resTexture 原纹理指针

out 拷贝到目标纹理

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

 

渲染纹理

函数名

px_void PX_TextureRender(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend);

说明

渲染一个纹理到表面

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

 

返回值

-

 

函数名

px_void PX_TextureRenderPixelShader(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TexturePixelShader shader,px_void *ptr);

说明

渲染一个纹理到表面,每个像素渲染将会调用shader

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

shader  pixels shader函数

ptr 传递给PixelsShader的指针

返回值

-

 

 

 

函数名

px_void PX_TextureRenderRotation(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_int Angle);

说明

渲染一个纹理到表面,并顺时针旋转一个角度

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

Angle 旋转的角度

 

注意该函数使用双线性插值滤波运算,对于性能要求较高的渲染函数可以使用PX_TextureRenderEx,以较低的显示损失获得8倍左右的性能

返回值

-

函数名

px_void PX_TextureRenderRotation_vector(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_point p_vector);

说明

渲染一个纹理到表面,并顺时针旋转一个角度

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

P_vector 旋转向量,x轴正方向为基准

 

注意该函数使用双线性插值滤波运算,对于性能要求较高的渲染函数可以使用PX_TextureRenderEx,以较低的显示损失获得8倍左右的性能

返回值

-

 

函数名

px_void PX_TextureRenderRotation_sincos(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_float  sin,px_float cos);

说明

渲染一个纹理到表面,并顺时针旋转一个角度

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

Sin cos 旋转矩阵对于sin cos

 

注意该函数使用双线性插值滤波运算,对于性能要求较高的渲染函数可以使用PX_TextureRenderEx,以较低的显示损失获得8倍左右的性能

返回值

-

 

 

函数名

px_void PX_TextureRenderEx(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_float scale,px_float rotation);

说明

渲染一个纹理到表面,注意,这个渲染方式的速度不如PX_TextureRender,但提供了纹理的缩放和旋转(同样处于效率考虑,其缩放旋转均采用单点采样,其质量不如使用纹理缩放的函数,但速度快于这两函数,对于高精度旋转和缩放动画,采用该函数可以获得一个折中的效率,内存空间与动画效果)

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

scale 缩放大小

rotation 旋转角度

返回值

-

 

函数名

px_void PX_TextureRenderEx_sincos(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_float scale,px_float sin,px_float cos);

说明

渲染一个纹理到表面,注意,这个渲染方式的速度不如PX_TextureRender,但提供了纹理的缩放和旋转(以旋转矩阵sin cos形式,同样处于效率考虑,其缩放旋转均采用单点采样,其质量不如使用纹理缩放的函数,但速度快于这两函数,对于高精度旋转和缩放动画,采用该函数可以获得一个折中的效率,内存空间与动画效果)

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

scale 缩放大小

sin 旋转矩阵sin

cos 旋转矩阵 cos

返回值

-

 

 

函数名

px_void PX_TextureRenderEx(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_float scale,px_float rotation);

说明

渲染一个纹理到表面,注意,这个渲染方式的速度不如PX_TextureRender,但提供了纹理的缩放和旋转(同样处于效率考虑,其缩放旋转均采用单点采样,其质量不如使用纹理缩放的函数,但速度快于这两函数,对于高精度旋转和缩放动画,采用该函数可以获得一个折中的效率,内存空间与动画效果)

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

scale 缩放大小

rotation 旋转角度

返回值

-

 

函数名

px_void PX_TextureRenderEx_vector(px_surface *psurface,px_texture *tex,px_int x,px_int y ,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend,px_float scale,px_point p_vector);

说明

渲染一个纹理到表面,注意,这个渲染方式的速度不如PX_TextureRender,但提供了纹理的缩放和旋转(以旋转矩阵vector形式,同样处于效率考虑,其缩放旋转均采用单点采样,其质量不如使用纹理缩放的函数,但速度快于这两函数,对于高精度旋转和缩放动画,采用该函数可以获得一个折中的效率,内存空间与动画效果)

 

默认的指向方向为

参数

 psurface 渲染到的表面

 px_texture需要渲染的纹理

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

scale 缩放大小

指向方向

返回值

-

 

 

函数名

px_void PX_TextureRegionRender(px_surface *psurface,px_texture *resTexture,px_int x,px_int y,px_int oft_left,px_int oft_top,px_int oft_right,px_int oft_bottom,PX_ALIGN refPoint,PX_TEXTURERENDER_BLEND *blend)

说明

渲染部分纹理

参数

psurface 渲染表面

ptexture 纹理

x,y 绘制参考点

left,right,top,bottom 需要绘制的纹理位置描述

refPoint 参考点类型的位置描述

blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

typedef struct

{

         float hdr_R; //HDR of Red

         float hdr_G; //HDR of Green

         float hdr_B; //HDR of Blue

         float alpha; //Blend of alpha

}PX_TEXTURERENDER_BLEND;

 

返回值

-

 

 

创建旋转纹理

函数名

px_bool PX_TextureCreateRotationAngle(px_memorypool *mp,px_texture *resTexture,px_float Angle,px_texture *out);

说明

将一个纹理按角度进行顺时针旋转并创建一个新纹理

参数

 mp 内存池指针

resTexture 原纹理

Angle 旋转的角度

out 输出纹理

 

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

 

函数名

px_bool PX_TextureRotationAngleToTexture(px_texture *resTexture,px_float Angle,px_texture *out);

说明

将一个纹理按角度进行顺时针旋转并拷贝到目标纹理

参数

resTexture 原纹理

Angle 旋转的角度

out 输出纹理

 

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

 

 

函数名

px_bool PX_TextureCreateRotationRadian(px_memorypool *mp,px_texture *resTexture,px_float Rad,px_texture *out);

说明

将一个纹理按弧度进行顺时针旋转并创建一个新纹理

参数

 mp 内存池指针

resTexture 原纹理

Rad旋转的弧度

out 输出纹理

 

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

释放纹理

函数名

px_void PX_TextureFree(px_texture *tex);

说明

释放纹理内存

参数

tex 纹理指针

 

返回值

-

 

填充纹理

函数名

px_void PX_TextureFill(px_memorypool *mp,px_texture *ptexture,px_int x,px_int y,px_color test_color,px_color fill_color)

说明

填充纹理

参数

mp 运行计算内存池

ptexture 纹理

x,y填充位置

test_color 测试颜色

fill_color 填充颜色

返回值

-

 

获取纹理可见数据包围盒

函数名

px_void PX_TextureGetVisibleRange(px_texture *ptexture,px_int *pLeft,px_int *pRight,px_int *pTop,px_int *pBottom);

说明

填充纹理

参数

ptexture 纹理

pleft,pright,ptop,pbottom 输出可见包围信息

返回值

-

 

 

图像算子

Priwitt算子

函数名

px_void PX_ImageFilter_PriwittX(px_texture *ptexture,px_float out[]);

说明

Priwitt算子 水平方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_PriwittY(px_texture *ptexture,px_float out[]);

说明

Priwitt算子 垂直方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_Priwitt(px_texture *ptexture,px_float out[]);

说明

Priwitt算子

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

Sobel算子

函数名

px_void PX_ImageFilter_SobelX(px_texture *ptexture,px_float out[]);

说明

Sobel算子 水平方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_SobelY(px_texture *ptexture,px_float out[]);

说明

Sobel算子 垂直方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_Sobel (px_texture *ptexture,px_float out[]);

说明

Sobel算子

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

Roberts算子

函数名

px_void PX_ImageFilter_RobertsX(px_texture *ptexture,px_float out[]);

说明

Sobel算子 水平方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_RobertsY(px_texture *ptexture,px_float out[]);

说明

Sobel算子 垂直方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_Roberts (px_texture *ptexture,px_float out[]);

说明

Sobel算子

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

 

Laplacian算子

函数名

px_void PX_ImageFilter_LaplacianX(px_texture *ptexture,px_float out[]);

说明

Sobel算子 水平方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_LaplacianY(px_texture *ptexture,px_float out[]);

说明

Sobel算子 垂直方向

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

函数名

px_void PX_ImageFilter_Laplacian (px_texture *ptexture,px_float out[]);

说明

Sobel算子

参数

ptexture 纹理指针

out 输出矩阵,大小应该至少是纹理长宽

返回值

-

 

轮廓

PX_ShapepainterEngine内建的轮廓格式,轮廓可以被认为是仅带有灰度及位置信息的纹理,轮廓的每个位置信息都由一个256阶的灰度表示(1字节)在渲染轮廓的时候,需要制定一个颜色信息以对轮廓进行渲染.

创建轮廓

函数名

px_bool PX_ShapeCreate(px_memorypool *mp,px_shape *shape,px_int width,px_int height);

说明

创建一个轮廓

参数

 mp 内存池指针

shape 输出轮廓

width

height

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

创建纹理轮廓

函数名

px_bool PX_ShapeCreateFromTexture(px_memorypool *mp,px_shape *shape,px_texture *texture);

说明

从纹理创建一个轮廓

参数

 mp 内存池指针

shape 输出轮廓

texture 映射纹理

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

函数名

px_bool PX_ShapeCreateFromMemory(px_memorypool *mp,px_void *data,px_int size,px_shape *shape);

说明

从内存创建一个轮廓(支持TRaw内建格式)

参数

 mp 内存池指针

shape 输出轮廓

data 数据

size 数据大小

返回值

若成功返回PX_TRUE 否者PX_FALSE

 

渲染轮廓

函数名

px_void PX_ShapeRender(px_surface *psurface,px_shape *shape,px_int x,px_int y,PX_ALIGN refPoint,px_color blendColor);

说明

渲染一个轮廓到表面

参数

 psurface 渲染到的表面

 px_shape需要渲染的轮廓

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

blendcolor 渲染颜色

返回值

-

 

 

函数名

px_void PX_ShapeRenderEx(px_surface *psurface,px_shape *shape,px_int x,px_int y,PX_ALIGN refPoint,px_color blendColor,px_float scale,px_float Angle);

说明

旋转缩放后渲染一个轮廓到表面

参数

 psurface 渲染到的表面

 shape 需要渲染的轮廓

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

blendcolor 渲染颜色

scale 缩放大小

rotation 旋转角度

返回值

-

 

 

函数名

px_void PX_ShapeRenderEx_sincos(px_surface *psurface,px_shape *shape,px_int x,px_int y,PX_ALIGN refPoint,px_color blendColor,px_float scale,px_float sinx,px_float cosx);

说明

旋转后渲染一个轮廓到表面

参数

 psurface 渲染到的表面

 shape 需要渲染的轮廓

 xy偏移量(该坐标以纹理左上角为参照)

refPoint 参考中心点,用于表示纹理绘制的相对位置

blend blend类型结构体,用于调整绘制纹理的alphahdr

当它为PX_NULL时,表示采用默认blend

blendcolor 渲染颜色

sinx cosx,旋转矩阵对应sinx cosx位置值,这个函数在以向量为标准的旋转标定渲染中尤为有用

返回值

-

 

释放轮廓

函数名

px_void PX_ShapeFree(px_shape *shape);

说明

释放轮廓

参数

shape 轮廓指针

 

返回值

-

 

位图

验证位图数据合法性

函数名

px_bool PX_BitmapVerify(void *BitmapBuffer,px_int size);

说明

验证数据是否为合法位图数据

参数

 BitmapBuffer 位图数据

Size 数据长度

返回值

如果合法返回PX_TRUE,否者PX_FALSE

 

 

 

取得位图高度

函数名

px_uint PX_BitmapGetHeight(void *BitmapBuffer);

说明

取得位图高度

参数

 BitmapBuffer 位图数据

返回值

位图的高度(可能为负数)

 

 

 

取得位图宽度

函数名

px_uint PX_BitmapGetWidth(void *BitmapBuffer);

说明

取得位图宽度

参数

 BitmapBuffer 位图数据

返回值

位图的宽度(可能为负数)

 

 

 

取得位图像素数据

函数名

px_word PX_BitmapGetBitCount(void *BitmapBuffer);

说明

取得位图像素数据

参数

 BitmapBuffer 位图数据

返回值

位图的位图像素数据

 

渲染位图到表面

函数名

void PX_BitmapRender(px_surface *psurface,void *BitmapBuffer,px_int BufferSize,int x,int y);

说明

渲染位图到表面

参数

psurface渲染表面

BitmapBuffer 位图数据

BufferSize 数据长度

x,y偏移量

返回值

 

 

Surface转位图数据

函数名

px_bool PX_BitmapBuild(px_surface *psurface,px_char *BitmapBuffer,px_int *size);

说明

将一个px_surface转换成位图格式数据

参数

psurface渲染表面

BitmapBuffer 输出数组,如果为PX_NULL,表示仅计算需要的大小

size 实际输出的字节大小

返回值

如果成功返回PX_TRUE,否者PX_FALSE

 

 

 

 

TRaw纹理格式

typedef struct _PX_TRaw_Header

{

    px_dword Magic;//TRAW 0x57415254

    px_int Width;

    px_int Height; 

}PX_TRaw_Header;

TRaw文件头,TRaw文件是一个后缀为tex的文件

 

判断是否为TRaw合法文件格式

函数名

px_bool PX_TRawVerify(px_void *data,px_int size);

说明

判断是否为TRaw合法文件格式

参数

 data 数据指针 size 数据大小

返回值

返回TRUE表示合法数据否者非合法数据

 

取得TRaw文件的图像宽度

函数名

px_int PX_TRawGetWidth(px_void *data);

说明

取得TRaw文件的图像宽度

参数

 data 数据指针

返回值

返回图像宽度

 

取得TRaw文件的图像高度

函数名

px_int PX_TRawGetHeight(px_void *data);

说明

取得TRaw文件的图像高度

参数

 data 数据指针

返回值

返回图像宽度

 

绘制TRaw数据

函数名

px_void PX_TRawRender(px_surface *psurface,px_void *data,px_int x,px_int y);

说明

绘制TRaw数据

参数

 psurface 表面指针

data TRaw数据

xy偏移量

返回值

-

 

pSurface转换为TRAW格式数据

函数名

px_bool PX_TRawBuild(px_surface *psurface,px_byte *TRawBuffer,px_int *size);

说明

pSurface转换为TRAW格式数据

参数

 psurface 表面指针

TRawBuffer 输出数据(TRAWBuffer不为PX_NULL)

size 输出大小

返回值

-

 

Delaunary三角划分

函数名

px_bool PX_DelaunaryPointsBuild(px_memorypool *mp,px_point2D pt[],px_int count,px_vector *out_triangles);

说明

将点集以Delaunary Triangle进行空间划分,生成图形是一个凸包

参数

mp 运行计算内存池

pt 点集

count 点集点数量

out_Triangles 输出三角形

返回值

成功返回PX_TRUE,否者PX_FALSE

 

带限制区域的Delaunary三角建立

函数名

px_bool PX_PointsMeshBuild(px_memorypool *mp,px_point2D limit_line_pt[],px_int line_pt_count,px_point2D pt[],px_int pt_count,px_vector *out_triangles,PX_DELAUNAY_RETURN_TYPE type);

说明

将点集以Delaunary规则建立 Triangle,同时,剔除limit_line_pt绘制的闭环之外的三角形

参数

mp 运行计算内存池

limit_line_pt 用于绘制封闭图形的线段集

line_pt_count用于绘制封闭图形的线段集点个数

pt 点集

count 点集点数量

out_Triangles 输出三角形

type 返回数据类型(以三角坐标返回或以索引形式返回)

返回值

成功返回PX_TRUE,否者PX_FALSE

 

纹理特效

发光

函数名

px_bool PX_EffectShine(px_surface *s,px_int radius,px_color color,px_float intension);

说明

对一个纹理施加发光效果

参数

S 目标纹理

Radius 半径

Color 颜色

Intension 强度

返回值

-

 

描边

函数名

px_bool PX_EffectOutline(px_surface *s,px_int radius,px_color color);

说明

对一个纹理施加描边效果

参数

S 目标纹理

Radius 半径

Color 颜色

返回值

-

 

字体

PainterEngine 内嵌了默认ANSI字模库,同时运行用户加载自己的字模库进行字体绘制

绘制字体

函数名

px_int PX_FontModuleDrawText(px_surface *psurface,PX_FontModule *mod,int x,int y,PX_ALIGN align,const px_char *Text,px_color Color);

说明

绘制文本,注意,输入的字模必须是初始化指定编码的

参数

Psurface 目标表面

X 原点x坐标

Y 原点y坐标

Text 文本

Color字颜色

Mod 字模库,如果这个参数为PX_NULL,表示以默认字模库进行绘制(仅支持ANSI字符)

Align 字体对齐模式

PX_ ALIGN_LEFTTOP, 左上角对齐

         PX_ ALIGN_MIDTOP,居中顶部对齐

         PX_ ALIGN_RIGHTTOP,右上角对齐

         PX_ ALIGN_LEFTMID,靠左居中对齐

         PX_ ALIGN_CENTER,中心对齐

         PX_ ALIGN_RIGHTMID,靠右居中对齐

         PX_ ALIGN_LEFTBOTTOM,靠左底部对齐

返回值

绘制文本的像素宽度

 

字模初始化

函数名

px_bool PX_FontModuleInitialize(px_memorypool *mp,PX_FontModule *module)

说明

初始化一个字模库

参数

Mp 内存池

Module 字模库

返回值

如果成功返回PX_TRUE,否者返回PX_FALSE

 

加载字模

函数名

px_bool PX_FontModuleLoad(PX_FontModule *module,px_byte *buffer,px_int size);

说明

加载pxf字模到字模库,重复的字模以之前加载的为准

参数

module 字模库

buffer pxf数据

size pxf数据大小

返回值

如果成功返回PX_TRUE,否者返回PX_FALSE

 

释放字模库

函数名

px_void PX_FontModuleFree(PX_FontModule *module);

说明

释放字模库

参数

module 字模库

返回值

-

 

 

绘制单个字

函数名

px_int PX_FontModuleDrawCharacter(px_surface *psurface,PX_FontModule *mod,int x,int y,const px_dword code,px_color Color);

说明

绘制单个字

参数

Psurface 渲染表面

mod字模库

x ,y 左上角坐标

code 字编码

color 颜色

返回值

-

 

 

计算绘制文本的宽高

函数名

px_void PX_FontModuleTextGetRenderWidthHeight(PX_FontModule *module,const px_char *Text,px_int *advance,px_int *height);

说明

计算绘制文本的宽高

参数

module字模库

Text 文本

Advance 步进长度

Height 绘制高度

返回值

-

 

信号处理

离散傅里叶变换(DFT

复数结构体

typedef struct __complex

{

         float re;// really

         float im;// imaginary

}px_complex;

 

函数名

void PX_DFT(_IN complex x[],_OUT complex X[],int N);

说明

对复数信号进行DFT正变换

参数

x 复信号

X 变换结果

N 复信号长度

 

函数名

void PX_IDFT(_IN complex X[],_OUT complex x[],int N);

说明

对复数信号进行IDFT即逆变换

参数

X 复信号

x 逆变换结果

N 复信号长度

离散余弦变换(DCT

复数结构体

 

函数名

void PX_DCT(_IN px_double x[],_OUT px_double X[],int N);

说明

对信号进行DCT正变换

参数

x 复信号

X 变换结果

N 复信号长度

 

函数名

void PX_IDFT(_IN px_double X[],_OUT px_double x[],int N);

说明

对信号进行IDCT即逆变换

参数

X 复信号

x 逆变换结果

N 复信号长度

 

快速傅里叶变换(FFT

函数名

void PX_FFT(_IN complex x[],_OUT complex X[],int N);

说明

对复数信号进行FFT正变换

参数

x 复信号

X 变换结果

N 复信号长度(必须是2基数)

 

 

函数名

void PX_IFFT(_IN complex X[],_OUT complex x[],int N);

说明

对复数信号进行IFFT即逆变换

参数

X 复信号

x 逆变换结果

N 复信号长度(必须是2基数)

 

函数名

void PX_FFT_2(_IN complex x[],_OUT complex X[],int N_N);

说明

对复数信号进行二维FFT正变换

参数

x二维复信号矩阵

X 变换结果

N_N 复信号边长(复信号必须是2基边长的正方矩阵)

 

函数名

void PX_IFFT_2(_IN complex X[],_OUT complex x[],int N_N);

说明

对复数信号进行IFFT即逆变换

参数

X 二维复信号矩阵

x 逆变换结果

N_N 复信号边长(复信号必须是2基边长的正方矩阵)

 

函数名

void PX_FFT_2_Shift(_IN complex _in[],_OUT complex _out[],int N_N);

说明

对复数信号进行FFTShift

参数

_in 二维复信号矩阵

_out 逆变换结果

N_N 复信号边长(复信号必须是2基边长的正方矩阵)

 

强制共轭对称

函数名

void PX_FT_Symmetry(_IN px_complex X[],_OUT px_complex x[],px_int N);

说明

对一个傅里叶变换频域信号强制共轭对称(参考前半段数据)

参数

x输入信号

X 输出信号

N 长度

 

上采样(插值, UpSampled)

函数名

void PX_UpSampled(_IN px_complex x[],_OUT px_complex X[],px_int N,px_int L)

说明

对一个信号进行上采样

参数

x输入信号

X 输出信号

N 原长度

L 上采样倍数(1/M)

注意:输出数据缓存的长度应该至少是原长度的2*L

如果原信号或输出信号长度不是2基数,将使用较慢的DFT进行上采样

 

下采样(抽取, SubSampled, DownSampled)

函数名

void PX_DownSampled (_IN px_complex x[],_OUT px_complex X[],px_int N,px_int M)

说明

对一个信号进行下采样(SubSampled)

参数

x输入信号

X 输出信号

N 原长度

M 下采样倍数(1/M)

注意:输出数据缓存的长度应该至少是原长度的两倍

如果原信号或输出信号长度不是2基数,将使用较慢的DFT进行下采样

 

tukey

函数名

px_void PX_WindowFunction_tukey(px_double data[],px_int N);

说明

构造一个tukey窗函数

参数

data 数据缓存

N 长度

返回值

 

 

triangular

函数名

px_void PX_WindowFunction_ triangular (px_double data[],px_int N);

说明

构造一个triangular窗函数

参数

data 数据缓存

N 长度

返回值

 

 

blackMan

函数名

px_void PX_WindowFunction_blackMan(px_double data[],px_int N);

说明

构造一个blackman窗函数

参数

data 数据缓存

N 长度

返回值

 

 

hamming

函数名

px_void PX_WindowFunction_ hamming (px_double data[],px_int N);

说明

构造一个hamming窗函数

参数

data 数据缓存

N 长度

返回值

 

 

hanning

函数名

px_void PX_WindowFunction_ hanning (px_double data[],px_int N);

说明

构造一个hanning窗函数

参数

data 数据缓存

N 长度

返回值

 

 

kaiser

函数名

px_void PX_WindowFunction_kaiser(px_double beta,px_double data[],px_int N);

说明

构造一个kaiser窗函数

参数

beta 就是字面的意思

data 数据缓存

N 长度

返回值

 

 

应用窗函数

函数名

px_void PX_WindowFunction_Apply(px_double data[],px_double window[],px_int N);

说明

将一个窗函数应用于离散信号

参数

data 数据缓存

window 窗函数缓存

N 长度

返回值

 

 

计算系统幅频响应和相频响应

函数名

px_void PX_gain(px_double b[],px_double a[],px_int m,px_int n,px_double x[],px_double y[],px_int len,px_int sign);

说明

计算系统幅频响应和相频响应

参数

b存放滤波器分子多项式系数b[i],长度为m+1

a存放滤波器分母多项式系数a[i],长度为n+1

m 滤波器分子多项式阶数

n滤波器分母多项式阶数

x,y 输出数组,长度为len,sign1时存放滤波器幅频响应|H(w)|(x为实部,y为虚部),sign2时存放分贝表示的滤波器幅频相频

len 见上一项说明

sign 见上一项说明

返回值

 

 

计算级联型系统幅频响应和相频响应

函数名

px_double b[],px_double a[],px_int n,px_int ns,px_double x[],px_double y[],px_int len,px_int sign

说明

计算级联型系统幅频响应和相频响应

参数

b存放滤波器分子多项式系数b[i],矩阵,体积为ns*(n+1)

a存放滤波器分母多项式系数a[i],矩阵,体积为ns*(n+1)

n级联滤波器每节多项式阶数

ns 级联滤波器n阶节数L

x,y 输出数组,长度为len,sign1时存放滤波器幅频响应|H(w)|(x为实部,y为虚部),sign2时存放分贝表示的滤波器幅频相频

len 见上一项说明

sign 见上一项说明

返回值

 

 

倒谱

函数名

void PX_Cepstrum(_IN px_complex x[],_OUT px_complex X[],px_int N, PX_CEOSTRUM_TYPE type);

说明

计算一个信号的倒谱域

参数

x输入信号

X倒谱域

N信号长度

Type 倒谱类型, PX_CEOSTRUM_TYPE_COMPLEX表示复倒谱

PX_CEOSTRUM_TYPE_REAL 表示实倒谱

返回值

 

 

人声基音频率估算

函数名

px_int PX_PitchEstimation(_IN px_complex x[],px_int N,px_int sampleRate);

说明

估算人声基音频率

参数

x输入信号

N信号长度

sampleRate 信号采样率

返回值

估算的基音频率

 

估算瞬时频率

函数名

px_sine PX_PhaseVocoder(px_sine src,px_double p2,px_double delta_t)

说明

估算瞬时频率

参数

src 原正弦波信号

p2 第二相位

delta_t 取样时间

返回值

带有瞬时频率的正弦曲线

 

预加重

函数名

void PX_PreEmphasise(const px_double *data, int len, px_double *out, px_double preF)

说明

对一个实信号进行预加重

参数

data 输入信号

len 长度

out 输出预加重信号

preF 加重权值 范围为0.9-1.0 一般取0.97

返回值

 

 

卡尔曼滤波

初始化卡尔曼滤波器

函数名

px_void PX_KalmanFilterInitialize(PX_KalmanFilter *filter,px_double A,px_double B,px_double Q,px_double H,px_double R);

说明

初始化卡尔曼滤波器

参数

filter 卡尔曼滤波实例

A,B,Q,H,R参照卡尔曼滤波公式解释

返回值

 

 

更新卡尔曼滤波器

函数名

px_void PX_KalmanFilterUpdate(PX_KalmanFilter *filter,px_double Zk,px_double uk,px_double wk);

说明

初始化卡尔曼滤波器

参数

filter 卡尔曼滤波实例

Zk 下一次更新值

uk,wk 参照公式

返回值

 

 

预测值

函数名

px_double PX_KalmanFilterGetGuess(PX_KalmanFilter *filter)

说明

取得卡尔曼滤波器预测值

参数

filter 卡尔曼滤波实例

返回值

 

 

MFCC

初始化MFCC滤波器组

函数名

px_void PX_MFCCInitialize(PX_MFCC *mfcc,px_int framesize,px_int sampleRate,px_int low,px_int high);

说明

初始化一个MFCC滤波器组

参数

mfcc mfcc滤波器组

framesize 帧长度

samplerate 采样率

low hight 带通频率

返回值

 

 

MFCC滤波

函数名

px_bool PX_MFCCParse(PX_MFCC *mfcc,px_double *data,PX_MFCC_FEATURE *out);

说明

将数据通过MFCC滤波器组

参数

mfcc mfcc滤波器组

data 帧数据,必须和帧长度匹配

out 输出的mfcc系数

返回值

如果满足一帧数据的parse返回PX_TRUE,否者返回PX_FALSE

 

WAV文件格式

取得wav声道数目

函数名

px_uint PX_WAVEGetChannel(px_byte *buffer,px_int size);

说明

取得一个wav数据的声道数量

参数

buffer指向wav数据指针

size wav数据长度

返回值

声道数量

 

验证wav数据

函数名

px_bool PX_WAVEVerify(px_byte *buffer,px_int size);

说明

验证一段数据是否是可以加载的wav数据

参数

buffer指向wav数据指针

size wav数据长度

返回值

如果可以返回PX_TRUE,否者返回PX_FALSE

 

取得wav数据的PCM流大小

函数名

px_uint PX_WAVEGetPCMSize(px_byte *buffer,px_int size);

说明

取得wav数据的PCM流大小

参数

buffer指向wav数据指针

size wav数据长度

返回值

返回数据长度

 

 

混音器

初始化

函数名

px_bool PX_SoundPlayInitialize(px_memorypool *mp, PX_SoundPlay *pSoundPlay);

说明

初始化一个声音混音器

参数

mp 内存池

pSoundPlay sound结构体

返回值

如果成功返回PX_TRUE,否者PX_FALSE

 

设置用户自定义读函数

函数名

px_void PX_SoundPlaySetUserRead(PX_SoundPlay *pSoundPlay,px_void (*userread)(px_void *userptr,px_byte *pBuffer,px_int readSize),px_void *ptr);

说明

用户自定义读函数

参数

pSoundPlay sound结构体

userread 自定义读函数

返回值

 

 

暂停/继续数据播放

函数名

px_void PX_SoundPlayPause(PX_SoundPlay *pSoundPlay,px_bool pause);

说明

暂停/继续数据播放

参数

pSoundPlay sound结构体

pause PX_TRUE表示暂停,PX_FALSE表示继续

返回值

 

 

加载播放数据

函数名

px_bool PX_SoundAdd(PX_SoundPlay *pSound,PX_Sound sounddata);

说明

加载一个播放数据混音器中

参数

pSoundPlay sound结构体

sounddata 播放数据

返回值

返回PX_TRUE表示成功,否者返回PX_FALSE

 

读取混音PCM数据流

函数名

px_bool PX_SoundRead(PX_SoundPlay *pSound,px_byte *pBuffer,px_int readSize);

说明

读取混音后的PCM

参数

pSoundPlay sound结构体

buffer PCM数据流

readsize 读取长度

返回值

返回PX_TRUE表示成功,否者返回PX_FALSE

 

释放混音器

函数名

px_void PX_SoundFree(PX_SoundPlay *pSound);

说明

释放混音器

参数

pSoundPlay sound结构体

返回值

-

 

清除混音器所有音效

函数名

px_void PX_SoundClear(PX_SoundPlay *pSound);

说明

清除混音器所有音效

参数

pSoundPlay sound结构体

返回值

-

 

计算混音器音源个数

函数名

px_int  PX_SoundPlayGetDataCount(PX_SoundPlay *pSoundPlay);

说明

计算混音器音源个数

参数

pSoundPlay sound结构体

返回值

混音器内音源个数

 

创建音源实例

函数名

PX_Sound PX_SoundCreate(PX_SoundData *data,px_bool loop);

说明

创建音源实例

参数

PX_SoundData 音源数据

loop 这个音源是否循环播放

返回值

音源实例

 

加载静态音源

函数名

px_bool PX_SoundStaticDataCreate(PX_SoundStaticData *sounddata,px_memorypool *mp,px_byte *data,px_int datasize);

说明

加载一个静态音源,在使用结束后,这个音源需要手动释放

参数

sounddata 静态音源

mp 存储内存池

data 原始解析数据(例如WAV格式)

data 原始解析数据大小

返回值

成功返回PX_TRUE,否者返回PX_FALSE

释放静态音源

函数名

px_void PX_SoundStaticDataFree(PX_SoundStaticData *sounddata);

说明

释放静态音源

参数

sounddata 静态音源

mp 存储内存池

data 原始解析数据(例如WAV格式)

data 原始解析数据大小

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

拷贝静态音源数据

函数名

px_bool PX_SoundStaticDataCopy(px_memorypool *mp,PX_SoundData *resSounddata,PX_SoundData *targetSounddata);

说明

拷贝一个静态音源,在使用结束后,这个音源需要手动释放

参数

mp 存储内存池

resSounddata原始音源数据

targetSounddata目标音源数据

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

 

调音台

时域延拓

函数名

px_bool PX_TuningTimeScale(px_double timescale,px_double in[],px_int count,px_memory *out);

说明

基于相位声码器的变速不变调TSM(时域压拓)系统

参数

timescale 时域压拓系数

in 输入信号(建议归一化处理)

count 信号数量

out 输出信号,该内存变量需要被初始化

返回值

成功返回PX_TRUE,否者PX_FALSE

 

调音台初始化

 

函数名

px_void PX_TuningInitialize(px_memorypool *mp,PX_Tuning *tuning,px_double pitchShift,px_double window[],px_double filter[],px_double fix[],PX_TUNING_WINDOW_SIZE windowsize);

说明

基于重采样和相位声码器的变调不变速系统调音台初始化

参数

mp 计算内存池

tuning 调音台指针

pitchshift 调变系数,例如音调提升2倍则为2,降低一倍则为0.5

window 窗函数(建议为能量相等的处理窗,50% overlap)

filter 滤波器,长度等于windowsize指示长度

fix 增量值,长度等于windowsize指示长度(归一化后)

windowsize 窗函数类型

PX_TUNING_WINDOW_SIZE_8, 长度为8的窗,主要用于测试

PX_TUNING_WINDOW_SIZE_128, 长度为128的窗

PX_TUNING_WINDOW_SIZE_256, 长度为256的窗

PX_TUNING_WINDOW_SIZE_512, 长度为512的窗,建议值

PX_TUNING_WINDOW_SIZE_1024, 长度为1024的窗,建议值

PX_TUNING_WINDOW_SIZE_2048, 长度为2048的窗,建议值

PX_TUNING_WINDOW_SIZE_4096, 长度为4096的窗

PX_TUNING_WINDOW_SIZE_8192, 长度为8192的窗

返回值

 

 

 

 

调音台滤波器系统

函数名

px_int PX_TuningFilter(PX_Tuning *tuning,_IN px_double frame_unit[],px_int Size,_OUT px_double out_unit[]);

说明

基于重采样和相位声码器的变调不变速系统调音台滤波器系统

*该滤波器为FIR类型滤波器

*输入信号必须是连续的

参数

tuning 调音台指针

frame_unit[] 输入数据(建议归一化处理)

Size 输入数据长度

out_unit 输出数据

返回值

输出长度

 

调音台TSM

函数名

px_void PX_TuningTimeScale(px_double timescale,px_double in[],px_int count,px_memory *out);

说明

调音台TSM算法

参数

timescale 压拓系数

in 输入信号(归一化建议)

count 输入信号长度

out 输出内存

返回值

 

 

设置调音台的PitchShift

函数名

px_void PX_TuningSetPitchShift(PX_Tuning *tuning,px_double pitchShift);

说明

设置调音台的PitchShift

参数

tuning 调音台指针

PitchShift 移调系数

返回值

 

 

设置调音台的滤波器

函数名

px_void PX_TuningSetFilter(PX_Tuning *tuning,px_double filter[]);

说明

设置调音台的滤波器

参数

tuning 调音台指针

filter滤波器系数

返回值

 

 

设置调音台的频域补偿系数

函数名

px_void PX_TuningSetFix(PX_Tuning *tuning,px_double fix[]);

说明

设置调音台的频域补偿系数

参数

tuning 调音台指针

fix频域补偿系数

返回值

 

 

设置调音台的ZCR阈值

函数名

px_void PX_TuningSetZCR(px_double low,px_double high);

说明

设置调音台的ZCR阈值,当输入信号的ZCR不在阈值范围内时,将不对信号进行变调处理

参数

tuning 调音台指针

low 最低ZCR

high 最高ZCR

返回值

 

 

 

反向传播神经网络

PainterEngine 提供一个基础的反向传播神经网络框架,集成了linear tanh sigmod reLU等激活函数,regularzation方式及权值初始化方式.

 

初始化神经网络框架

函数名

px_bool PX_ANNInitialize(px_memorypool *mp,PX_ANN *ann,px_double learningRate,PX_ANN_REGULARZATION regularzation,px_double regularization_rate);

说明

初始化一个反向传播神经网络框架

参数

mp 运行内存池

ann 神经网络结构

learningRate 学习率

regularization 正则化方式

参考:

typedef enum

{

         PX_ANN_REGULARZATION_NONE,

         PX_ANN_REGULARZATION_L1,

         PX_ANN_REGULARZATION_L2

}PX_ANN_REGULARZATION;

 

regularization_rate 正则化速率

返回值

返回PX_TRUE表示成功,否者返回PX_FALSE

 

 

 

添加网络层

函数名

px_bool PX_ANNAddLayer(PX_ANN *pAnn,px_int Neurals,px_double bias,PX_ANN_ACTIVATION_FUNCTION activation,PX_ANN_LAYER_WEIGHT_INITMODE mode,px_double weight_c);

说明

添加一个网络层(其中第一层为输入层,最后一层为输出层)

参数

ann 神经网络结构

Neurals 神经元数量

bias 偏置

activation 激活函数类型,参照

typedef enum

{

         PX_ANN_ACTIVATION_FUNCTION_SIGMOID, //sigmoid

         PX_ANN_ACTIVATION_FUNCTION_TANH,//tanh

         PX_ANN_ACTIVATION_FUNCTION_LINEAR,//linear

         PX_ANN_ACTIVATION_FUNCTION_RELU,//ReLU

}PX_ANN_ACTIVATION_FUNCTION;

mode 权值初始方式,参照

typedef enum

{

         PX_ANN_LAYER_WEIGHT_INITMODE_CONST, //常量

         PX_ANN_LAYER_WEIGHT_INITMODE_RAND,//随机数

         PX_ANN_LAYER_WEIGHT_INITMODE_GAUSSRAND,//正态分布随机数

}PX_ANN_LAYER_WEIGHT_INITMODE;

weight_c 当权值初始方式为常量时的常量值

返回值

返回PX_TRUE表示成功,否者返回PX_FALSE

 

训练网络

函数名

px_double PX_ANNTrain(PX_ANN *pAnn,px_double *input,px_double *expect);

说明

监督学习训练网络

参数

ann 神经网络结构

input 输入数组(与输入层神经元对应)

expect 期望输出数组(与输出层神经元对应)

返回值

train loss

 

 

 

 

 

前向传播

函数名

px_void PX_ANNForward(PX_ANN *pAnn,px_double *input);

说明

神经网络前向传播

参数

ann 神经网络结构

input 输入数组(与输入层神经元对应)

返回值

-           

 

取得输出结果

函数名

px_void PX_ANNGetOutput(PX_ANN *pAnn,px_double *result);

说明

神经网络前向传播的输出结果

参数

ann 神经网络结构

result 输出数组(与输入层神经元对应)

返回值

-           

 

重置神经网络

函数名

px_void PX_ANNReset(PX_ANN *pANN);

说明

重置神经网络的所有权重

参数

ann 神经网络结构

 

返回值

-           

 

释放神经网络框架

函数名

px_void PX_ANNFree(PX_ANN *pAnn);

说明

释放框架

参数

ann 神经网络结构

返回值

-           

 

导出神经网络框架

函数名

px_bool PX_ANNExport(PX_ANN *pAnn,px_void *buffer,px_int *size);

说明

将神经网络当前的训练框架导出到内存结构

参数

ann 神经网络结构.

buffer 导出buffer(当该值为PX_NULL时表示只计算大小)

size 导出数据大小

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

导入神经网络框架

函数名

px_bool PX_ANNImport(px_memorypool *mp,PX_ANN *pAnn,px_void *buffer,px_int size);

说明

从内存结构中导入神经网络框架

参数

mp 神经网络使用内存池

ann 未初始化的神经网络结构.

buffer 导入buffer

size 导入数据大小

返回值

成功返回PX_TRUE,否者返回PX_FALSE

 

物理

四叉树AABB碰撞检测

PainterEngine Core提供四叉树AABB碰撞检测算法,该算法用于加速矩形box区域的碰撞检测,使用自定义的树深调节对

初始化

函数名

px_bool PX_QuadtreeCreate(px_memorypool *mp,PX_Quadtree *pQuadtree,px_float mapStartX,px_float mapStartY,px_float mapWidth,px_float mapHeight,px_int ObjectsCount,px_int deep);

说明

创建四叉树根结构

参数

mp 一次性内存池,该内存池不能够存在其他的节点,仅用于四叉树计算使用

pQuadtree, 四叉树结构体

mapStartX 需要分隔的域左上角起始坐标X

mapStartY 需要分隔的域左上角起始坐标Y

mapWidth,mapHeight 域的宽度和高度

ObjectsCount 需要计算的节点数

deep 深度,建议在2-4范围,启始深度为0,每个深度分4个区域

返回值

如果成功返回PX_TRUE,否者为PX_FALSE

添加节点

 

函数名

px_void PX_QuadtreeAddNode(PX_Quadtree *pQuadtree,px_float CenterX,px_float CenterY,px_float width,px_float height,PX_Quadtree_UserData userData);

说明

在四叉树添加一个节点,该节点会不参与碰撞计算

参数

pQuadtree 四叉树结构体

CenterX, CenterY,width,height,AABB描述

userData 碰撞测试的用户数据,这个数据将被附加到碰撞结果中,注意,