707 lines
21 KiB
C
707 lines
21 KiB
C
#ifndef IVS_DRAWER_H
|
||
#define IVS_DRAWER_H
|
||
|
||
#include <time.h>
|
||
|
||
#ifdef _WIN32
|
||
#define IVSDRAWER_API
|
||
#define CALLMETHOD __stdcall
|
||
#else
|
||
#define IVSDRAWER_API
|
||
#define CALLMETHOD
|
||
#endif
|
||
|
||
#ifdef _WIN32
|
||
#include <windows.h>
|
||
#define IVS_BOOL BOOL
|
||
#define IVS_WND_REF HWND
|
||
#define IVS_DC_REF HDC
|
||
#define IVS_COLOR COLORREF
|
||
#define IVS_RECT RECT
|
||
typedef POINT IVSPOINT;
|
||
#else
|
||
#define IVS_BOOL int
|
||
#define IVS_WND_REF void*
|
||
#define IVS_DC_REF void*
|
||
|
||
typedef struct __IVS_MAC_WND
|
||
{
|
||
int nWidth;
|
||
int nHeight;
|
||
}IVS_WND;
|
||
|
||
typedef struct __IVS_COLOR
|
||
{
|
||
float cgred;
|
||
float cggreen;
|
||
float cgblue;
|
||
}IVS_COLOR;
|
||
|
||
typedef struct __IVSPOINT
|
||
{
|
||
float x;
|
||
float y;
|
||
}IVSPOINT;
|
||
|
||
typedef struct __IVS_RECT
|
||
{
|
||
float left;
|
||
float bottom;
|
||
float right;
|
||
float top;
|
||
}IVS_RECT;
|
||
#endif
|
||
|
||
#ifdef _WIN32
|
||
#define INT64 __int64
|
||
#else
|
||
#define DWORD unsigned int
|
||
#define INT64 long long
|
||
#endif
|
||
|
||
typedef enum
|
||
{
|
||
SHOW_NONE = 0,
|
||
SHOW_RULE = (1 << 0),
|
||
SHOW_ALARM = (1 << 1),
|
||
SHOW_TRACK = (1 << 2),
|
||
SHOW_ALL = (SHOW_RULE | SHOW_ALARM | SHOW_TRACK),
|
||
}SHOW_TYPE;
|
||
|
||
typedef enum
|
||
{
|
||
DRAW_JSON = 0,
|
||
DRAW_TRACK,
|
||
DRAW_ALARM,
|
||
DRAW_RULE,
|
||
DRAW_ALARMRULE,
|
||
DRAW_ALARMEX,
|
||
DRAW_TRACKEX,
|
||
DRAW_MOVE_CHECK,
|
||
DRAW_TEST = 9,
|
||
DRAW_WEB_RULE = 11,
|
||
DRAW_WEB_ALARM,
|
||
DRAW_FLOW_INFO,
|
||
DRAW_TRACKEX2,
|
||
DRAW_WUXI235_TRACKEX2,
|
||
DRAW_TRACKEXA1,
|
||
DRAW_TRACKEX2_TYPE_HUMAN,
|
||
DRAW_TRACKEX2_TYPE_VEHICLE,
|
||
DRAW_TRACKEX2_TYPE_NONMOTOR,
|
||
DRAW_TRACKEX2_TYPE_SHOPPRESENCE,
|
||
DRAW_TRACKEX2_TYPE_FLOWBUSINESS,
|
||
DRAW_INTELFLOW,
|
||
DRAW_SMARTMOTION,
|
||
DRAW_END,
|
||
}DRAW_TYPE;
|
||
|
||
typedef enum
|
||
{
|
||
IVS_LINGER = 0,
|
||
IVS_TRACKTAIL, // 轨迹尾巴
|
||
IVS_GET_OBJECT,
|
||
IVS_DISABLE_VIDEO_TIME, // 禁止视频浓缩的时间,默认开启
|
||
IVS_DISABLE_VIDEO_OBJECT,
|
||
IVS_TRACK_OBJECT = 6,
|
||
IVS_SET_PEN_HEIGHT,
|
||
IVS_TRACK_OBJECT_EX = 8,
|
||
}IVS_CMD_TYPE;
|
||
|
||
typedef enum
|
||
{
|
||
DRAW_PEN_DEFAULT = -1,
|
||
DRAW_PEN_SOLID = 0,
|
||
DRAW_PEN_DASH,
|
||
DRAW_PEN_DOT,
|
||
DRAW_PEN_DASHDOT,
|
||
DRAW_PEN_DASHDOTDOT,
|
||
DRAW_PEN_NULL,
|
||
DRAW_PEN_INSIDEFRAME,
|
||
DRAW_PEN_USERSTYLE,
|
||
DRAW_PEN_ALTERNATE,
|
||
}DRAW_PEN_STYLE;
|
||
|
||
#define IVS_MAX_ACTION_NUM 4
|
||
#define IVS_MAX_EVENT_NUM 64
|
||
#define IVS_MAX_POLYLINE_NUM 32
|
||
#define IVS_MAX_OBJECT_NUM 64
|
||
#define IVS_NAME_NUM 128
|
||
|
||
// 二维空间点
|
||
typedef struct
|
||
{
|
||
short nx;
|
||
short ny;
|
||
} DH_IVS_SPOINT, *LPDH_IVS_SPOINT;
|
||
|
||
// 物体对应图片文件信息
|
||
typedef struct
|
||
{
|
||
DWORD dwOffSet; // 文件在二进制数据块中的偏移位置, 单位:字节
|
||
DWORD dwFileLenth; // 文件大小, 单位:字节
|
||
WORD wWidth; // 图片宽度, 单位:像素
|
||
WORD wHeight; // 图片高度, 单位:像素
|
||
char* pszFilePath; // 鉴于历史原因,该成员只在事件上报时有效
|
||
// 文件路径
|
||
// 用户使用该字段时需要自行申请空间进行拷贝保存
|
||
BYTE bIsDetected; // 图片是否算法检测出来的检测过的提交识别服务器时,
|
||
// 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
|
||
BYTE bReserved[3]; // 预留字节数
|
||
int nFilePathLen; // 文件路径长度 既pszFilePath 用户申请的大小
|
||
DH_IVS_SPOINT stuPoint; // 小图左上角在大图的位置,使用绝对坐标系
|
||
}DH_IVS_PIC_INFO;
|
||
|
||
typedef struct tagDH_IVS_TIME_EX
|
||
{
|
||
DWORD dwYear; // 年
|
||
DWORD dwMonth; // 月
|
||
DWORD dwDay; // 日
|
||
DWORD dwHour; // 时
|
||
DWORD dwMinute; // 分
|
||
DWORD dwSecond; // 秒
|
||
DWORD dwMillisecond; // 毫秒
|
||
DWORD dwUTC; // utc时间(获取时0表示无效,非0有效 下发无效)
|
||
DWORD dwReserved[1]; // 预留字段
|
||
} DH_IVS_TIME_EX,*LPDH_IVS_TIME_EX;
|
||
// 区域;各边距按整长8192的比例
|
||
typedef struct
|
||
{
|
||
long left;
|
||
long top;
|
||
long right;
|
||
long bottom;
|
||
} DH_IVS_LRECT, *LPDH_IVS_LRECT;
|
||
|
||
#pragma pack(push)
|
||
#pragma pack(4)
|
||
// 视频分析物体信息结构体
|
||
typedef struct
|
||
{
|
||
int nObjectID; // 物体ID,每个ID表示一个唯一的物体
|
||
char szObjectType[128]; // 物体类型
|
||
int nConfidence; // 置信度(0~255),值越大表示置信度越高
|
||
int nAction; // 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
|
||
DH_IVS_LRECT BoundingBox; // 包围盒
|
||
DH_IVS_SPOINT Center; // 物体型心
|
||
int nPolygonNum; // 多边形顶点个数
|
||
DH_IVS_SPOINT Contour[16]; // 较精确的轮廓多边形
|
||
DWORD rgbaMainColor; // 表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000.
|
||
char szText[128]; // 物体上相关的带0结束符文本,比如车牌,集装箱号等等
|
||
char szObjectSubType[62]; // 物体子类别,根据不同的物体类型,可以取以下子类型:
|
||
WORD wColorLogoIndex; // 车标索引
|
||
WORD wSubBrand; // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
|
||
BYTE byReserved1;
|
||
bool bPicEnble; // 是否有物体对应图片文件信息
|
||
DH_IVS_PIC_INFO stPicInfo; // 物体对应图片信息
|
||
bool bShotFrame; // 是否是抓拍张的识别结果
|
||
bool bColor; // 物体颜色(rgbaMainColor)是否可用
|
||
BYTE byReserved2;
|
||
BYTE byTimeType; // 时间表示类型,详见EM_TIME_TYPE说明
|
||
DH_IVS_TIME_EX stuCurrentTime; // 针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
|
||
DH_IVS_TIME_EX stuStartTime; // 开始时间戳(物体开始出现时)
|
||
DH_IVS_TIME_EX stuEndTime; // 结束时间戳(物体最后出现时)
|
||
DH_IVS_LRECT stuOriginalBoundingBox; // 包围盒(绝对坐标)
|
||
DH_IVS_LRECT stuSignBoundingBox; // 车标坐标包围盒
|
||
DWORD dwCurrentSequence; // 当前帧序号(抓下这个物体时的帧)
|
||
DWORD dwBeginSequence; // 开始帧序号(物体开始出现时的帧序号)
|
||
DWORD dwEndSequence; // 结束帧序号(物体消逝时的帧序号)
|
||
INT64 nBeginFileOffset; // 开始时文件偏移, 单位: 字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
|
||
INT64 nEndFileOffset; // 结束时文件偏移, 单位: 字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
|
||
BYTE byColorSimilar[8]; // 物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
|
||
BYTE byUpperBodyColorSimilar[8]; // 上半身物体颜色相似度(物体类型为人时有效)
|
||
BYTE byLowerBodyColorSimilar[8]; // 下半身物体颜色相似度(物体类型为人时有效)
|
||
int nRelativeID; // 相关物体ID
|
||
char szSubText[20]; // "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
|
||
WORD wBrandYear; // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
|
||
} DH_IVS_OBJECT_INFO;
|
||
#pragma pack(pop)
|
||
|
||
typedef struct IVS_CONFIG_EVENT
|
||
{
|
||
char szEventName[IVS_NAME_NUM]; // 事件名称,详见"事件类型列表"
|
||
char szRuleName[IVS_NAME_NUM]; // 规则名称,不同规则不能重名
|
||
DH_IVS_OBJECT_INFO stuObject;
|
||
char Context[28];
|
||
int alarmAction; // 与NetSDK定义一致
|
||
int alarmType;
|
||
}IVS_CONFIG_EVENT_INFO;
|
||
|
||
typedef struct IVS_CONFIG_EVENTEX
|
||
{
|
||
char szEventName[IVS_NAME_NUM]; // 事件名称,详见"事件类型列表"
|
||
char szRuleName[IVS_NAME_NUM]; // 规则名称,不同规则不能重名
|
||
char Context[28];
|
||
int alarmAction; // 与NetSDK定义一致
|
||
int alarmType;
|
||
int nObjectNum;
|
||
DH_IVS_OBJECT_INFO stuObject[IVS_MAX_OBJECT_NUM]; // 检测到的物体
|
||
int nContext; // 该字段未用,作为大类字段
|
||
void* pContext;
|
||
}IVS_CONFIG_EVENT_INFOEX;
|
||
|
||
typedef struct
|
||
{
|
||
int nEventsNum; // 视频分析规则数
|
||
IVS_CONFIG_EVENT_INFO stuEventInfo[IVS_MAX_EVENT_NUM]; // 事件信息
|
||
}IVS_CFG_ANALYSEVENTS_INFO;
|
||
|
||
typedef struct
|
||
{
|
||
int nEventsNum; // 视频分析规则数
|
||
IVS_CONFIG_EVENT_INFOEX stuEventInfo[IVS_MAX_EVENT_NUM]; // 事件信息
|
||
}IVS_CFG_ANALYSEVENTS_INFOEX;
|
||
|
||
typedef struct
|
||
{
|
||
int nX; // 8192坐标系
|
||
int nY;
|
||
}IVS_CFG_POLYLINE;
|
||
|
||
typedef struct __IVS_WEB_RULE
|
||
{
|
||
int size;
|
||
int nRuleType;
|
||
int nRuleEnable;
|
||
int ndirect1;
|
||
int ndirect2;
|
||
int nPoint1;
|
||
int nPoint2;
|
||
unsigned char bActionType[4];
|
||
DH_IVS_OBJECT_INFO objectMsg;
|
||
char szRuleName[IVS_NAME_NUM];
|
||
IVS_CFG_POLYLINE stuDetectLine1[IVS_MAX_POLYLINE_NUM]; //Line
|
||
IVS_CFG_POLYLINE stuDetectLine2[IVS_MAX_POLYLINE_NUM]; //Region
|
||
int nRuleID;
|
||
IVS_CFG_POLYLINE stuDirectionLine[2]; //Direction
|
||
char szRevered[236];
|
||
}IVS_WEB_RULE;
|
||
|
||
typedef struct __IVS_WEB_RULE_ARRAY
|
||
{
|
||
int size;
|
||
int nCount;
|
||
IVS_WEB_RULE* pRule;
|
||
}IVS_WEB_RULE_ARRAY;
|
||
|
||
typedef struct
|
||
{
|
||
int objectid;
|
||
struct tm startTime;
|
||
struct tm endTime;
|
||
INT64 nBeginFileOffset; // 开始时文件偏移字节数(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
|
||
INT64 nEndFileOffset; // 结束时文件偏移字节数(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
|
||
int classid;
|
||
}IVSOBJECT;
|
||
|
||
typedef struct
|
||
{
|
||
IVS_BOOL trackex2objtype; // 是否显示物体类型,0:否,1:显示,默认不显示
|
||
IVS_BOOL trackex2attribute88; // 是否显示0x88属性包,0:否,1:显示,默认显示
|
||
IVS_BOOL trackex2objid; // 是否显示物体ID,0:否,1:显示,默认不显示
|
||
IVS_BOOL trackex2humanage; // 是否显示具体年龄,0:显示年龄段,1:显示年龄,默认显示年龄段
|
||
}TrackEx2Configure;
|
||
|
||
typedef union
|
||
{
|
||
IVSOBJECT object;
|
||
IVSPOINT xPt;
|
||
char szReverd[128];
|
||
}ObjectContex;
|
||
|
||
typedef struct _DH_IVS_POINT
|
||
{
|
||
/*************************************************
|
||
** 轨迹点是物体外接矩形的中心
|
||
** 根据X,Y及XSize,YSize计算出的物体外接矩形坐标为
|
||
** (X-XSize, Y-YSize, X+XSize, Y+YSize)
|
||
**************************************************/
|
||
short x;
|
||
short y;
|
||
short xSize;
|
||
short ySize;
|
||
}DH_IVS_POINT;
|
||
|
||
typedef struct _RuleColor
|
||
{
|
||
int ruletype;
|
||
IVS_COLOR crColor;
|
||
}RuleColor;
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/**
|
||
* 启动IVSDraw(只调用一次)依赖IvsDrawer解析json数据时调用
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_Startup();
|
||
|
||
/**
|
||
* 退出IVSDraw
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_Cleanup();
|
||
|
||
/**
|
||
* 打开作图端口
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @return BOOL,成功返回TRUE,失败返回FALSE
|
||
*/
|
||
IVSDRAWER_API BOOL CALLMETHOD DRAW_Open(int nPort);
|
||
|
||
/**
|
||
* 关闭作图端口
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_Close(int nPort);
|
||
|
||
/**
|
||
* 重置作图端口
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 详见DRAW_TYPE定义,仅DRAW_TRACK,DRAW_ALARM,DRAW_RULE有效
|
||
* @return BOOL,成功返回TRUE,失败返回FALSE
|
||
*/
|
||
IVSDRAWER_API BOOL CALLMETHOD DRAW_Reset(int nPort, int nType);
|
||
|
||
/**
|
||
* 输入jason格式字符串数据,原始数据未经过解析
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] pJsonData 数据内存地址
|
||
* @param[in] nDataLen 数据长度
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputJsonData(int nPort, unsigned char* pJsonData, int nDataLen, int nFrameSeq);
|
||
|
||
/**
|
||
* 设置规则颜色
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nRuleColor 规则名称和规则颜色
|
||
* @param[in] nRuleNum 规则数
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetRuleColor(int nPort,RuleColor* nRuleColor, int nRuleNum);
|
||
|
||
/**
|
||
* 输入规则数据,经过jason解析
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 目前没有用到此字段
|
||
* @param[in] pRuleData 数据内存地址
|
||
* @param[in] nframe 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputRuleData(int nPort, int nType, unsigned char* pRuleData, int nframe);
|
||
|
||
/**
|
||
* 输入轨迹数据,对应智能分析轨迹帧0xF1(表示辅助帧)0x05(轨迹帧数据)
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 目前没有用到此字段
|
||
* @param[in] pTrackData 数据内存地址
|
||
* @param[in] nDataLen 数据长度
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputTrackData(int nPort, int nType, unsigned char* pTrackData, int nDataLen,int nFrameSeq);
|
||
|
||
/**
|
||
* 输入轨迹数据,智能结构化信息帧0xF1(表示辅助帧)0x0E(结构化数据)或者NVR浓缩信息轨迹点
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType nType=7表示智能结构化帧,nType=19表示智能客流,否则表示NVR浓缩信息轨迹点
|
||
* @param[in] pTrackData 数据内存地址
|
||
* @param[in] nDataLen 数据长度
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputTrackDataEx2(int nPort, int nType, unsigned char* pTrackData, int nDataLen,int nFrameSeq);
|
||
|
||
/**
|
||
* 输入警报数据,经过jason解析
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 目前没有用到此字段
|
||
* @param[in] pAlarmData 数据内存地址
|
||
* @param[in] nDataLen 数据长度
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputAlarmData(int nPort, int nType, unsigned char* pAlarmData, int nDataLen);
|
||
|
||
/**
|
||
* 输入警报数据,经过jason解析,与DRAW_InputAlarmData的差异在于数据结构不同
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 目前没有用到此字段
|
||
* @param[in] pAlarmData 数据内存地址
|
||
* @param[in] nDataLen 数据长度
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputAlarmDataEx(int nPort, int nType, unsigned char* pAlarmData, int nDataLen);
|
||
|
||
/**
|
||
* 输入动检信息数据
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 目前没有用到此字段
|
||
* @param[in] pData 动检信息数据
|
||
* @param[in] nDataLen 数据长度
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputMoveCheckData(int nPort, int nType, unsigned char* pData, int nDataLen, int nFrameSeq);
|
||
|
||
/**
|
||
* 指定位置显示一串字符串(可多行,以\n结尾)
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] pTextData 数据地址
|
||
* @param[in] nTextNumPos pTextData数据对应的结构体个数
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
typedef struct
|
||
{
|
||
const char* pText; // 显示的字符串
|
||
IVSPOINT hPos; // 显示位置
|
||
int nFontsize; // 字体大小
|
||
int nRed; // 字体颜色
|
||
int nGreen; // 字体颜色
|
||
int nBlue; // 字体颜色
|
||
int nAlignMode; // 对齐方式,0:左对齐,1:居中对齐,2:右对齐
|
||
}TextData;
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputTextData(int nPort, TextData* pTextData, int nTextNumPos);
|
||
|
||
/**
|
||
* 执行作图操作
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] hDC 作图设备句柄
|
||
* @param[in] hWnd 窗口句柄
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_Draw(int nPort, IVS_DC_REF hDC, IVS_WND_REF hWnd, int nFrameSeq);
|
||
|
||
/**
|
||
* 设置生存时间
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 详见DRAW_TYPE
|
||
* @param[in] nLifeCount 生存时间
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetLifeCount(int nPort, int nType, int nLifeCount);
|
||
|
||
/**
|
||
* 设置使能
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] type 类型 参照DRAW_TYPE
|
||
* @param[in] bEnable 使能标记
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetEnable(int nPort, int nType, IVS_BOOL bEnable);
|
||
|
||
/**
|
||
* 创建画笔
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType 规则类型
|
||
* @param[in] nPenStyle 画笔格式(实线or虚线),详见DRAW_PEN_STYLE
|
||
* @param[in] nWidth 画笔宽度
|
||
* @param[in] crColor 画笔颜色
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetPen(int nPort, int nType, int nPenStyle, int nWidth, IVS_COLOR crColor);
|
||
|
||
/**
|
||
* 执行命令操作
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nCmdType 详见IVS_CMD_TYPE
|
||
* @param[in] pContext 仅当nCmdType为IVS_TRACK_OBJECT/IVS_TRACK_OBJECT_EX或IVS_GET_OBJECT,指向ObjectContex结构体
|
||
* 其他指向int整型
|
||
* @param[in] nContextSize pContext对应的结构体大小
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_Ioctl(int nPort, int nCmdType, void* pContext, int nContextSize);
|
||
|
||
/**
|
||
* 刷新帧序号
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nFrameSeq 帧序号
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_Refresh(int nPort, int nFrameSeq);
|
||
|
||
/**
|
||
* 每调用一次,减少一次规则的生命周期(默认255),减少到0时删除规则
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_Idle(int nPort);
|
||
|
||
/**
|
||
* 清除作图内容
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nReserved 预留参数
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_Clean(int nPort, int nReserved);
|
||
|
||
/**
|
||
* 设置轨迹开始时间(视频浓缩)
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nTime 时间
|
||
* @param[in] nObjectId 物体ID
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetTime(int nPort, int nTime, int nObjectId);
|
||
|
||
/**
|
||
* 设置显示类型,现有的类型有rule,alarm,track
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nShowType 详见SHOW_TYPE,可组合使用
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetShowType(int nPort, int nShowType);
|
||
|
||
/**
|
||
* 画track回调
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] pCallBack 回调函数
|
||
* @param[in] pUserData 回调参数
|
||
*/
|
||
typedef void (CALLMETHOD* OnDrawOneTrack)(int nClassID, int nObjID, DH_IVS_POINT* pPoints, int nPointNum, void* pUserData);
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetDrawOneTrackCallback(int nPort, OnDrawOneTrack pCallBack, void* pUserData);
|
||
|
||
/**
|
||
* 翻译字符串回调
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] pTranslateCBFunc 回调函数
|
||
* @param[in] pUserData 回调参数
|
||
*/
|
||
typedef int (CALLMETHOD* fTranslateCallback)(unsigned char* strSrc,int nSrsLen, unsigned char* strDst, int* nDstLen, void* pUserData);
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetTranslateCallback(int nPort, fTranslateCallback pTranslateCBFunc, void* pUserData);
|
||
|
||
/**
|
||
* 由此规则产生的track报警会被忽略
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] pRuleName 规则名
|
||
* @param[in] bEnable 是否开启
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetRuleTrackAlarm(int nPort, const char* pRuleName, bool bEnable);
|
||
|
||
/**
|
||
* 设置track的显示规则
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nType: 0:显示所有track(默认方式),1:只显示有报警的track
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetShowTrackType(int nPort, int nType);
|
||
|
||
/**
|
||
* 设置帧序号
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nFrameSeq 帧序号
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetFrameNum(int nPort, int nFrameSeq);
|
||
|
||
/**
|
||
* 根据{大类ID, 物体ID}设置跟踪物体颜色, 形状
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nClassId 大类ID
|
||
* @param[in] nObjectId 物体ID
|
||
* @param[in] crColor 画笔颜色
|
||
* @param[in] bSpecialShape 1:特殊形状, 0:默认矩形
|
||
* @param[in] bSpecialSingle 1:只保留当前跟踪框的特殊形状,其他跟踪框回到默认形状 0:形状不变
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetTrackObjectColor(int nPort, int nClassId, int nObjectId, IVS_COLOR crColor, bool bSpecialShape, bool bSpecialSingle);
|
||
|
||
/**
|
||
* 根据bSpecialShape标志,设置车辆识别跟踪框形状
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] bSpecialShape 1:特殊形状, 0:默认矩形
|
||
* @return int,成功返回0,不成功返回-1
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_SetTrackEX2Sharp(int nPort, bool bSpecialShape);
|
||
|
||
/**
|
||
* 根据trackex2config的设置来显示某些字段,默认是不显示的
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] trackex2config 控制是否显示某些字段
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetTrackEx2Config(int nPort, TrackEx2Configure trackex2config);
|
||
|
||
/**
|
||
* 根据bEnable控制规则名称是否显示,默认显示
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] bEnable 控制字段
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetRuleNameConfig(int nPort, bool bEnable);
|
||
|
||
/**
|
||
* 清除配置数据
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nClearType 清除数据类型 详见IVS_CMD_TYPE
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_ClearIVSConfigData(int nPort, int nClearType);
|
||
|
||
/**
|
||
* 设置IVS的显示区域
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] rectRegion 显示区域
|
||
* @param[in] bEnable 设置使能
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetIVSDisplayRegion(int nPort, IVS_RECT *rectRegion, bool bEnable);
|
||
|
||
/**
|
||
* NACL与IOS平台特有,设置窗口参数接口
|
||
*
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] nX 窗口左下角X坐标
|
||
* @param[in] nY 窗口左下角Y坐标
|
||
* @param[in] nWidth 窗口矩形宽度
|
||
* @param[in] nHeight 窗口矩形高度
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetDrawSurfaceParam(int nPort, int nX, int nY, int nWidth, int nHeight);
|
||
|
||
/**
|
||
* MAC平台特有接口
|
||
* 外部设置显示比例(兼容Retina高清屏幕)
|
||
* @param[in] nPort 作图端口
|
||
* @param[in] scale 显示比例
|
||
*/
|
||
IVSDRAWER_API void CALLMETHOD DRAW_SetDisplayScale(int nPort, float scale);
|
||
|
||
/**
|
||
* 无效接口
|
||
*/
|
||
IVSDRAWER_API int CALLMETHOD DRAW_GetLastError(int nPort);
|
||
IVSDRAWER_API int CALLMETHOD DRAW_InputJpegData(int nPort, int nType, unsigned char* pJpegData, int nDataLen, int nFrameSeq);
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|