#ifndef IVS_DRAWER_H #define IVS_DRAWER_H #include #ifdef _WIN32 #define IVSDRAWER_API #define CALLMETHOD __stdcall #else #define IVSDRAWER_API #define CALLMETHOD #endif #ifdef _WIN32 #include #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