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

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. BmpModule.h - ISee图像浏览器—BMP图像读写模块定义文件
  3.           
  4.     版权所有(C) 2000 VCHelp-coPathway-ISee workgroup member
  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. E-Mail:yzfree@sina.com
  22. 文件版本:
  23. Beta  1.5
  24. Build 01209
  25. Date  2000-12-9
  26. ********************************************************************/
  27. #if !defined(AFX_BMPMODULE_H__C03B0E25_460A_11D4_8853_C6A14464AE19__INCLUDED_)
  28. #define AFX_BMPMODULE_H__C03B0E25_460A_11D4_8853_C6A14464AE19__INCLUDED_
  29. #if _MSC_VER > 1000
  30. #pragma once
  31. #endif // _MSC_VER > 1000
  32. #ifndef __AFXWIN_H__
  33. #error include 'stdafx.h' before including this file for PCH
  34. #endif
  35. #include "resource.h" // main symbols
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CBmpModuleApp
  38. // See BmpModule.cpp for the implementation of this class
  39. //
  40. class CBmpModuleApp : public CWinApp
  41. {
  42. public:
  43. CBmpModuleApp();
  44. // Overrides
  45. // ClassWizard generated virtual function overrides
  46. //{{AFX_VIRTUAL(CBmpModuleApp)
  47. //}}AFX_VIRTUAL
  48. //{{AFX_MSG(CBmpModuleApp)
  49. // NOTE - the ClassWizard will add and remove member functions here.
  50. //    DO NOT EDIT what you see in these blocks of generated code !
  51. //}}AFX_MSG
  52. DECLARE_MESSAGE_MAP()
  53. };
  54. // 定义模块版本
  55. #define MODULE_BUILDID 15
  56. #define DIBSCANLINE_WIDTHBYTES(bits)    (((bits)+31)/32*4)
  57. #define DIB_HEADER_MARKER ((WORD)('M'<<8)|'B')
  58. // 目标图位深度格式
  59. enum DESFORMAT
  60. {
  61. DF_NULL, // 无效的目标格式
  62. DF_16_555, // 16位555格式(也就是15位图像)
  63. DF_16_565, // 16位565格式
  64. DF_24, // 24位格式
  65. DF_32, // 32位格式
  66. DF_MAX // 有效值边界
  67. };
  68. // 源图位深度格式
  69. enum SOUFORMAT
  70. {
  71. SF_NULL, // 无效的源图
  72. SF_1, // 1位BMP
  73. SF_4, // 4位BMP
  74. SF_4_RLE, // 4位RLE压缩的BMP
  75. SF_8, // 8位BMP
  76. SF_8_RLE, // 8位RLE压缩的BMP
  77. SF_16_555, // 16位555格式的BMP
  78. SF_16_565, // 16位565格式的BMP
  79. SF_24, // 24位BMP
  80. SF_32, // 32位BMP
  81. SF_MAX // 边界值
  82. };
  83. // 接口函数声明 — 第一层,唯一与外界联系的接口
  84. int WINAPI AccessBMPModule(INFOSTR *pInfo);
  85. // 命令解释函数 — 第二层解释函数
  86. void _fnCMD_GETPROCTYPE(INFOSTR *pInfo);
  87. void _fnCMD_GETWRITERS(INFOSTR *pInfo);
  88. void _fnCMD_GETWRITERMESS(INFOSTR *pInfo);
  89. void _fnCMD_GETBUILDID(INFOSTR *pInfo);
  90. void _fnCMD_IS_VALID_FILE(INFOSTR *pInfo);
  91. void _fnCMD_GET_FILE_INFO(INFOSTR *pInfo);
  92. void _fnCMD_LOAD_FROM_FILE(INFOSTR *pInfo);
  93. void _fnCMD_SAVE_TO_FILE(INFOSTR *pInfo);
  94. void _fnCMD_IS_SUPPORT(INFOSTR *pInfo);
  95. void _fnCMD_RESIZE(INFOSTR *pInfo);
  96. // 内部执行函数 - 第三层执行函数
  97. int _Read(CFile& file, LPINFOSTR pInfo);
  98. int _from_1_read(LPINFOSTR pInfo, PBYTE lpSou, int imgorg, RGBQUAD *lpPalette);
  99. int _from_4_read(LPINFOSTR pInfo, PBYTE lpSouData, int imgorg, RGBQUAD *lpPalette);
  100. int _from_4_RLE_read(LPINFOSTR pInfo, PBYTE lpSouData, int imgorg, RGBQUAD *lpPalette);
  101. int _from_8_read(LPINFOSTR pInfo, PBYTE lpSouData, int imgorg, RGBQUAD *lpPalette);
  102. int _from_8_RLE_read(LPINFOSTR pInfo, PBYTE lpSouData, int imgorg, RGBQUAD *lpPalette);
  103. int _from_16_555_read(LPINFOSTR pInfo, PBYTE lpSou, int imgorg);
  104. int _from_16_565_read(LPINFOSTR pInfo, PBYTE lpSou, int imgorg);
  105. int _from_24_read(LPINFOSTR pInfo, PBYTE lpSou, int imgorg);
  106. int _from_32_read(LPINFOSTR pInfo, PBYTE lpSou, int imgorg);
  107. // 保存图像命令的入口参数annexdata.siAnnData[]变量的含意解释:
  108. // [0] — 位深度,可以是1、4、8、16(555)、24、32(888)这六个值
  109. // 中的一个,不能是其他值。另:不能存储为RLE格式
  110. // [1] — 是否使用原始调色板。0 — 表示使用,1 — 表示使用当前
  111. // 计算机缺省调色板。(注:只有当原始图像是BMP,并且位
  112. // 深度与目标位深度相同时,0值才会有意义)
  113. int _Save(CFile& file, LPINFOSTR pInfo);
  114. BOOL IsFileExist(char *lpFileName);
  115. int _get_palette_size(int bitcount);
  116. SOUFORMAT _get_souformat(LPBITMAPINFO pInfo);
  117. DESFORMAT _get_desformat(LPINFOSTR pInfo);
  118. WORD _cnv_rgb_to_555(BYTE red, BYTE green, BYTE blue);
  119. void _cnv_555_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
  120. WORD _cnv_rgb_to_565(BYTE red, BYTE green, BYTE blue);
  121. void _cnv_565_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
  122. DWORD _cnv_rgb_to_888(BYTE red, BYTE green, BYTE blue);
  123. PBYTE _write2buff4RLE(int mark, int num, BYTE pix, PBYTE lpDesData);
  124. PBYTE _write2buff8RLE(int mark, int num, BYTE pix, PBYTE lpDesData);
  125. /////////////////////////////////////////////////////////////////////////////
  126. //{{AFX_INSERT_LOCATION}}
  127. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  128. #endif // !defined(AFX_BMPMODULE_H__C03B0E25_460A_11D4_8853_C6A14464AE19__INCLUDED_)