ExtSkinItem.h
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:16k
源码类别:

界面编程

开发平台:

Visual C++

  1. // This is part of the Professional User Interface Suite library.
  2. // Copyright (C) 2001-2009 FOSS Software, Inc.
  3. // All rights reserved.
  4. //
  5. // http://www.prof-uis.com
  6. // mailto:support@prof-uis.com
  7. //
  8. // This source code can be used, modified and redistributed
  9. // under the terms of the license agreement that is included
  10. // in the Professional User Interface Suite package.
  11. //
  12. // Warranties and Disclaimers:
  13. // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
  14. // INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  16. // IN NO EVENT WILL FOSS SOFTWARE INC. BE LIABLE FOR ANY DIRECT,
  17. // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES,
  18. // INCLUDING DAMAGES FOR LOSS OF PROFITS, LOSS OR INACCURACY OF DATA,
  19. // INCURRED BY ANY PERSON FROM SUCH PERSON'S USAGE OF THIS SOFTWARE
  20. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  21. #if (!defined __PROF_SKIN_ITEM_H)
  22. #define __PROF_SKIN_ITEM_H
  23. #if (!defined __PROF_SKIN_H)
  24. #include <../ProfSkin/ProfSkin.h>
  25. #endif
  26. #if (!defined __PROF_SKIN_BITMAP_H)
  27. #include <../ProfSkin/ExtSkinBitmap.h>
  28. #endif
  29. // Versions
  30. #define __EXT_SKIN_SERIAL_FORMAT_NUMBER 1
  31. // enable XML support in ProfSkin
  32. #define __PROF_SKIN_XML_SUPPORT
  33. #if (defined __PROF_SKIN_XML_SUPPORT)
  34. #import "msxml.dll"
  35. // Elements and attributes names for XML documents
  36. #define __EXT_SKIN_ITEM L"SkinItem"
  37. #define __EXT_SKIN_ITEM_GLYPH L"Glyph"
  38. #define __EXT_SKIN_ITEM_FONT L"Font"
  39. #define __EXT_SKIN_ITEM_COLOR L"Color"
  40. #define __EXT_SKIN_ITEM_NAME L"Name"
  41. #define __EXT_SKIN_ITEM_COMMENT L"Comment"
  42. #define __EXT_SKIN_ITEM_VERSION L"Version"
  43. #define __EXT_SKIN_ITEM_ENABLED L"Enable"
  44. #define __EXT_SKIN_ITEM_GLYPH_TOP_PADDING L"Tp"
  45. #define __EXT_SKIN_ITEM_GLYPH_LEFT_PADDING L"Lp"
  46. #define __EXT_SKIN_ITEM_GLYPH_BOTTOM_PADDING L"Bp"
  47. #define __EXT_SKIN_ITEM_GLYPH_RIGHT_PADDING L"Rp"
  48. #define __EXT_SKIN_ITEM_GLYPH_CONTENT_TOP_PADDING L"Ctp"
  49. #define __EXT_SKIN_ITEM_GLYPH_CONTENT_LEFT_PADDING L"Clp"
  50. #define __EXT_SKIN_ITEM_GLYPH_CONTENT_BOTTOM_PADDING L"Cbp"
  51. #define __EXT_SKIN_ITEM_GLYPH_CONTENT_RIGHT_PADDING L"Crp"
  52. #define __EXT_SKIN_ITEM_GLYPH_LEFT_OFFSET L"Lo"
  53. #define __EXT_SKIN_ITEM_GLYPH_TOP_OFFSET L"To"
  54. #define __EXT_SKIN_ITEM_GLYPH_RIGHT_OFFSET L"Ro"
  55. #define __EXT_SKIN_ITEM_GLYPH_BOTTOM_OFFSET L"Bo"
  56. #define __EXT_SKIN_ITEM_GLYPH_ICON_INDENT L"IconIndent"
  57. #define __EXT_SKIN_ITEM_GLYPH_WIDTH L"Width"
  58. #define __EXT_SKIN_ITEM_GLYPH_HEIGHT L"Height"
  59. #define __EXT_SKIN_ITEM_GLYPH_SRC_BITMAP L"Image"
  60. #define __EXT_SKIN_ITEM_GLYPH_DRAW_METHOD L"DrawMethod"
  61. #define __EXT_SKIN_ITEM_GLYPH_DRAW_CENTER L"DrawCenter"
  62. #define __EXT_SKIN_ITEM_GLYPH_ENABLED L"Enable"
  63. #define __EXT_SKIN_ITEM_FONT_HEIGHT L"Height"
  64. #define __EXT_SKIN_ITEM_FONT_WIDTH L"Width"
  65. #define __EXT_SKIN_ITEM_FONT_ESCAPEMENT L"Escapement"
  66. #define __EXT_SKIN_ITEM_FONT_ORIENTATION L"Orientation"
  67. #define __EXT_SKIN_ITEM_FONT_WEIGHT L"Weight"
  68. #define __EXT_SKIN_ITEM_FONT_ITALIC L"Italic"
  69. #define __EXT_SKIN_ITEM_FONT_UNDERLINE L"Underline"
  70. #define __EXT_SKIN_ITEM_FONT_STRIKE_OUT L"StrikeOut"
  71. #define __EXT_SKIN_ITEM_FONT_CHAR_SET L"CharSet"
  72. #define __EXT_SKIN_ITEM_FONT_OUT_PRECISION L"OutPrecision"
  73. #define __EXT_SKIN_ITEM_FONT_CLIP_PRECISION L"ClipPrecision"
  74. #define __EXT_SKIN_ITEM_FONT_QUALITY L"Quality"
  75. #define __EXT_SKIN_ITEM_FONT_PITCH_AND_FAMILY L"PitchAndFamily"
  76. #define __EXT_SKIN_ITEM_FONT_FACE_NAME L"FaceName"
  77. //#define __EXT_SKIN_ITEM_FONT_SHADOW_OFFSET_X L"Sox"
  78. //#define __EXT_SKIN_ITEM_FONT_SHADOW_OFFSET_Y L"Soy"
  79. #define __EXT_SKIN_ITEM_COLOR_COLOR L"Color"
  80. #define __EXT_SKIN_ITEM_SCROLL_BAR_ROOT   L"ScrollBar"
  81. #define __EXT_SKIN_ITEM_SCROLL_BAR_ROOT_T _T("ScrollBar")
  82. #define __EXT_SKIN_ITEM_SCROLL_BAR_TYPE_ZOOM   L"Zoom"
  83. #define __EXT_SKIN_ITEM_SCROLL_BAR_TYPE_ZOOM_T _T("Zoom")
  84. #define __EXT_SKIN_ITEM_SCROLL_BAR_TYPE_CLASSIC   L"Classic"
  85. #define __EXT_SKIN_ITEM_SCROLL_BAR_TYPE_CLASSIC_T _T("Classic")
  86. #define __EXT_SKIN_ITEM_SCROLL_BAR_ORIENTATION_H   L"Horizontal"
  87. #define __EXT_SKIN_ITEM_SCROLL_BAR_ORIENTATION_H_T _T("Horizontal")
  88. #define __EXT_SKIN_ITEM_SCROLL_BAR_ORIENTATION_V   L"Vertical"
  89. #define __EXT_SKIN_ITEM_SCROLL_BAR_ORIENTATION_V_T _T("Vertical")
  90. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  91. #define __EXT_ZLIB_STREAM_ARCHIVE_SIGNATURE_SIZE 4
  92. #define __EXT_ZLIB_STREAM_ARCHIVE_BUFFER_ALLOC_SIZE 4096
  93. #define __EXT_ZLIB_STREAM_ARCHIVE_BUFFER_GROW_SIZE 4096
  94. class CExtSkinItemBase;
  95. class CExtSkinItem;
  96. class CExtSkin;
  97. class CExtSkinGlyph;
  98. class CExtSkinFont;
  99. class CExtSkinColor;
  100. class __PROF_SKIN_API CExtSkinItemBase : public CObject
  101. {
  102. public:
  103. DECLARE_DYNAMIC( CExtSkinItemBase );
  104. class __PROF_SKIN_API NumberFromString
  105. {
  106. public:
  107. static bool stat_GetValue( BSTR bstr, long & lValue );
  108. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, long & lValue );
  109. static bool stat_GetValue( BSTR bstr, unsigned long & ulValue );
  110. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, unsigned long & ulValue );
  111. static bool stat_GetValue( BSTR bstr, short & sValue );
  112. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, short & sValue );
  113. static bool stat_GetValue( BSTR bstr, unsigned short & usValue );
  114. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, unsigned short & usValue );
  115. static bool stat_GetValue( BSTR bstr, char & cValue );
  116. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, char & cValue );
  117. static bool stat_GetValue( BSTR bstr, unsigned char & ucValue );
  118. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, unsigned char & ucValue );
  119. protected:
  120. static bool stat_GetValue( __EXT_MFC_SAFE_LPCTSTR str, long lMinValue, long lMaxValue, long & lValue );
  121. };
  122. CExtSkinItemBase();
  123. CExtSkinItemBase( const CExtSkinItemBase & other );
  124. virtual ~CExtSkinItemBase();
  125. static const TCHAR g_strMessKey[];
  126. static const BYTE g_arrSignature[ __EXT_ZLIB_STREAM_ARCHIVE_SIGNATURE_SIZE ];
  127. virtual bool SerializeCompressedBlock(
  128. CArchive & ar,
  129. bool bEnableThrowExceptions = false,
  130. bool bUseCompression = true,
  131. __EXT_MFC_SAFE_LPCTSTR strMessKey = NULL
  132. );
  133. virtual void Serialize( CArchive & ar );
  134. bool SerializeFile(
  135. CFile & _file,
  136. bool bSave,
  137. bool bEnableThrowExceptions,
  138. bool bUseCompression = true,
  139. __EXT_MFC_SAFE_LPCTSTR strMessKey = NULL
  140. );
  141. bool SearchAndLoadSkinFile(
  142. __EXT_MFC_SAFE_LPCTSTR strFilePath,
  143. bool bEnableThrowExceptions,
  144. bool bUseCompression = true,
  145. __EXT_MFC_SAFE_LPCTSTR strMessKey = NULL
  146. );
  147. bool SerializeFile(
  148. __EXT_MFC_SAFE_LPCTSTR strFilePath,
  149. bool bSave,
  150. bool bEnableThrowExceptions,
  151. bool bUseCompression = true,
  152. __EXT_MFC_SAFE_LPCTSTR strMessKey = NULL
  153. );
  154. #if (defined __PROF_SKIN_XML_SUPPORT)
  155. virtual bool Load( IXMLElement * pElement );
  156. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  157. CExtSkinItemBase & operator = ( const CExtSkinItemBase & other );
  158. CExtSkinItem * GetParent();
  159. const CExtSkinItem * GetParent() const;
  160. virtual CExtSkinItem * GetTopLevel();
  161. const CExtSkinItem * GetTopLevel() const;
  162. CExtSkin * GetSkin();
  163. const CExtSkin * GetSkin() const;
  164. __EXT_MFC_SAFE_LPCTSTR NameGet() const;
  165. virtual bool NameSet( __EXT_MFC_SAFE_LPCTSTR strName );
  166. __EXT_MFC_SAFE_LPCTSTR CommentGet() const;
  167. void CommentSet( __EXT_MFC_SAFE_LPCTSTR strName );
  168. protected:
  169. virtual void _Clear();
  170. protected:
  171. CExtSkinItem * m_pParent;
  172. CExtSafeString m_strName;
  173. CExtSafeString m_strComment;
  174. }; // class CExtSkinItemBase
  175. class __PROF_SKIN_API CExtSkinGlyph : public CExtSkinItemBase
  176. {
  177. public:
  178. DECLARE_DYNAMIC( CExtSkinGlyph );
  179. CExtSkinGlyph();
  180. CExtSkinGlyph( const CExtSkinGlyph & other );
  181. virtual ~CExtSkinGlyph();
  182. virtual void Serialize( CArchive & ar );
  183. CExtSkinGlyph & operator = ( const CExtSkinGlyph & other );
  184. #if (defined __PROF_SKIN_XML_SUPPORT)
  185. virtual bool Load( IXMLElement * pElement );
  186. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  187. virtual bool Draw(
  188. HDC hDC,
  189. const RECT & rcDstDraw,
  190. const RECT & rcSrcDraw,
  191. bool bForceNoAlpha = false,
  192. BYTE nSCA = BYTE(0x0FF),
  193. COLORREF clrColorize = COLORREF(-1L)
  194. ) const;
  195. bool Draw(
  196. HDC hDC,
  197. const RECT & rcDstDraw,
  198. bool bForceNoAlpha = false,
  199. BYTE nSCA = BYTE(0x0FF),
  200. COLORREF clrColorize = COLORREF(-1L)
  201. ) const;
  202. virtual bool NameSet( __EXT_MFC_SAFE_LPCTSTR strName );
  203. bool IsEmpty() const;
  204.     CSize GetSize() const;
  205. long GetIconIndent() const;
  206. const CRect & GetPadding() const;
  207. const CRect & GetContentPadding() const;
  208. const CRect & GetOffset() const;
  209. const CExtBitmap & GetBitmap() const;
  210. CExtBitmap & GetBitmap();
  211. protected:
  212. virtual void _Clear();
  213. protected:
  214. bool m_bEnabled:1;
  215. bool m_bDrawCenter:1;
  216. LONG m_nIconIndent;
  217. CRect m_rcPadding;
  218. CRect m_rcContentPadding;
  219. CRect m_rcOffset;
  220. CSize m_Size;
  221. CExtSkinBitmap m_Bitmap;
  222. CExtBitmap::e_DrawMethod_t m_eDM;
  223. friend class CExtSkinItem;
  224. }; // class CExtSkinGlyph
  225. class __PROF_SKIN_API CExtSkinColor : public CExtSkinItemBase
  226. {
  227. public:
  228. DECLARE_DYNAMIC( CExtSkinColor );
  229. CExtSkinColor();
  230. CExtSkinColor( COLORREF clr );
  231. virtual ~CExtSkinColor();
  232. virtual void Serialize( CArchive & ar );
  233. #if (defined __PROF_SKIN_XML_SUPPORT)
  234. virtual bool Load( IXMLElement * pElement );
  235. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  236. virtual bool NameSet( __EXT_MFC_SAFE_LPCTSTR strName );
  237. operator COLORREF () const;
  238. CExtSkinColor & operator = ( const CExtSkinColor & other );
  239. CExtSkinColor & operator = ( COLORREF clr );
  240. bool IsHollow() const;
  241. protected:
  242. virtual void _Clear();
  243. protected:
  244. long m_nColor;
  245. friend class CExtSkinItem;
  246. }; // class CExtSkinColor
  247. class __PROF_SKIN_API CExtSkinFont
  248. : public CExtSkinItemBase
  249. , protected LOGFONT
  250. {
  251. public:
  252. DECLARE_DYNAMIC( CExtSkinFont );
  253. CExtSkinFont();
  254. CExtSkinFont( const LOGFONT & lf );
  255. CExtSkinFont( const CExtSkinFont & other );
  256. virtual ~CExtSkinFont();
  257. virtual void Serialize( CArchive & ar );
  258. #if (defined __PROF_SKIN_XML_SUPPORT)
  259. virtual bool Load( IXMLElement * pElement );
  260. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  261. virtual bool NameSet( __EXT_MFC_SAFE_LPCTSTR strName );
  262. operator LOGFONT & ();
  263. operator const LOGFONT & ();
  264. CExtSkinFont & operator = ( const LOGFONT & lf );
  265. CExtSkinFont & operator = ( const CExtSkinFont & other );
  266. HFONT CreateFont(
  267. LONG lfEscapement = 0
  268. ) const;
  269. bool CreateFont(
  270. CFont & _font,
  271. LONG lfEscapement = 0
  272. ) const;
  273. LOGFONT & LogFontGet();
  274. const LOGFONT & LogFontGet() const;
  275. // CPoint & ShadowOffsetGet();
  276. // const CPoint & ShadowOffsetGet() const;
  277. LPCTSTR GetHashCode() const;
  278. protected:
  279. virtual void _Clear();
  280. bool _IsComplete() const;
  281. protected:
  282. bool m_bHaveHeight:1;
  283. bool m_bHaveWidth:1;
  284. bool m_bHaveWeight:1;
  285. bool m_bHaveItalic:1;
  286. bool m_bHaveUnderline:1;
  287. bool m_bHaveStrikeOut:1;
  288. bool m_bHaveFaceName:1;
  289. // bool m_bHaveShadowOffset:1;
  290. bool m_bComplete:1;
  291. // CPoint m_ptShadowOffset;
  292. CExtSafeString m_strHashCode;
  293. friend class CExtSkinItem;
  294. }; // class CExtSkinFont
  295. class __PROF_SKIN_API CExtSkinItem : public CExtSkinItemBase
  296. {
  297. public:
  298. DECLARE_DYNAMIC( CExtSkinItem );
  299. CExtSkinItem();
  300. virtual ~CExtSkinItem();
  301. virtual void Serialize( CArchive & ar );
  302. CExtSkinItem * GetTopLevel();
  303. #if (defined __PROF_SKIN_XML_SUPPORT)
  304. virtual bool Load( __EXT_MFC_SAFE_LPCTSTR sXMLPath );
  305. virtual bool Load( IXMLElement * pElement );
  306. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  307. virtual bool NameSet( __EXT_MFC_SAFE_LPCTSTR strName );
  308. bool EnabledGet() const;
  309. void EnabledSet( bool bEnable );
  310. int NestedGetCount();
  311. CExtSkinItem * NestedGet( __EXT_MFC_SAFE_LPCTSTR strName );
  312. const CExtSkinItem * NestedGet( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  313. const CExtSkinItem & Nested( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  314. CExtSkinItem & Nested( __EXT_MFC_SAFE_LPCTSTR strName );
  315. const CExtSkinItem & operator [] ( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  316. CExtSkinItem & operator [] ( __EXT_MFC_SAFE_LPCTSTR strName );
  317. CExtSkinItem * NestedGetNext( POSITION & pos );
  318. bool NestedSet( CExtSkinItem * pItem );
  319. bool NestedRemove( __EXT_MFC_SAFE_LPCTSTR strName, CExtSkinItem ** ppItem = NULL );
  320. void NestedRemoveAll();
  321. int GlyphGetCount();
  322. CExtSkinGlyph * GlyphGet( __EXT_MFC_SAFE_LPCTSTR strName );
  323. const CExtSkinGlyph * GlyphGet( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  324. CExtSkinGlyph * GlyphGetDeep( __EXT_MFC_SAFE_LPCTSTR strName );
  325. const CExtSkinGlyph * GlyphGetDeep( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  326. const CExtSkinGlyph & Glyph( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  327. CExtSkinGlyph & Glyph( __EXT_MFC_SAFE_LPCTSTR strName );
  328. CExtSkinGlyph * GlyphGetNext( POSITION & pos );
  329. bool GlyphSet( CExtSkinGlyph * pGlyph );
  330. bool GlyphRemove( __EXT_MFC_SAFE_LPCTSTR strName, CExtSkinGlyph ** ppGlyph = NULL );
  331. void GlyphRemoveAll();
  332. int FontGetCount();
  333. CExtSkinFont * FontGet( __EXT_MFC_SAFE_LPCTSTR strName );
  334. const CExtSkinFont * FontGet( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  335. CExtSkinFont * FontGetDeep( __EXT_MFC_SAFE_LPCTSTR strName );
  336. const CExtSkinFont * FontGetDeep( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  337. const CExtSkinFont & Font( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  338. CExtSkinFont & Font( __EXT_MFC_SAFE_LPCTSTR strName );
  339. CExtSkinFont * FontGetNext( POSITION & pos );
  340. bool FontSet( CExtSkinFont * pFont );
  341. bool FontRemove( __EXT_MFC_SAFE_LPCTSTR strName, CExtSkinFont ** ppFont = NULL );
  342. void FontRemoveAll();
  343. int ColorGetCount();
  344. CExtSkinColor * ColorGet( __EXT_MFC_SAFE_LPCTSTR strName );
  345. const CExtSkinColor * ColorGet( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  346. CExtSkinColor * ColorGetDeep( __EXT_MFC_SAFE_LPCTSTR strName );
  347. const CExtSkinColor * ColorGetDeep( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  348. const CExtSkinColor & Color( __EXT_MFC_SAFE_LPCTSTR strName ) const;
  349. CExtSkinColor & Color( __EXT_MFC_SAFE_LPCTSTR strName );
  350. CExtSkinColor * ColorGetNext( POSITION & pos );
  351. bool ColorSet( CExtSkinColor * pColor );
  352. bool ColorRemove( __EXT_MFC_SAFE_LPCTSTR strName, CExtSkinColor ** ppColor = NULL );
  353. void ColorRemoveAll();
  354. protected:
  355. virtual void _Clear();
  356. #if (defined __PROF_SKIN_XML_SUPPORT)
  357. bool _LoadGlyphsCollection( IXMLElement * pElement );
  358. bool _LoadNestedCollection( IXMLElement * pElement );
  359. bool _LoadFonts( IXMLElement * pElement );
  360. bool _LoadColors( IXMLElement * pElement );
  361. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  362. protected:
  363. bool m_bEnabled:1;
  364. CExtSafeMapStringToPtr
  365. m_mapNestedItems,
  366. m_mapGlyphs,
  367. m_mapFonts,
  368. m_mapColors;
  369. }; // class CExtSkinItem
  370. class __PROF_SKIN_API CExtSkin : public CExtSkinItem
  371. {
  372. public:
  373. DECLARE_DYNAMIC( CExtSkin );
  374. CExtSkin();
  375. virtual ~CExtSkin();
  376. virtual void Serialize( CArchive & ar );
  377. #if (defined __PROF_SKIN_XML_SUPPORT)
  378. virtual bool Load( __EXT_MFC_SAFE_LPCTSTR sXMLPath );
  379. virtual bool Load( IXMLElement * pElement );
  380. #endif // (defined __PROF_SKIN_XML_SUPPORT)
  381. virtual void SynchronizeScrollBarElements(
  382. __EXT_MFC_SAFE_LPCTSTR strScrollBarTypeBranch,
  383. __EXT_MFC_SAFE_LPCTSTR strScrollBarOrientationBranch,
  384. CExtPaintManager::SCROLLBARSKINDATA * pSBSD
  385. );
  386. virtual void SynchronizeScrollBars();
  387. CExtPaintManager::SCROLLBARSKINDATA m_SBSD_ClassicH, m_SBSD_ClassicV, m_SBSD_ZoomH, m_SBSD_ZoomV;
  388. protected:
  389. virtual void _Clear();
  390. }; // class CExtSkin
  391. class __PROF_SKIN_API CExtZLibStreamCacheArchive : public CArchive
  392. {
  393. protected:
  394. CExtSafeString m_strMessKey;
  395. bool m_bUseCompression:1;
  396. CFile * m_pDataFile;
  397. LPBYTE m_pDataBuffer;
  398. static const BYTE g_arrSignatureDefault[ __EXT_ZLIB_STREAM_ARCHIVE_SIGNATURE_SIZE ];
  399. mutable BYTE m_arrSignature[ __EXT_ZLIB_STREAM_ARCHIVE_SIGNATURE_SIZE ];
  400. #pragma pack(push, 1)
  401. struct __PROF_SKIN_API StreamHeader_t
  402. {
  403. BYTE m_arrSignature[ __EXT_ZLIB_STREAM_ARCHIVE_SIGNATURE_SIZE ], m_nMessMode;
  404. DWORD m_dwDataSize;
  405. ULONG m_nCRC;
  406. };
  407. #pragma pack(pop)
  408. virtual bool OnMess(
  409. LPBYTE pBuffer,
  410. ULONG nLength,
  411. __EXT_MFC_SAFE_LPCTSTR strMessKey = _T("")
  412. ) const;
  413. public:
  414. CExtZLibStreamCacheArchive(
  415. CFile * pArchiveFile,
  416. UINT nArchiveMode,
  417. bool bUseCompression = true,
  418. __EXT_MFC_SAFE_LPCTSTR strMessKey = _T(""),
  419. const LPBYTE arrSignature = NULL,
  420. INT nArchiveBufferSize = 4096,
  421. LPVOID pArchiveBuffer = NULL
  422. );
  423. virtual ~CExtZLibStreamCacheArchive();
  424. virtual void Close();
  425. virtual void Abort();
  426. }; // class CExtZLibStreamCacheArchive
  427. #endif // __PROF_SKIN_ITEM_H