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

图形图象

开发平台:

Visual C++

  1. // TgaModule.h : main header file for the TGAMODULE DLL
  2. //
  3. #if !defined(AFX_TGAMODULE_H__C205ACC7_75B1_11D4_A32C_C7AEDE9F0627__INCLUDED_)
  4. #define AFX_TGAMODULE_H__C205ACC7_75B1_11D4_A32C_C7AEDE9F0627__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 "../public/gol_isee.h"
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CTgaModuleApp
  15. // See TgaModule.cpp for the implementation of this class
  16. //
  17. class CTgaModuleApp : public CWinApp
  18. {
  19. public:
  20. CTgaModuleApp();
  21. // Overrides
  22. // ClassWizard generated virtual function overrides
  23. //{{AFX_VIRTUAL(CTgaModuleApp)
  24. //}}AFX_VIRTUAL
  25. //{{AFX_MSG(CTgaModuleApp)
  26. // NOTE - the ClassWizard will add and remove member functions here.
  27. //    DO NOT EDIT what you see in these blocks of generated code !
  28. //}}AFX_MSG
  29. DECLARE_MESSAGE_MAP()
  30. };
  31. /////////////////////////////////////////////////////////////////////////////
  32. //**************TGA Header Declaration
  33. typedef struct {
  34. BYTE bID_Length;//附加信息长度
  35. BYTE bPalType;//调色板信息
  36. BYTE bImageType;//图象类型(0,1,2,3,9,10,11)
  37. WORD wPalFirstNdx;//调色板第一个索引值
  38. WORD wPalLength;//调色板索引数(以调色板单元为单位)
  39. BYTE bPalBits;//一个调色板单位位数(15,16,24,32)
  40. WORD wLeft;//图象左端坐标(基本无用)
  41. WORD wBottom;//图象底端坐标(基本无用)
  42. WORD wWidth;//图象宽度
  43. WORD wDepth;//图象长度
  44. BYTE bBits;//一个象素位数
  45. BYTE bDescriptor;//附加特性描述 
  46. }TGAHEADER;
  47. //**************TGA 图象类型 *************
  48. typedef enum{
  49. TGA_NULL=0,
  50. TGA_UNCPSPAL=1,
  51. TGA_UNCPSCOLOR=2,
  52. TGA_UNCPSGRAY=3,
  53. TGA_RLEPAL=9,
  54. TGA_RLECOLOR=10,
  55. TGA_RLEGRAY=11
  56. }TGATYPE;
  57. //**********TGA 图象数据存储类型(与bDescriptor对应位与) ***********
  58. typedef enum{
  59. TGA_HORZMIRROR=0x10,
  60. TGA_VERTMIRROR=0x20
  61. }TGAMIRROR;
  62. // 目标图位深度格式
  63. enum DESFORMAT
  64. {
  65. DF_NULL, // 无效的目标格式
  66. DF_16_555, // 16位555格式(也就是15位图像)
  67. DF_16_565, // 16位565格式
  68. DF_24, // 24位格式
  69. DF_32, // 32位格式
  70. DF_MAX // 有效值边界
  71. };
  72. // 接口函数声明 — 第一层,唯一与外界联系的接口
  73. int WINAPI AccessBMPModule(INFOSTR *pInfo);
  74. // 命令解释函数 — 第二层解释函数
  75. void _fnCMD_GETPROCTYPE(INFOSTR *pInfo);
  76. void _fnCMD_GETWRITERS(INFOSTR *pInfo);
  77. void _fnCMD_GETWRITERMESS(INFOSTR *pInfo);
  78. void _fnCMD_GETBUILDID(INFOSTR *pInfo);
  79. void _fnCMD_IS_VALID_FILE(INFOSTR *pInfo);
  80. void _fnCMD_GET_FILE_INFO(INFOSTR *pInfo);
  81. void _fnCMD_LOAD_FROM_FILE(INFOSTR *pInfo);
  82. void _fnCMD_SAVE_TO_FILE(INFOSTR *pInfo);
  83. void _fnCMD_IS_SUPPORT(INFOSTR *pInfo);
  84. void _fnCMD_RESIZE(INFOSTR *pInfo);
  85. // 内部执行函数 - 第三层执行函数
  86. int _Read(CFile& file, LPINFOSTR pInfo);
  87. int _from_8_PAL_read(LPINFOSTR pInfo, PBYTE lpSrc, const TGAHEADER& tgaHeader, const LPBYTE pPal);
  88. int _from_15_16_COLOR_read(LPINFOSTR pInfo, PBYTE lpSrc, const TGAHEADER& tgaHeader);
  89. int _from_24_COLOR_read(LPINFOSTR pInfo, PBYTE lpSrc, const TGAHEADER& tgaHeader);
  90. int _from_32_COLOR_read(LPINFOSTR pInfo, PBYTE lpSrc, const TGAHEADER& tgaHeader);
  91. int _from_8_RLE_PAL_read(LPINFOSTR pInfo, PBYTE lpSrc, const TGAHEADER& tgaHeader, const LPBYTE pPal);
  92. int DecodingLine(BYTE *pDest,BYTE* pSrc,int rleunit,int destlen);//返回pSrc实际解压字节数
  93. //destlen为解压目标长度
  94. //rleunit为解压单位(in Bytes)
  95. int _from_15_16_RLE_COLOR_read(LPINFOSTR pInfo,PBYTE lpSrc,const TGAHEADER& tgaHeader);
  96. int _from_24_RLE_COLOR_read(LPINFOSTR pInfo,PBYTE lpSrc,const TGAHEADER& tgaHeader);
  97. int _from_32_RLE_COLOR_read(LPINFOSTR pInfo,PBYTE lpSrc,const TGAHEADER& tgaHeader);
  98. DESFORMAT _get_desformat(LPINFOSTR pInfo);
  99. WORD _cnv_rgb_to_555(BYTE red, BYTE green, BYTE blue);
  100. void _cnv_555_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
  101. WORD _cnv_rgb_to_565(BYTE red, BYTE green, BYTE blue);
  102. void _cnv_565_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
  103. DWORD _cnv_rgb_to_888(BYTE red, BYTE green, BYTE blue);
  104. WORD _cnv_555_to_565(WORD w555);
  105. //{{AFX_INSERT_LOCATION}}
  106. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  107. #endif // !defined(AFX_TGAMODULE_H__C205ACC7_75B1_11D4_A32C_C7AEDE9F0627__INCLUDED_)