/* * Header: VZNL_Graphics.h * Description:当前文件为伟景智能(Vizum)所研发的EyeCB板提供绘图函数接口。 * 目前提供了绘制矩形,圆形,线等方法 * * Sample: // 在图像左上角绘制一个长宽各100像素的空心红色矩形。 * VZNLHANDLE hGraphics = VzNL_BeginPaint(); * * SVzNLRect sRect = {0, 0, 100, 100}; * VzNL_DrawRect(hGraphics, &sRect, 0xffff0000, 0, 1); * * VzNL_EndPaint(hGraphics); * Author: Mjw * Date: 2018/08/28 */ #ifndef __VIZUM_GRAPHICS_HEADER__ #define __VIZUM_GRAPHICS_HEADER__ #include "VZNL_Types.h" #if defined(_WIN32) #ifdef VZNL_GRAPHICS_EXPORTS #ifdef __cplusplus #define VZNL_GRAPHICS_API extern "C" __declspec(dllexport) #else #define VZNL_GRAPHICS_API __declspec(dllexport) #endif #else #ifdef __cplusplus #define VZNL_GRAPHICS_API extern "C" __declspec(dllimport) #else #define VZNL_GRAPHICS_API __declspec(dllimport) #endif #ifdef _DEBUG #pragma comment(lib, "VzNLGraphicsd.lib") #else #pragma comment(lib, "VzNLGraphics.lib") #endif #endif #else #ifndef VZNL_GRAPHICS_API #ifdef __cplusplus #define VZNL_GRAPHICS_API extern "C" __attribute__((visibility("default"))) #else #define VZNL_GRAPHICS_API __attribute__((visibility("default"))) #endif #endif #endif /// @brief /// 开始绘图 /// [in]传入数据buffer /// @return 返回绘图工具handle VZNL_GRAPHICS_API VZNLHANDLE VzNL_BeginPaint(SVzNLImageData* pImageData); /// @brief /// 绘制矩形 /// [in]绘图工具handle。 /// [in]要绘制的位置。 /// [in]边框颜色 /// [in]填充色 /// [in]边框宽度 /// @return 绘制完成返回true VZNL_GRAPHICS_API int VzNL_DrawRect(VZNLHANDLE hHandle, const SVzNL2DPoint sPoint[4], unsigned long dwFrameColor, unsigned long dwFillColor, unsigned int nBorder); /// @brief /// 绘制多边形 /// [in]绘图工具handle。 /// [in]要绘制的位置。 /// [in]边框颜色 /// [in]填充色 /// [in]边框宽度 /// @return 绘制完成返回true VZNL_GRAPHICS_API int VzNL_DrawPolygon(VZNLHANDLE hHandle, const SVzNL2DPoint* psPoint, const unsigned int nPtCount, unsigned long dwFrameColor, unsigned long dwFillColor, unsigned int nBorder); /// @brief /// 绘制圆形 /// [in]绘图工具handle。 /// [in]中点位置。 /// [in]半径。 /// [in]边框颜色 /// [in]填充色 /// [in]边框宽度 /// @return 绘制完成返回true VZNL_GRAPHICS_API int VzNL_DrawCircle(VZNLHANDLE hHandle, const SVzNL2DPoint sPoint, int nRadius, unsigned long dwFrameColor, unsigned long dwFillColor, unsigned int nBorder); /// @brief /// 绘制椭圆 /// [in]绘图工具handle。 /// [in]中点位置。 /// [in]半径。 /// [in]边框颜色 /// [in]填充色 /// [in]边框宽度 /// @return 绘制完成返回true VZNL_GRAPHICS_API int VzNL_DrawEllipe(VZNLHANDLE hHandle, const SVzNL2DPoint sPoint, unsigned long dwFrameColor, unsigned long dwFillColor, unsigned int nLongAxes, unsigned int nShortAxes, double angle, unsigned int nBorder); /// @brief /// 绘制直线 /// [in]绘图工具handle。 /// [in]直线的两个点位置。 /// @return 绘制完成返回true VZNL_GRAPHICS_API int VzNL_DrawLine(VZNLHANDLE hHandle, unsigned long dwColor, const SVzNL2DPoint sPoint[2], unsigned int nBorder); /// @brief /// 绘制文字 /// [in]文字内容 /// [in]坐上起点 /// [in]字体大小 /// [in]字体颜色 VZNL_GRAPHICS_API int VzNL_DrawText(VZNLHANDLE hHandle, const char* text, SVzNL2DPoint& palce, int fontSize, unsigned long clrTxt); /// @brief /// 结束绘图 /// [in]绘图工具handle。 VZNL_GRAPHICS_API void VzNL_EndPaint(VZNLHANDLE hHandle); /// @brief /// 显示一个图像(linux因为版本比较繁杂,支持的界面库不同,所以这个函数linux目前不可用) /// [in]窗口名 /// [in]压缩图像数据结构 VZNL_GRAPHICS_API void VzNL_ShowImage(const char* szWindowName, const SVzNLImageData* pImageData); /// @brief /// 存储图像。 /// [in]文件全路径 /// [in]压缩图像数据结构 /// @return 成功返回0,失败返回错误码 VZNL_GRAPHICS_API int VzNL_SaveImage(const char* szFileName, const SVzNLImageData* pImageData); /// @brief /// 存储图像。 /// [in]文件全路径 /// [in]压缩图像数据结构 /// @return 成功返回0,失败返回错误码 VZNL_GRAPHICS_API int VzNL_SaveScaleImage(const char* szFileName, SVzNLImageData* pImageData, SVzVideoResolution* psResolution); /// @brief /// 压缩图片 /// [in]绘图工具handle。 /// [in]压缩类型。 /// [in]数据源(无压缩)。 /// [out]压缩后的数据。 /// @return 成功返回0,失败返回错误码 VZNL_GRAPHICS_API int VzNL_CompressImage(EVzNLImageCompress eCompress, SVzNLImageData* pSrc, SVzNLCompressData** pDst); /// @brief /// 释放压缩图片 VZNL_GRAPHICS_API void VzNL_ReleaseCompressImage(SVzNLCompressData** pDst); #endif // __VIZUM_GRAPHICS_HEADER__