25#ifndef CHARTDATA_INPUT_STREAM_H_
26#define CHARTDATA_INPUT_STREAM_H_
30#include <wx/wfstream.h>
40class wxCompressedFFileInputStream :
public wxInputStream {
42 wxCompressedFFileInputStream(
const wxString &fileName);
43 virtual ~wxCompressedFFileInputStream();
45 virtual bool IsOk()
const {
46 return wxStreamBase::IsOk() && m_file->IsOpened();
48 bool IsSeekable()
const {
return false; }
51 size_t OnSysRead(
void *buffer,
size_t size);
52 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
53 wxFileOffset OnSysTell()
const;
61 uint8_t inbuf[BUFSIZ];
63 wxDECLARE_NO_COPY_CLASS(wxCompressedFFileInputStream);
67class ChartDataNonSeekableInputStream :
public wxInputStream {
69 ChartDataNonSeekableInputStream(
const wxString &fileName);
70 virtual ~ChartDataNonSeekableInputStream();
72 virtual bool IsOk()
const {
return m_stream->IsOk(); }
73 bool IsSeekable()
const {
return false; }
76 size_t OnSysRead(
void *buffer,
size_t size);
77 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
78 wxFileOffset OnSysTell()
const;
81 wxInputStream *m_stream;
83 wxDECLARE_NO_COPY_CLASS(ChartDataNonSeekableInputStream);
88class ChartDataInputStream :
public wxInputStream {
90 ChartDataInputStream(
const wxString &fileName);
91 virtual ~ChartDataInputStream();
93 virtual bool IsOk()
const {
return m_stream->IsOk(); }
94 bool IsSeekable()
const {
return m_stream->IsSeekable(); }
96 wxString TempFileName()
const {
return m_tempfilename; }
99 size_t OnSysRead(
void *buffer,
size_t size);
100 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
101 wxFileOffset OnSysTell()
const;
104 wxString m_tempfilename;
105 wxInputStream *m_stream;
107 wxDECLARE_NO_COPY_CLASS(ChartDataInputStream);
112typedef wxFFileInputStream ChartDataInputStream;
113typedef wxFFileInputStream ChartDataNonSeekableInputStream;
117bool DecompressXZFile(
const wxString &input_path,
const wxString &output_path);