下采样(抽取, SubSampled, DownSampled)
函数名 |
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 设置内存大小 |
函数名 |
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 |
参数 |
字符串指针 |
返回值 |
返回转换值 |
函数名 |
px_dword PX_inet_addr(px_char i[]);
|
说明 |
字符串转IPv4地址 |
参数 |
I字符串ip地址 |
返回值 |
转换后的双字 |
函数名 |
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:dword或word类型值 |
返回值 |
转换后的字节序 |
函数名 |
px_dword PX_ntohl(px_dword n); px_word PX_ntohs(px_word n); |
说明 |
网络字节序转主机字节序 |
参数 |
h:dword或word类型值 |
返回值 |
转换后的字节序 |
函数名 |
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) |
说明 |
宏函数求绝对值 |
参数 |
值 |
返回值 |
返回绝对值 |
函数名 |
px_double PX_tanh(px_double x) |
说明 |
tanh函数 |
参数 |
x |
返回值 |
tanh计算结果 |
函数名 |
px_double PX_ sigmoid(px_double x) |
说明 |
sigmoid函数 |
参数 |
x |
返回值 |
sigmoid计算结果 |
函数名 |
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次幂 |
返回值 |
i的n幂 |
函数名 |
px_double PX_pow_ff(double num,double m); |
说明 |
幂 |
参数 |
num底数 m次幂 |
返回值 |
num的m幂 |
函数名 |
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); |
说明 |
矩阵相乘 |
参数 |
Mat1,Mat2 需要相乘的两个矩阵 |
返回值 |
返回矩阵相乘结果矩阵 |
函数名 |
px_matrix PX_MatrixAdd(px_matrix Mat1,px_matrix Mat2); |
说明 |
矩阵相加 |
参数 |
Mat1,Mat2 需要相加的两个矩阵 |
返回值 |
返回矩阵相加结果矩阵 |
函数名 |
px_matrix PX_MatrixSub(px_matrix Mat1,px_matrix Mat2); |
说明 |
矩阵相减 |
参数 |
Mat1,Mat2 需要相减的两个矩阵 |
返回值 |
返回矩阵相减结果矩阵 |
函数名 |
px_bool PX_MatrixEqual(px_matrix Mat1,px_matrix Mat2); |
说明 |
判断两个矩阵是否相等 |
参数 |
Mat1,Mat2 需要判断的两个矩阵 |
返回值 |
如果相等返回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 Radius2圆1,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为矩形左上角坐标,width与height为宽高
函数名 |
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 |
函数名 |
px_uint32 PX_crc32( px_byte *buffer, px_uint size); |
说明 |
对一段缓存区进行CRC32校验 |
参数 |
Buffer 缓存区 Size 缓存区大小 |
返回值 |
CRC32校验值 |
函数名 |
px_uint16 PX_crc16( px_byte *buffer, px_uint size); |
说明 |
对一段缓存区进行CRC16校验 |
参数 |
Buffer 缓存区 Size 缓存区大小 |
返回值 |
CRC32校验值 |
函数名 |
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)….. |
通讯链接器(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 类型 |
返回值 |
- |
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); |
说明 |
查找哈希表对应key的int元素 |
参数 |
m 哈希表 key 映射字符串 v返回赋值指针 |
返回值 |
如果成功返回PX_TRUE,否则返回PX_FALSE |
函数名 |
px_float PX_MapGetFloat(px_map * m, px_char* stringkey); |
说明 |
查找哈希表对应key的float元素 |
参数 |
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 |
函数名 |
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); |
说明 |
转换字符串为整数,支持十六进制转换(以0x或0X开头) |
参数 |
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 |
函数名 |
px_void PX_StringReplaceRange(px_string *str,px_int startindex,px_int endindex,px_char *replaceto) |
说明 |
字符串替换,将目标范围的字符串替换为replaceto里的字符串 |
参数 |
str 字符串指针 startindex 开始索引 endindex 结束索引 replaceto 替换成的字符串 |
返回值 |
- |
函数名 |
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 渲染表面 x,y 圆心 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 渲染表面 x,y 圆心 radius 半径 lineWidth 线宽 color 颜色 |
函数名 |
px_void PX_GeoDrawPenCircle(px_surface *psurface, px_float x,px_float y,px_float Radius,px_color color) |
说明 |
绘制一个反走样圆,这个算法用于高质量圆笔的绘制,可用这个算法组合为线段路径 |
参数 |
psurface 渲染表面 x,y 圆心 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 渲染表面 x,y 环心 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 渲染表面 x,y 环心 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); |
说明 |
颜色相加 |
参数 |
Color1,color2 需要相加的两个颜色 |
返回值 |
返回相加的颜色结果 |
函数名 |
px_color PX_ColorSub(px_color color1,px_color color2); |
说明 |
颜色相减 |
参数 |
Color1,color2 需要相减的两个颜色 |
返回值 |
返回相减的颜色结果 |
函数名 |
px_bool PX_ColorEqual(px_color color1,px_color color2); |
说明 |
判断两个颜色是否相等 |
参数 |
Color1,color2 需要判断的两个颜色 |
返回值 |
如果相等返回PX_TRUE,否者返回PX_FALSE |
函数名 |
px_bool PX_SurfaceCreate(px_memorypool *mp,px_uint height,px_uint width,px_surface *surface); |
说明 |
创建一个渲染表面,它是用于描述渲染内存的结构体,仅支持32位BGRA色彩格式。 |
参数 |
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 指向表面 x,y 坐标 color 颜色 |
返回值 |
|
函数名 |
PX_SUFACECOLOR(Surface,X,Y) |
说明 |
查找像素颜色 |
参数 |
Surface指向表面 X,Y 坐标 |
返回值 |
对应px_color |
函数名 |
px_void PX_SetPixel(px_surface *ps,px_int x,px_int y,px_color color); |
说明 |
设置一个像素 |
参数 |
ps 指向表面 x,y 坐标 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_SurfaceDrawPixel和PX_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_texture是PainterEngine的纹理对象结构,建议所有的图像数据都最终加载为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表面(如bmp或TRaw) |
参数 |
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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) 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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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需要渲染的纹理 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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 输出可见包围信息 |
返回值 |
- |
函数名 |
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 输出矩阵,大小应该至少是纹理长宽 |
返回值 |
- |
函数名 |
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 输出矩阵,大小应该至少是纹理长宽 |
返回值 |
- |
函数名 |
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 输出矩阵,大小应该至少是纹理长宽 |
返回值 |
- |
函数名 |
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_Shape是painterEngine内建的轮廓格式,轮廓可以被认为是仅带有灰度及位置信息的纹理,轮廓的每个位置信息都由一个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需要渲染的轮廓 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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 需要渲染的轮廓 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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 需要渲染的轮廓 x,y偏移量(该坐标以纹理左上角为参照) refPoint 参考中心点,用于表示纹理绘制的相对位置 blend blend类型结构体,用于调整绘制纹理的alpha,hdr值 当它为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偏移量 |
返回值 |
|
函数名 |
px_bool PX_BitmapBuild(px_surface *psurface,px_char *BitmapBuffer,px_int *size); |
说明 |
将一个px_surface转换成位图格式数据 |
参数 |
psurface渲染表面 BitmapBuffer 输出数组,如果为PX_NULL,表示仅计算需要的大小 size 实际输出的字节大小 |
返回值 |
如果成功返回PX_TRUE,否者PX_FALSE |
typedef struct _PX_TRaw_Header
{
px_dword Magic;//TRAW 0x57415254
px_int Width;
px_int Height;
}PX_TRaw_Header;
TRaw文件头,TRaw文件是一个后缀为tex的文件
函数名 |
px_bool PX_TRawVerify(px_void *data,px_int size); |
说明 |
判断是否为TRaw合法文件格式 |
参数 |
data 数据指针 size 数据大小 |
返回值 |
返回TRUE表示合法数据否者非合法数据 |
函数名 |
px_int PX_TRawGetWidth(px_void *data); |
说明 |
取得TRaw文件的图像宽度 |
参数 |
data 数据指针 |
返回值 |
返回图像宽度 |
函数名 |
px_int PX_TRawGetHeight(px_void *data); |
说明 |
取得TRaw文件的图像高度 |
参数 |
data 数据指针 |
返回值 |
返回图像宽度 |
函数名 |
px_void PX_TRawRender(px_surface *psurface,px_void *data,px_int x,px_int y); |
说明 |
绘制TRaw数据 |
参数 |
psurface 表面指针 data TRaw数据 x,y偏移量 |
返回值 |
- |
函数名 |
px_bool PX_TRawBuild(px_surface *psurface,px_byte *TRawBuffer,px_int *size); |
说明 |
将pSurface转换为TRAW格式数据 |
参数 |
psurface 表面指针 TRawBuffer 输出数据(当TRAWBuffer不为PX_NULL时) size 输出大小 |
返回值 |
- |
函数名 |
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 |
函数名 |
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 绘制高度 |
返回值 |
- |
复数结构体
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 复信号长度 |
复数结构体
函数名 |
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 复信号长度 |
函数名 |
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 长度 |
函数名 |
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进行上采样 |
函数名 |
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进行下采样 |
函数名 |
px_void PX_WindowFunction_tukey(px_double data[],px_int N); |
说明 |
构造一个tukey窗函数 |
参数 |
data 数据缓存 N 长度 |
返回值 |
|
函数名 |
px_void PX_WindowFunction_ triangular (px_double data[],px_int N); |
说明 |
构造一个triangular窗函数 |
参数 |
data 数据缓存 N 长度 |
返回值 |
|
函数名 |
px_void PX_WindowFunction_blackMan(px_double data[],px_int N); |
说明 |
构造一个blackman窗函数 |
参数 |
data 数据缓存 N 长度 |
返回值 |
|
函数名 |
px_void PX_WindowFunction_ hamming (px_double data[],px_int N); |
说明 |
构造一个hamming窗函数 |
参数 |
data 数据缓存 N 长度 |
返回值 |
|
函数名 |
px_void PX_WindowFunction_ hanning (px_double data[],px_int N); |
说明 |
构造一个hanning窗函数 |
参数 |
data 数据缓存 N 长度 |
返回值 |
|
函数名 |
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,当sign为1时存放滤波器幅频响应|H(w)|(x为实部,y为虚部),当sign为2时存放分贝表示的滤波器幅频相频 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,当sign为1时存放滤波器幅频响应|H(w)|(x为实部,y为虚部),当sign为2时存放分贝表示的滤波器幅频相频 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 卡尔曼滤波实例 |
返回值 |
|
函数名 |
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 带通频率 |
返回值 |
|
函数名 |
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 |
函数名 |
px_uint PX_WAVEGetChannel(px_byte *buffer,px_int size); |
说明 |
取得一个wav数据的声道数量 |
参数 |
buffer指向wav数据指针 size wav数据长度 |
返回值 |
声道数量 |
函数名 |
px_bool PX_WAVEVerify(px_byte *buffer,px_int size); |
说明 |
验证一段数据是否是可以加载的wav数据 |
参数 |
buffer指向wav数据指针 size wav数据长度 |
返回值 |
如果可以返回PX_TRUE,否者返回PX_FALSE |
函数名 |
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 |
函数名 |
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 输出数据 |
返回值 |
输出长度 |
函数名 |
px_void PX_TuningTimeScale(px_double timescale,px_double in[],px_int count,px_memory *out); |
说明 |
调音台TSM算法 |
参数 |
timescale 压拓系数 in 输入信号(归一化建议) count 输入信号长度 out 输出内存 |
返回值 |
|
函数名 |
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频域补偿系数 |
返回值 |
|
函数名 |
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 |
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 碰撞测试的用户数据,这个数据将被附加到碰撞结果中,注意, |