Support unrar64.dll
[xy_vsfilter.git] / src / subtitles / TextFile.h
blob581234149695c855fa80b5232392317e2211295f
1 /*
2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
22 #pragma once
24 #include <afx.h>
26 class CTextFile : protected CStdioFile
28 public:
29 typedef enum {ASCII, UTF8, LE16, BE16, ANSI} enc;
31 private:
32 enc m_encoding, m_defaultencoding;
33 int m_offset;
35 public:
36 CTextFile(enc e = ASCII);
38 virtual bool Open(LPCTSTR lpszFileName);
39 virtual bool Save(LPCTSTR lpszFileName, enc e /*= ASCII*/);
41 void SetEncoding(enc e);
42 enc GetEncoding();
43 bool IsUnicode();
45 // CFile
46 virtual UINT Read(void* lpBuf, UINT nCount);
47 CString GetFilePath() const;
49 // CStdioFile
51 ULONGLONG GetPosition() const;
52 ULONGLONG GetLength() const;
53 ULONGLONG Seek(LONGLONG lOff, UINT nFrom);
55 void WriteString(LPCSTR lpsz/*CStringA str*/);
56 void WriteString(LPCWSTR lpsz/*CStringW str*/);
57 BOOL ReadString(CStringA& str);
58 BOOL ReadString(CStringW& str);
60 protected:
61 virtual bool ReopenAsText();
64 class CWebTextFile : public CTextFile
66 LONGLONG m_llMaxSize;
67 CString m_tempfn;
69 public:
70 CWebTextFile(CTextFile::enc e = ASCII, LONGLONG llMaxSize = 1024 * 1024);
72 bool Open(LPCTSTR lpszFileName);
73 bool Save(LPCTSTR lpszFileName, enc e /*= ASCII*/);
74 void Close();
77 CStringW AToW(const CStringA& str);
78 CStringA WToA(const CStringW& str);
79 CString AToT(const CStringA& str);
80 CString WToT(const CStringW& str);
81 CStringA TToA(const CString& str);
82 CStringW TToW(const CString& str);