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

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. gol_proc.h - ISee图像浏览器—图像处理接口全局定义文件
  3.           
  4.     版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
  5.     这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
  6. 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
  7. 的选择)用任何更新的版本。
  8.     发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
  9. 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
  10.     你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
  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. 编写人:临风
  21. 文件版本:
  22. Build 01118
  23. Date  2000-11-18
  24. ********************************************************************/
  25. #ifndef __GOL_PROC_INC
  26. #define __GOL_PROC_INC
  27. // 接口版本号
  28. #define ISEE_PRVER 7
  29. // 图像处理数据包附加参数尺寸
  30. #define PPK_ANNEXINFOSIZE 512
  31. //图像处理模块入口函数返回值
  32. #define PROCERR_SUCCESS 1        //成功
  33. #define PROCERR_FALSE 0        //失败,一般错误,须检查result值
  34. #define PROCERR_FAIL -1       //失败,一般是调用对话框失败,系统错误等,是大多数WIN API函数失败返回值。
  35. #define PROCERR_NULLPARAM -2       //传入参数为NULL指针
  36. // 图像处理数据包定义
  37. //************************************************************
  38. // 图像处理模块操作命令
  39. enum PROCCOMM
  40. {
  41. PCM_NULL,  // 未知或无效的命令
  42. PCM_GETWRITERS,  // 获取作者名单,多于一个人时用逗号分隔姓名
  43. PCM_GETWRITERMESS,  // 获取作者们的留言
  44. PCM_GETBUILDID,  // 获取图像模块内部版本号
  45. PCM_PROP = 1024,     // 图像属性处理
  46. PCM_RESIZE,          // 重定义尺寸
  47. PCM_ROTATE,  // 旋转
  48. PCM_SPLIT,           // 分割
  49. PCM_SPLICE,          // 拼接
  50. PCM_GREYSCALE,       // 灰度转换
  51. PCM_REFINECOLOR,     // 真彩,高彩,256色转换
  52. //PCM_XXXXX,         // 图像属性处理命令在此插入
  53. PCM_MASS = 2048,     // 图像质量处理
  54. PCM_FILTER,          // 杂色处理(滤波)
  55. PCM_CONTRAST,        // 明暗,对比度处理
  56. PCM_DETECTEDGE,      // 边缘探测
  57. //PCM_XXXXX,         // 图像质量处理命令在此插入
  58. PCM_STEFF = 3072,    // 图像静态效果处理
  59. PCM_EMBOSS,          // 浮雕效果
  60. PCM_VARIATIONS,      // 色调处理
  61. PCM_BLUR,            // 模糊
  62. PCM_BUTTON,          // 按钮化处理
  63. PCM_TWIRL,           // 扭曲
  64. PCM_INTERLACE,       // 抽丝
  65. PCM_MOSAIC,          // 马赛克
  66. //PCM_XXXXX,         // 图像静态效果处理命令在此插入
  67. PCM_ANIEFF = 4096,   // 图像动态效果处理
  68. PCM_FADEIN,          // 叠映
  69. PCM_ALPHASCROLL,     // ALPHA卷轴
  70. PCM_BURNUP,          // 火焰吞噬
  71. //PCM_XXXXX,         // 图像动态效果处理命令在此插入
  72. PCM_MAX  // 边界值
  73. };
  74. // 图像处理模块执行结果
  75. enum PROCRESULT
  76. {
  77. PR_SUCCESS, // 操作成功
  78. PR_FAIL, // 操作失败
  79. PR_NULL, // 未操作
  80. PR_MEMORYERR, // 内存不足,导致操作失败
  81. PR_ILLCOMM, // 非法指令(客户程序给出的命令码不正确)
  82. PR_COMMINFOERR, // 与命令有关的信息不足或有缺损
  83. PR_SYSERR, // 操作系统此时不稳定,无法执行命令
  84. //PR_XXXX, // 新的错误信息在此插入
  85. PR_NOTEXE, // 命令没有被执行,表示图像处理模块不支持该命令
  86. PR_MAX // 边界值
  87. };
  88. // 图像处理数据包状态
  89. enum IPDPCKSTATE
  90. {
  91. IPDPS_NULL, // 当前数据包为空
  92. IPDPS_CONFIG,       // 调用动态处理设置部分
  93. IPDPS_RUN,          // 调用动态处理运行部分
  94. //IPDPS_XXXXX, // 插入新的状态
  95. IPDPS_MAX // 边界值
  96. };
  97. // 数据结构定义
  98. //************************************************************
  99. // 图像操作数据包
  100. struct _tagIMAGEPROCSTR;
  101. typedef _tagIMAGEPROCSTR  IMAGEPROCSTR;
  102. typedef _tagIMAGEPROCSTR  *LPIMAGEPROCSTR;
  103. // 图像位数据相关信息
  104. struct _tagIMAGEPROCDATAINFO;
  105. typedef _tagIMAGEPROCDATAINFO  IMAGEPROCDATAINFO;
  106. typedef _tagIMAGEPROCDATAINFO  *LPIMAGEPROCDATAINFO;
  107. // 图像位数据相关信息
  108. struct _tagIMAGEPROCDATAINFO
  109. {
  110. int width; // 图像的宽度(以像素为单位)
  111. int height; // 图像的高度(以像素为单位)
  112. int bitperpix;      // 图像位数据中每个像素所占位数,最小16,因为无调色板传入
  113. int byteperline; // 图像位数据中每个扫描行所占的字节数
  114. BOOL bAlpha; // 图像位数据是否带ALPHA通道,如果为TRUE,则bitperpix必须=32,传入图象数据强制转换为COLORREF*类型,色值最高位为ALPHA值,即COLORREF col=0xaarrggbb
  115. };
  116. // 图像操作数据包
  117. struct _tagIMAGEPROCSTR
  118. {
  119. PROCCOMM comm; // 操作命令
  120. PROCRESULT result; // 执行的结果
  121. union {
  122. char cAnnData; // 联合,用于描述不同类型的数据,
  123. int iAnnData; // 是操作命令与执行结果的附加信息
  124. long lAnnData;
  125. float fAnnData;
  126. double dfAnnData;
  127. unsigned short  wAnnData;
  128. unsigned long  dwAnnData;
  129. void *pAnnData;
  130. unsigned int siAnnData[PPK_ANNEXINFOSIZE/sizeof(int)];
  131. unsigned char scAnnData[PPK_ANNEXINFOSIZE];
  132. } annexdata;
  133. HWND hParentWnd; // 父窗口句柄
  134. HINSTANCE hInst; // 图像处理模块实例句柄
  135. IMAGEPROCDATAINFO sImageInfo; // 源图像位数据信息
  136. unsigned long  *(*psLineAddr); // 源标准图像位数据中从0行到n-1行的每一行的首地址
  137. unsigned char *_psbdata; // 源标准图像位数据缓冲区首地址
  138. IMAGEPROCDATAINFO dImageInfo; // 目标图像位数据信息
  139. unsigned long  *(*pdLineAddr); // 目的标准图像位数据中从0行到n-1行的每一行的首地址
  140. unsigned char *_pdbdata; // 目的标准图像位数据缓冲区首地址
  141. // (注:目标图像内存块将由图像处理模块分配,并填写dImageInfo变量)
  142. IPDPCKSTATE state; // 数据包当前的状态
  143. int modify; // 修改标志
  144. };
  145. #endif //__GOL_PROC_INC