00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __CHMINPUTSTREAM_H_
00023 #define __CHMINPUTSTREAM_H_
00024
00025 #include <wx/stream.h>
00026 #include <chmfile.h>
00027
00028
00035
00036 class CHMInputStream : public wxInputStream
00037 {
00038 public:
00046 CHMInputStream(const wxString& archive, const wxString& file);
00047
00049 virtual size_t GetSize() const;
00050
00052 virtual bool Eof() const;
00053
00061 static CHMFile* GetCache();
00068 static void Cleanup();
00069
00070 protected:
00077 virtual size_t OnSysRead(void *buffer, size_t bufsize);
00078
00085 #ifdef __WXMSW__
00086 virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode);
00087 #else
00088 virtual off_t OnSysSeek(off_t seek, wxSeekMode mode);
00089 #endif
00090
00095 #ifdef __WXMSW__
00096 virtual wxFileOffset OnSysTell() const { return _currPos; }
00097 #else
00098 virtual off_t OnSysTell() const { return _currPos; }
00099 #endif
00100
00101 private:
00103 bool Init(const wxString& archive);
00104
00105
00106 private:
00107 static CHMFile *_archiveCache;
00108 off_t _currPos;
00109 chmUnitInfo _ui;
00110 static wxString _path;
00111 };
00112
00113 #endif // __CHMINPUTSTREAM_H_
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127