123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // 下列 ifdef 块是创建使从 DLL 导出更简单的
- // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SHAREMEMORY_IMAGE_EXPORTS
- // 符号编译的。在使用此 DLL 的
- // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
- // SHAREMEMORY_IMAGE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
- // 符号视为是被导出的。
- #ifdef SHAREMEMORY_IMAGE_EXPORTS
- #define SHAREMEMORY_IMAGE_API __declspec(dllexport)
- #else
- #define SHAREMEMORY_IMAGE_API __declspec(dllimport)
- #endif
- #ifndef SHAREMEMORY_IMAGE_EXPORTS
- #ifdef _WIN64
- #ifdef _DEBUG
- #pragma comment(lib, "ShareMemory_ImageX64D.lib")
- #else
- #pragma comment(lib, "ShareMemory_ImageX64.lib")
- #endif
- #else
- #ifdef _DEBUG
- #pragma comment(lib, "ShareMemory_ImageD.lib")
- #else
- #pragma comment(lib, "ShareMemory_Image.lib")
- #endif
- #endif
- #endif
- #ifdef SHAREMEMORY_IMAGE_EXPORTS
- #define SHAREMEMORY_IMAGE_API __declspec(dllexport)
- #define SHAREMEMORY_IMAGE_C_API extern "C" __declspec(dllexport)
- #else
- #define SHAREMEMORY_IMAGE_API __declspec(dllimport)
- #define SHAREMEMORY_IMAGE_C_API extern "C" __declspec(dllimport)
- #endif
- #include "ShareMemory_Block.h"
- // 此类是从 ShareMemory_Image.dll 导出的
- class SHAREMEMORY_IMAGE_API CShareMemory_Image : public CShareMemory_Block
- {
- DWORD m_nImagePacketPoint;//包含info和data
- DWORD m_nImageInfoSize;
- DWORD m_nImageRawSize;
- DWORD m_nImageBlockSize;//Image申请的全部block大小
- DWORD m_Bid;
- unsigned char * m_pImageBlockBuff;//保存此ImageBlock对应共享内存的首地址
- bool ImageBlockWrite(LPVOID buff, DWORD size);
- bool ImageBlockRead(LPVOID buff, DWORD size);
- bool AddImageSequeue(unsigned long long seqid, unsigned long long frameid);
- bool SetImageSequeue(unsigned long long seqid, unsigned long long frameid);
- bool GetImageSequeue(unsigned long long & seqid, unsigned long long & frameid);
- public:
- CShareMemory_Image();
- ~CShareMemory_Image();
- DWORD SizeOfImageBlock();
- DWORD SizeOfImageRaw();
- DWORD SizeOfImageInfo();
- //第一步SetImageDataSize,生成整个ImageBlock的大小
- bool SetImageDataSize(unsigned long long width, unsigned long long height, unsigned long long bits, unsigned long long top, unsigned long long bottom, unsigned long long left, unsigned long long right);
- //第二步创建ImageBlock * N 大小的circle。调用ShareMemoryBlockSet,将获得此ImageBlock对应共享内存的首地址。在此之后,其他函数才能正常工作。
- virtual bool ShareMemoryBlockSet(DWORD Bid, int AccessFlags);
-
- //bool CreateImageDataBuff();
- bool ReadImageData(LPVOID & buff, DWORD & size);
- bool WriteImageData(LPVOID buff, DWORD size);
- bool ReadImageHeadandData(LPVOID & buff, DWORD & size);
- bool WriteImageHeadandData(LPVOID buff, DWORD size);
- bool AddImageFullSize(unsigned long long width, unsigned long long height, unsigned long long bits);
- bool AddImageTrim(unsigned long long top, unsigned long long bottom, unsigned long long left, unsigned long long right);
- bool AddImagetime(SYSTEMTIME st);
- bool AddImageXrayflag(unsigned long long flag);
- bool SetImageFullSize(unsigned long long width, unsigned long long height, unsigned long long bits);
- bool SetImageTrim(unsigned long long top, unsigned long long bottom, unsigned long long left, unsigned long long right);
- bool SetImagetime(SYSTEMTIME st);
- bool SetImageXrayflag(unsigned long long flag);
- bool GetImageFullSize(unsigned long long & width, unsigned long long & height, unsigned long long & bits);
- bool GetImageTrim(unsigned long long & top, unsigned long long & bottom, unsigned long long & left, unsigned long long & right);
- bool GetImagetime(SYSTEMTIME & st);
- bool GetImageXrayflag(unsigned long long & flag);
- bool AddImageHeadInfo(unsigned short key, unsigned long long &Val);
- bool SetImageHeadInfo(unsigned short key, unsigned long long &Val);
- bool GetImageHeadInfo(unsigned short key, unsigned long long &Val);
- bool SetImageId(unsigned long long id);
- bool GetImageId(unsigned long long & id);
- DWORD GetImageBlockId();
- };
|