IRWEngine.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:10k
- /********************************************************************
- IRWEngine.h - ISee图像读写引擎定义文件
- 版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
- 这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
- 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
- 的选择)用任何更新的版本。
- 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
- 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
- 你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
- 写信给:
- The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
- MA02139, USA
- 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
- 系:
- http://isee.126.com
- http://www.vchelp.net
- 或:
- iseesoft@china.com
- 作 者:YZ E-mail:yzfree@sina.com
- Analyst E-mail:analyst@citiz.net
- 功能实现:图像读写插件的封装,独立的工作线程,透明的读写过程。
- 文件版本:
- Build 00009
- Date 2000-12-20
- ********************************************************************/
- #ifndef __IRWENGINE_INC__
- #define __IRWENGINE_INC__
- #ifndef __GOL_ISEE_INC
- #include "..publicgol_isee.h"
- #endif
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- // 本文件中定义的类
- class CIRWEngine;
- class CThumImage;
- class CReturnReceipt;
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
- // 图像读写引擎及相关类定义
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
- // 插件信息数组尺寸
- #define IRWE_PROCTYPE_SIZE 2048
- #define IRWE_PROCID_SIZE 256 // 最多支持256种格式的图像
- // 图像读写引擎的状态
- #define IRWES_DEATH 0 // 引擎未经初始化
- #define IRWES_EXIST 1 // 引擎已被初始化
- //@@@@缩放代码相关定义@@@@Add by Analyst 2000-12-19@@@@
- #define IRWE_THUMIMAGE_MINI_SIZE 16 // 拇指图的最小像框尺寸为16*16象素
- #define _IRWE_THUM_APLHATAB_SIZE 129 // Alpha表尺寸
- typedef __int64 QWORD;
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- // 图像读写引擎访问接口(该类不能定义实例,只能作为接口使用!!!)
- class CIRWEngine
- {
- public:
- CIRWEngine();
- ~CIRWEngine();
- // 接口函数
- public:
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- // 获取开发者信息
- int GetDeveloperInfo(LPDEVELOPERINFO *lppDevInfo);
- // 获取引擎支持的文件扩展名过滤串
- LPTSTR GetFileFilterString(void);
- // 暂停引擎的工作
- void Pause(void);
- // 恢复引擎工作
- void Restore(void);
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- // 通过扩展名及文件内容判断指定文件是否是被支持的图像文件
- CReturnReceipt *IsValidImageFile(LPCTSTR lpFileName, BOOL type);
- // 通过扩展名断指定文件是否是被支持的图像文件(较上面的那个函数快)
- BOOL IsValidImageFile(LPCTSTR lpFileName);
- // 获取图像文件的信息(包括尺寸、位深等)
- CReturnReceipt *GetImageFileInfo(LPCTSTR lpFileName);
- void GetImageFileInfo(CReturnReceipt *pCRRt);
- // 获取图像文件的位数据(以ISee格式(倒向32位DIB))
- CReturnReceipt *LoadImageFromFile(LPCTSTR lpFileName, BOOL pri=FALSE);
- void LoadImageFromFile(CReturnReceipt *pCRRt, BOOL pri=FALSE);
- // 保存图像
- void SaveImageToFile(LPCTSTR lpNewFileName, CReturnReceipt *lpCRRt,
- LPBYTE lpSaveInfo, DWORD dwSaveInfoSize);
- // 以指定尺寸读取图像位数据(只针对矢量图)
- CReturnReceipt *LoadImageResize(LPCTSTR lpFileName, CSize& size);
- // 获取图像文件的拇指图(以ISee格式(倒向32位DIB))
- CReturnReceipt *GetThumImage(LPCTSTR lpFileName, CRect& rect, BOOL keepbit=FALSE, BOOL pri=FALSE);
- void GetThumImage(CReturnReceipt *pCRRt, CRect& rect, BOOL keepbit=FALSE, BOOL pri=FALSE);
- // 内部函数
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- int Destruct(void);
- };
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
- // 回执单及相关类型的定义
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
- // 命令被执行的情况
- enum IRWE_PROCESSING
- {
- IRWEPROC_INITING, // 信息块正在初始化,还未被放入信息队列
- IRWEPROC_FELL_IN, // 信息还在排队,未处理
- IRWEPROC_PROCESSING, // 信息正在被处理(已被提取出信息队列)
- IRWEPROC_COMPLETE, // 信息已处理完毕,命令执行成功
- IRWEPROC_FAIL // 信息已处理完毕,但命令执行失败(系统问题)
- };
- // 图像读写引擎命令表
- enum IRWECOMMAND
- {
- IRWEC_NULL, // 空命令
- IRWEC_IS_VALID_FILE_COMN, // 判断指定文件是否是指定的图像文件(普通判断)
- IRWEC_IS_VALID_FILE_NICETY, // 判断指定文件是否是指定的图像文件(精密判断)
- IRWEC_GET_FILE_INFO, // 获取图像文件的信息
- IRWEC_LOAD_FROM_FILE, // 将图像文件读入内存
- IRWEC_SAVE_TO_FILE, // 保存图像到文件
- IRWEC_RESIZE, // 获取指定尺寸的图像
- IRWEC_IS_SUPPORT, // 查询指定的功能是否被支持
- IRWEC_IN_END = 2048, // 结束引擎线程
- IRWEC_GET_THUMIMAGE, // 获取图像文件的拇指图
- IRWEC_GET_THUMIMAGE_A_BIT, // 获取图像文件的拇指图并保留图像位数据
- //IEC_XXX, // 新的命令在此加入
- IRWEC_MAX // 边界值
- };
- // 命令执行失败的原因
- enum IRWE_ERROR
- {
- IRWEERR_SUCCESS, // 没有错误,命令执行成功
- IRWEERR_FILERWERR, // 文件在读写过程中发生错误(系统、硬件等原因引起文件读写异常)
- IRWEERR_MEMORYERR, // 内存不足,导致操作失败
- IRWEERR_ILLCOMM, // 非法指令
- IRWEERR_COMMINFOERR, // 与命令有关的信息不足或有缺损
- IRWEERR_SYSERR, // 操作系统不稳定,无法执行命令
- IRWEERR_NOTSUPPORT, // 不支持的命令
- IRWEERR_USERBREAK, // 操作被用户中断
- IRWEERR_BADIMAGE, // 受损的图像文件
- IRWEERR_ENGINEERR=1024, // 图像读写引擎内部发生故障
- IRWEERR_ENGINECLOSE // 引擎已被关闭,无法完成指定命令
- //IRWEERR_XXXXX // 新的错误信息在此插入
- };
- // 命令的执行情况
- enum IRWERRT_RESULT
- {
- IRWERRT_FAIL = -1, // 命令执行失败,用GetLastError()函数获取详细的错误信息
- IRWERRT_ING = 0, // 命令正在执行中
- IRWERRT_SUCCESS = 1 // 命令执行成功
- };
- // 拇指图数据来源
- enum IRWETHUM_FROM
- {
- IRWETHUM_FROM_NULL, // 空,类中还没有数据
- IRWETHUM_FROM_CREATE, // 新创建的拇指图数据
- IRWETHUM_FROM_STOCK // 预存储的拇指图数据
- };
- // 拇指图类定义
- class CThumImage
- {
- public:
- CThumImage();
- ~CThumImage();
- public:
- IRWETHUM_FROM m_thumfrom; // 拇指图数据来源及当前状态
- BITMAPINFOHEADER m_thuminfo; // 拇指图尺寸、位深等信息
- PBYTE m_thumbits; // 拇指图位数据
- DWORD **m_thumlines; // 拇指图行地址数组
- CRect m_thumbound; // 能包含拇指图的最小正方形的尺寸
- };
- // 回执单定义
- class CReturnReceipt
- {
- protected:
- INFOSTR m_data; // 图像读写模块使用的数据包
- CThumImage m_thumbnails; // 拇指图数据
- int m_subproc; // 图像读写模块的工作进展(读取进度)
- IRWE_PROCESSING m_processing; // 图像读写引擎的工作进展(五种状态)
- IRWE_ERROR m_errorinfo; // 命令执行失败的原因
- UINT m_ID; // 订单编号
- IRWECOMMAND m_command; // 原始命令
- TCHAR m_filename[_MAX_PATH]; // 相关文件
- int m_modelID; // 相关插件标识值
- BOOL m_break; // 中断操作的标志(TRUE-中断操作)
- public:
- CReturnReceipt();
- ~CReturnReceipt();
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- IRWECOMMAND GetCommand(void); // 获取最近一次操作的命令
- IRWERRT_RESULT GetResult(void); // 查询当前命令的执行情况
- IRWE_ERROR GetLastError(void); // 获取最近一次操作的返回码(如果
- // 最近一次的操作失败,则返回码就
- // 是失败的原因(参见IRWE_ERROR))
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- PACKSTATE GetDataPackState(void); // 获取回执单中数据包的当前状态(
- // 参见PACKSTATE枚举定义)
- int GetImageWidth(void); // 获取图像宽度
- int GetImageHeight(void); // 获取图像高度
- int GetImageNumber(void); // 获取图像个数
- LPBYTE GetImageBitData(void); // 获取图像位数据缓冲区地址
- LPBYTE *GetImageLineAddr(void); // 获取图像行地址数组
- LPINTERBITMAPINFO GetImageBitmapInfo(void); // 获取图像的底层信息
- LPIMAGEINFOSTR GetImageInfo(void); // 获取图像的抽象信息
- LPSUBIMGBLOCK GetSubImageBlock(void); // 获得子图像数据块链
- // 表的首地址
- void *GetOrgImageInfo(void); // 获取图像的原始信息(可能为空)
- LPCTSTR GetFileName(void); // 获取图像的原始文件名
- void ClearImageBitData(void); // 清除回执单中位数据(如果有的话)
- // ,并将回执单设定在PKST_PASSINFO
- // 状态
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- BOOL IsThumImage(void); // 判断回执单中是否存在拇指图数据
- IRWETHUM_FROM GetThumImageFrom(void); // 获知拇指图数据来源
- CRect& GetThumImageRect(void); // 获取拇指图尺寸
- CRect& GetThumBoundRect(); // 获取拇指图外框尺寸
- BITMAPINFOHEADER *GetThumImageInfo(void); // 获取拇指图底层信息
- PBYTE GetThumImageBit(void); // 获取拇指图位缓冲区地址
- int GetImagePluginID(void); // 获取负责本回执单的图像读写插件ID
- int GetReturnReceiptID(void); // 获取本回执单的编号
- IRWE_PROCESSING GetProcessing(void);// 查询回执单当前命令的执行情况
- void BreakProcess(void); // 中断当前正在执行的命令
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- private:
- void _clear_list(void); // 清除回执单中的子图像数据
- static int WINAPI fpProgress(int,int); // 图像读写模块的读写
- // 进展回调函数
- static UINT m_obj_count; // 回执单个数计数器
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- friend class CIRWEngine;
- friend UINT ie_ThreadEnter(LPVOID);
- friend void _fnIRWEC_IS_VALID_FILE(CReturnReceipt *, BOOL);
- friend void _fnIRWEC_GET_FILE_INFO(CReturnReceipt *);
- friend void _fnIRWEC_LOAD_FROM_FILE(CReturnReceipt *);
- friend void _fnIRWEC_SAVE_TO_FILE(CReturnReceipt *);
- friend void _fnIRWEC_RESIZE(CReturnReceipt *);
- friend void _fnIRWEC_GET_THUM_IMAGE(CReturnReceipt *, BOOL);
- friend int _fnIRWEC_Helper_IS_VALID_FILE(CReturnReceipt *, int);
- friend int _fnIRWEC_Helper_GET_FILE_INFO(CReturnReceipt *, int);
- friend int _IRWE_PostCommandToImgEngine(CReturnReceipt *, BOOL);
- friend CReturnReceipt *_IRWE_ReadCommandFromTotalList(void);
- };
- ///////////////////////////////////////////////////////////////
- // 图像读写引擎全局助手函数
- // 获取图像读写引擎地址(指针)
- CIRWEngine *ISeeGetIRWEngine(void);
- // 查询图像读写引擎状态
- int ISeeQuestionIRWEState(void);
- // 创建图像读写引擎
- int ISeeBeginIRWEngine(void);
- // 关闭图像读写引擎
- void ISeeEndIRWEngine(void);
- #endif /*__IRWENGINE_INC__*/