ximajas.h
上传用户:pass2008
上传日期:2021-07-05
资源大小:3299k
文件大小:3k
源码类别:

Internet/IE编程

开发平台:

Visual C++

  1. /*
  2.  * File: ximajas.h
  3.  * Purpose: Jasper Image Class Loader and Writer
  4.  */
  5. /* ==========================================================
  6.  * CxImageJAS (c) 12/Apr/2003 Davide Pizzolato - www.xdp.it
  7.  * For conditions of distribution and use, see copyright notice in ximage.h
  8.  *
  9.  * based on JasPer Copyright (c) 2001-2003 Michael David Adams - All rights reserved.
  10.  * ==========================================================
  11.  */
  12. #if !defined(__ximaJAS_h)
  13. #define __ximaJAS_h
  14. #include "ximage.h"
  15. #if CXIMAGE_SUPPORT_JASPER
  16. #include "../jasper/include/jasper/jasper.h"
  17. class CxImageJAS: public CxImage
  18. {
  19. public:
  20. CxImageJAS(): CxImage((DWORD)0) {} // <vho> cast to DWORD
  21. // bool Load(const TCHAR * imageFileName){ return CxImage::Load(imageFileName,0);}
  22. // bool Save(const TCHAR * imageFileName){ return CxImage::Save(imageFileName,0);}
  23. bool Decode(CxFile * hFile, DWORD imagetype = 0);
  24. bool Decode(FILE *hFile, DWORD imagetype = 0) { CxIOFile file(hFile); return Decode(&file,imagetype); }
  25. #if CXIMAGE_SUPPORT_ENCODE
  26. bool Encode(CxFile * hFile, DWORD imagetype = 0);
  27. bool Encode(FILE *hFile, DWORD imagetype = 0) { CxIOFile file(hFile); return Encode(&file,imagetype); }
  28. #endif // CXIMAGE_SUPPORT_ENCODE
  29. protected:
  30. class CxFileJas
  31. {
  32. public:
  33. CxFileJas(CxFile* pFile,jas_stream_t *stream)
  34. {
  35. if (stream->obj_) jas_free(stream->obj_);
  36. stream->obj_ = pFile;
  37. // <vho> - cannot set the stream->ops_->functions here,
  38. // because this overwrites a static structure in the Jasper library.
  39. // This structure is used by Jasper for internal operations too, e.g. tempfile.
  40. // However the ops_ pointer in the stream can be overwritten.
  41. //stream->ops_->close_ = JasClose;
  42. //stream->ops_->read_  = JasRead;
  43. //stream->ops_->seek_  = JasSeek;
  44. //stream->ops_->write_ = JasWrite;
  45. jas_stream_CxFile.close_ = JasClose;
  46. jas_stream_CxFile.read_  = JasRead;
  47. jas_stream_CxFile.seek_  = JasSeek;
  48. jas_stream_CxFile.write_ = JasWrite;
  49. stream->ops_ = &jas_stream_CxFile;
  50. // <vho> - end
  51. }
  52. static int JasRead(jas_stream_obj_t *obj, char *buf, int cnt)
  53. { return ((CxFile*)obj)->Read(buf,1,cnt); }
  54. static int JasWrite(jas_stream_obj_t *obj, char *buf, int cnt)
  55. { return ((CxFile*)obj)->Write(buf,1,cnt); }
  56. static long JasSeek(jas_stream_obj_t *obj, long offset, int origin)
  57. { return ((CxFile*)obj)->Seek(offset,origin); }
  58. static int JasClose(jas_stream_obj_t * /*obj*/)
  59. { return 1; }
  60. // <vho>
  61. private:
  62. jas_stream_ops_t jas_stream_CxFile;
  63. // <vho> - end
  64. };
  65. };
  66. #endif
  67. #endif