gol_isee.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:8k
源码类别:

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. gol_isee.h - ISee图像浏览器—图像读写模块全局定义文件
  3.           
  4.     版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
  5.     这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用公共许
  6. 可证条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根
  7. 据你的选择)用任何更新的版本。
  8.     发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
  9. 目地的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
  10.     你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,
  11. 写信给:
  12.     The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,
  13.     MA02139,  USA
  14. 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
  15. 系:
  16. http://isee.126.com
  17. http://www.vchelp.net
  18. 或:
  19. iseesoft@china.com
  20. 编写人:YZ
  21. 文件版本:
  22. Build 00614
  23. Date  2000-6-14
  24. ********************************************************************/
  25. #ifndef __GOL_ISEE_INC
  26. #define __GOL_ISEE_INC
  27. // 接口版本号
  28. #define ISEE_IFVER 5
  29. #define DPK_ANNEXINFOSIZE 512
  30. #define DPK_FILENAMESIZE 512
  31. // 图像信息数据类型定义
  32. //************************************************************
  33. // 图像读写模块操作命令
  34. enum COMMAND
  35. {
  36. CMD_NULL, // 保留
  37. CMD_GETPROCTYPE, // 获取本模块能处理的图像类型,如:BMP,PCX
  38. CMD_GETWRITERS, // 获取本模块的作者列表,多人时用逗号分隔
  39. CMD_GETWRITERMESS, // 获取作者们的留言
  40. CMD_GETBUILDID, // 获取图像模块内部版本号
  41. CMD_IS_VALID_FILE, // 判断指定文件是否能被本模块处理
  42. CMD_GET_FILE_INFO, // 获取指定文件的信息
  43. CMD_LOAD_FROM_FILE, // 从指定图像文件中读取数据
  44. CMD_SAVE_TO_FILE, // 将数据保存到指定文件中
  45. CMD_IS_SUPPORT, // 查询某个命令是否被支持
  46. CMD_RESIZE, // 重新获取指定尺寸的图像位数据(只适用于矢量图像)
  47. //CMD_XXXXXX, // 新命令将在此插入
  48. CMD_MAX // 边界值
  49. };
  50. // 图像读写模块执行结果
  51. enum EXERESULT
  52. {
  53. ER_SUCCESS, // 执行成功
  54. ER_FILERWERR, // 文件在读写过程中发生错误(系统、硬件等原因引起文件读写异常)
  55. ER_MEMORYERR, // 内存不足,导致操作失败
  56. ER_ILLCOMM, // 非法指令
  57. ER_COMMINFOERR, // 与命令有关的信息不足或有缺损
  58. ER_SYSERR, // 操作系统不稳定,无法执行命令
  59. ER_NOTSUPPORT, // 不支持的命令
  60. ER_USERBREAK, // 操作被用户中断
  61. //ER_XXXX, // 新的错误信息在此插入
  62. ER_EMPTY, // 初始状态值,用于客户方初始化返回变量
  63. ER_MAX // 边界值
  64. };
  65. // 图像类型
  66. enum IMGTYPE
  67. {
  68. IMT_NULL, // 无效图像类型
  69. IMT_RESSTATIC, // 光珊、静态图像
  70. IMT_RESDYN, // 光珊、动态图像
  71. IMT_VECTORSTATIC, // 矢量、静态图像
  72. IMT_VECTORDYN, // 矢量、动态图像
  73. //IMT_XXXXX, // 在此插入新的图像类型
  74. IMT_MAX // 边界值
  75. };
  76. // 图像文件格式
  77. enum IMGFORMAT
  78. {
  79. IMF_NULL, // 未知或无效的图像文件
  80. IMF_BMP, // BMP格式的图像文件
  81. IMF_CUR, // ....
  82. IMF_ICO,
  83. IMF_PCX,
  84. IMF_DCX,
  85. IMF_GIF,
  86. IMF_PNG,
  87. IMF_TGA,
  88. IMF_WMF,
  89. IMF_EMF,
  90. IMF_TIFF,
  91. IMF_JPEG, //
  92. IMF_PSD, // PSD格式的图像文件
  93. //IMF_XXX // 新增格式在此处插入
  94. IMF_MAX // 边界值
  95. };
  96. // 数据包当前状态
  97. enum PACKSTATE
  98. {
  99. PKST_NULL, // 数据包为空
  100. PKST_NOTVER, // 指定文件还未通过验证的阶段(此时只有文件名变量被设置)
  101. PKST_PASSVER, // 指定的文件已通过验证,是有效格式的文件
  102. PKST_PASSINFO, // 已通过验证,且数据包中有该文件的相关信息
  103. PKST_INFOANDBITS, // 已通过验证,且有该文件的相关信息,并含有图像的位数据
  104. PKST_MODIFY, // 数据包中的图像已经被修改过
  105. //PKST_XXXXX, // 插入新的状态
  106. PKST_MAX // 边界值
  107. };
  108. // 图像的存储方式
  109. enum IMGCOMPRESS
  110. {
  111. ICS_RGB = 0, // 未经压缩的DIB存储方式
  112. ICS_RLE8, // RLE8存储方式
  113. ICS_RLE4, // RLE4存储方式
  114. ICS_BITFIELDS, // 分位存储方式
  115. ICS_PCXRLE, // PCX RLE存储方式
  116. ICS_GIFLZW, // GIF LZW存储方式
  117. ICS_GDIRECORD, // WMF的元文件存储方式
  118. //ICS_XXXX,
  119. ICS_MAX
  120. };
  121. // 数据结构定义
  122. //************************************************************
  123. // 标准图像格式信息头结构
  124. struct _tagINTERBITMAPINFO;
  125. typedef _tagINTERBITMAPINFO INTERBITMAPINFO;
  126. typedef _tagINTERBITMAPINFO *LPINTERBITMAPINFO;
  127. // 图像信息结构(对于多帧的图像,以下结构只用来描述第一帧)
  128. struct _tagIMAGEINFOSTR;
  129. typedef _tagIMAGEINFOSTR  IMAGEINFOSTR;
  130. typedef _tagIMAGEINFOSTR  *LPIMAGEINFOSTR;
  131. // 图像读写数据包结构
  132. struct _tagINFOSTR;
  133. typedef _tagINFOSTR  INFOSTR;
  134. typedef _tagINFOSTR  *LPINFOSTR;
  135. // 多桢图像的子图像块结构(主要用于动画类图像文件)
  136. struct _tagSUBIMGBLOCK;
  137. typedef _tagSUBIMGBLOCK SUBIMGBLOCK;
  138. typedef _tagSUBIMGBLOCK *LPSUBIMGBLOCK;
  139. // 多桢图像的子图像块结构
  140. struct _tagSUBIMGBLOCK
  141. {
  142. int number; // 子图像块的序列号
  143. int left, top; // 子图像块的显示位置(左上角)
  144. int width, height; // 子图像块的图像宽度及高度
  145. int dowith; // 处置方法(针对于动画GIF)
  146. int userinput; // 用户输入(针对于动画GIF)
  147. COLORREF colorkey; // 透明色分量值
  148. int time; // 显示的延迟时间
  149. unsigned long   *(*pLineAddr);// 标准图像位数据中从0行到n-1行的每一行的首地址
  150. unsigned char *_pbdata; // 标准图像位数据缓冲区首地址
  151. LPINFOSTR parents; // 第一桢图像数据的结构地址(所属数据包结构的地址)
  152. LPSUBIMGBLOCK prev; // 前一桢图像数据的结构地址
  153. LPSUBIMGBLOCK next; // 后一桢图像数据的结构地址(NULL表示这是最后一副图像)
  154. };
  155. // 标准图像格式信息头结构
  156. struct _tagINTERBITMAPINFO
  157. {
  158. BITMAPINFOHEADER bmi; // 标准图像格式的信息结构
  159. DWORD rmask; // 红色掩码
  160. DWORD gmask; // 绿色掩码
  161. DWORD bmask; // 蓝色掩码
  162. DWORD   alphaMask; // Alpha掩码
  163. };
  164. // 图像信息结构(对于多帧的图像,以下结构只用来描述第一帧)
  165. struct _tagIMAGEINFOSTR
  166. {
  167. IMGTYPE imgtype; // 图像类型
  168. IMGFORMAT imgformat; // 图像文件格式
  169. unsigned long filesize; // 图像文件的长度(以字节为单位)
  170. unsigned long width; // 图像宽度
  171. unsigned long height; // 图像高度
  172. unsigned long bitcount; // 像素位数(对应与颜色数目)
  173. IMGCOMPRESS compression; // 图像的存储方式
  174. unsigned long linesize; // 每一图像行所占的字节数(DWORD对齐,只针对BMP文件)
  175. unsigned long imgnumbers; // 该文件中图像的个数(普通图像文件此值恒定为1,而在动画GIF中可能就会大于1)
  176. unsigned int imgchang; // 该文件是否可被编辑(0-表示可以被编辑,1-表示不能被编辑。比如动画GIF就不能被编辑)
  177. unsigned short year; // 图像文件最后修改的年
  178. unsigned short monday; // 图像文件最后修改的月和日(月在高字节,日在低字节)
  179. unsigned long time; // 图像文件最后修改的时间(字序:最高—0, 2—时,1—分,0—秒)
  180. };
  181. // 图像读写数据包结构
  182. struct _tagINFOSTR
  183. {
  184. COMMAND comm; // 操作命令
  185. EXERESULT result; // 执行的结果(是成功了还是失败了)
  186. union {
  187. char cAnnData; // 联合,用于描述不同类型的数据,
  188. int iAnnData; // 是操作命令与执行结果的附加信息,
  189. long lAnnData; // 参见每个命令中对此值的含意说明
  190. float fAnnData;
  191. double dfAnnData;
  192. COMMAND cmAnnData; // 检察命令支持情况时用到
  193. unsigned short  wAnnData;
  194. unsigned long  dwAnnData;
  195. void *pAnnData;
  196. unsigned int siAnnData[DPK_ANNEXINFOSIZE/sizeof(int)];
  197. unsigned char scAnnData[DPK_ANNEXINFOSIZE];
  198. } annexdata;
  199. IMAGEINFOSTR imginfo; // 图像文件信息
  200. char filename[DPK_FILENAMESIZE];// 图像文件的路径及文件名
  201. void *pImgInfo; // 原始图像信息
  202. INTERBITMAPINFO sDIBInfo; // 标准图像格式信息结构
  203. unsigned long   *(*pLineAddr);// 标准图像位数据中从0行到n-1行的每一行的首地址
  204. unsigned char *_pbdata; // 标准图像位数据缓冲区首地址
  205. PACKSTATE state; // 数据包当前的状态
  206. int modify; // 修改标记
  207. LPSUBIMGBLOCK psubimg; // 子图像数据块地址(静态图像此值应设为NULL)
  208. int (WINAPI *fpProgress)(int,int);
  209. // 由调用者提供的进度条显示函数指针(可以是NULL)
  210. // 入口参数1是总的进度数,参数2是当前的进度数。
  211. // 返回参数:如果返回0,则图像读写模块继续操作,
  212. // 如果返回非0值,则读写模块终止操作,返回数据包。
  213. };
  214. #endif //__GOL_ISEE_INC