memfile.h
上传用户:glass0516
上传日期:2010-01-11
资源大小:104k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. * RelayFax Open Source Project
  3. * Copyright 1996-2004 Alt-N Technologies, Ltd.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted only as authorized by the RelayFax Open 
  8. * Source License.  A copy of this license is available in file LICENSE 
  9. * in the top-level directory of the distribution.
  10. *
  11. * RelayFax is a registered trademark of Alt-N Technologies, Ltd.
  12. *
  13. * Individual files and/or contributed packages may be copyright by
  14. * other parties and subject to additional restrictions.
  15. *****************************************************************************/
  16. #ifndef MEMFILE_H
  17. #define MEMFILE_H
  18. // CMemFile - unnamed memory mapped file implementation
  19. class CMemFile
  20. {
  21. public:
  22. CMemFile();
  23. ~CMemFile();
  24. enum CMemFileContants {MaxSize = 1000000};
  25. void MarkDataPtr( bool bStart ) { if(bStart) {m_dataPtr = 0; m_dataLen = 0;} m_dataMark = bStart; };
  26. int ReadPage( TIFF* in, int nEncodeType );
  27. unsigned char* GetData( unsigned int nOffset ) { return m_buf + m_dataPtr + nOffset; };
  28. unsigned int GetDataLen( void ) { return m_dataLen; };
  29. void Clear() { m_off = 0; m_size = 0; m_dataPtr = 0; m_dataLen = 0; };
  30. void AddDataByte( unsigned char b);
  31. unsigned int Seek( unsigned int offset, int whence );
  32. int Read( void *buf, int size );
  33. int Write( void* buf, int size );
  34. unsigned int Size(void) { return m_size; };
  35. int Close(void);
  36. protected:
  37. unsigned char *m_buf;        /* Memory for each open buf */
  38. unsigned int m_off;    /* File pointer for each buf */
  39. unsigned int m_size;   /* Count of bytes allocated for each buf */
  40. HANDLE m_hMapping;
  41. unsigned int m_dataPtr;
  42. unsigned int m_dataLen;
  43. bool m_dataMark;
  44. };
  45. #endif //MEMFILE_H