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

图形图象

开发平台:

Visual C++

  1. // PngModule.h : main header file for the PNGMODULE DLL
  2. //
  3. #if !defined(AFX_PNGMODULE_H__C03B0E6D_460A_11D4_8853_C6A14464AE19__INCLUDED_)
  4. #define AFX_PNGMODULE_H__C03B0E6D_460A_11D4_8853_C6A14464AE19__INCLUDED_
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. #ifndef __AFXWIN_H__
  9. #error include 'stdafx.h' before including this file for PCH
  10. #endif
  11. #include "resource.h" // main symbols
  12. #include "..publicgol_isee.h" // 此文件定义了接口数据包
  13. #include ".pngincpng.h"
  14. #define DIBSCANLINE_WIDTHBYTES(bits)    (((bits)+31)/32*4)
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CPngModuleApp
  17. // See PngModule.cpp for the implementation of this class
  18. //
  19. class CPngModuleApp : public CWinApp
  20. {
  21. public:
  22. CPngModuleApp();
  23. // Overrides
  24. // ClassWizard generated virtual function overrides
  25. //{{AFX_VIRTUAL(CPngModuleApp)
  26. //}}AFX_VIRTUAL
  27. //{{AFX_MSG(CPngModuleApp)
  28. // NOTE - the ClassWizard will add and remove member functions here.
  29. //    DO NOT EDIT what you see in these blocks of generated code !
  30. //}}AFX_MSG
  31. DECLARE_MESSAGE_MAP()
  32. };
  33. // 定义模块版本
  34. #define MODULE_BUILDID 1
  35. #define RWPROGRESSSIZE 100 // 总的进度条值,此值不能改动!
  36. struct _tagPNGINFOHEADER;
  37. typedef _tagPNGINFOHEADER PNGINFOHEADER;
  38. // 接口函数声明 — 第一层,唯一与外界联系的接口
  39. long WINAPI GetLong(void);
  40. int WINAPI AccessPNGModule(INFOSTR *pInfo);
  41. // 命令解释函数 — 第二层解释函数
  42. void _fnCMD_GETPROCTYPE(INFOSTR *pInfo);
  43. void _fnCMD_GETWRITERS(INFOSTR *pInfo);
  44. void _fnCMD_GETWRITERMESS(INFOSTR *pInfo);
  45. void _fnCMD_GETBUILDID(INFOSTR *pInfo);
  46. void _fnCMD_IS_VALID_FILE(INFOSTR *pInfo);
  47. void _fnCMD_GET_FILE_INFO(INFOSTR *pInfo);
  48. void _fnCMD_LOAD_FROM_FILE(INFOSTR *pInfo);
  49. void _fnCMD_SAVE_TO_FILE(INFOSTR *pInfo);
  50. void _fnCMD_IS_SUPPORT(INFOSTR *pInfo);
  51. void _fnCMD_RESIZE(INFOSTR *pInfo);
  52. // 内部执行函数 - 第三层执行函数.....
  53. BOOL Image24to32(INFOSTR *pInfo, PBYTE pImage, PBYTE* pLineAddr);
  54. BOOL Image24to16(INFOSTR *pInfo, PBYTE pImage, PBYTE* pLineAddr);
  55. BOOL Image24to24(INFOSTR *pInfo, PBYTE pImage, PBYTE* pLineAddr);
  56. void pngSetIHDR(png_structp pPng, png_infop pPngInfo, INFOSTR *pInfo);
  57. BOOL TransformImage16(INFOSTR *pInfo, PBYTE pngImage);
  58. BOOL TransformImage24(INFOSTR *pInfo, PBYTE pngImage);
  59. BOOL TransformImage32(INFOSTR* pInfo, PBYTE pngImage);
  60. BOOL TransformImage1_4_8(INFOSTR* pInfo, PBYTE pngImage);
  61. //PNG用户自定义读写函数及错误处理函数
  62. static void PngErrorHandler(png_structp png_ptr, png_const_charp message);
  63. static void PngRead4Win32(png_structp png_ptr, png_bytep data, png_size_t length);
  64. static void PngWrite4Win32(png_structp png_ptr, png_bytep data, png_size_t length);
  65. static void PngFlush4Win32(png_structp png_ptr);
  66. //PNGDLL中所需的全局变量和结构定义
  67. /* PNG图象信息结构 */
  68. struct _tagPNGINFOHEADER
  69. {
  70. DWORD Width;
  71. DWORD Height;
  72. int color_type; 
  73. int bit_depth;
  74. int interlace_type;
  75. int filter_type;
  76. int compression_type;
  77. int number_passes;
  78. };
  79. /////////////////////////////////////////////////////////////////////////////
  80. //{{AFX_INSERT_LOCATION}}
  81. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  82. #endif // !defined(AFX_PNGMODULE_H__C03B0E6D_460A_11D4_8853_C6A14464AE19__INCLUDED_)