]>
git.saurik.com Git - wxWidgets.git/blob - src/html/htmlfilter.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxHtmlFilter - input filter for translating into HTML format
4 // Author: Vaclav Slavik
5 // Copyright: (c) 1999 Vaclav Slavik
6 // Licence: wxWindows Licence
7 /////////////////////////////////////////////////////////////////////////////
11 #pragma implementation "htmlfilter.h"
14 #include "wx/wxprec.h"
25 #include "wx/html/htmlfilter.h"
26 #include "wx/html/htmlwin.h"
31 There is code for several default filters:
35 IMPLEMENT_ABSTRACT_CLASS(wxHtmlFilter
, wxObject
)
37 //--------------------------------------------------------------------------------
38 // wxHtmlFilterPlainText
39 // filter for text/plain or uknown
40 //--------------------------------------------------------------------------------
42 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterPlainText
, wxHtmlFilter
)
44 bool wxHtmlFilterPlainText::CanRead(const wxFSFile
& WXUNUSED(file
)) const
51 wxString
wxHtmlFilterPlainText::ReadFile(const wxFSFile
& file
) const
53 wxInputStream
*s
= file
.GetStream();
57 if (s
== NULL
) return wxEmptyString
;
58 src
= new char[s
-> GetSize()+1];
59 src
[s
-> GetSize()] = 0;
60 s
-> Read(src
, s
-> GetSize());
64 doc
.Replace(wxT("<"), wxT("<"), TRUE
);
65 doc
.Replace(wxT(">"), wxT(">"), TRUE
);
66 doc2
= wxT("<HTML><BODY><PRE>\n") + doc
+ wxT("\n</PRE></BODY></HTML>");
74 //--------------------------------------------------------------------------------
77 //--------------------------------------------------------------------------------
79 class wxHtmlFilterImage
: public wxHtmlFilter
81 DECLARE_DYNAMIC_CLASS(wxHtmlFilterImage
)
84 virtual bool CanRead(const wxFSFile
& file
) const;
85 virtual wxString
ReadFile(const wxFSFile
& file
) const;
88 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterImage
, wxHtmlFilter
)
92 bool wxHtmlFilterImage::CanRead(const wxFSFile
& file
) const
94 return (file
.GetMimeType().Left(6) == "image/");
99 wxString
wxHtmlFilterImage::ReadFile(const wxFSFile
& file
) const
101 return ("<HTML><BODY><IMG SRC=\"" + file
.GetLocation() + "\"></BODY></HTML>");
107 //--------------------------------------------------------------------------------
108 // wxHtmlFilterPlainText
109 // filter for text/plain or uknown
110 //--------------------------------------------------------------------------------
112 class wxHtmlFilterHTML
: public wxHtmlFilter
114 DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML
)
117 virtual bool CanRead(const wxFSFile
& file
) const;
118 virtual wxString
ReadFile(const wxFSFile
& file
) const;
122 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterHTML
, wxHtmlFilter
)
124 bool wxHtmlFilterHTML::CanRead(const wxFSFile
& file
) const
126 // return (file.GetMimeType() == "text/html");
127 // This is true in most case but some page can return:
128 // "text/html; char-encoding=...."
129 // So we use Find instead
130 return (file
.GetMimeType().Find(wxT("text/html")) == 0);
135 wxString
wxHtmlFilterHTML::ReadFile(const wxFSFile
& file
) const
137 wxInputStream
*s
= file
.GetStream();
141 if (s
== NULL
) return wxEmptyString
;
142 src
= new char[s
-> GetSize() + 1];
143 src
[s
-> GetSize()] = 0;
144 s
-> Read(src
, s
-> GetSize());
156 class wxHtmlFilterModule
: public wxModule
158 DECLARE_DYNAMIC_CLASS(wxHtmlFilterModule
)
161 virtual bool OnInit()
163 wxHtmlWindow::AddFilter(new wxHtmlFilterHTML
);
164 wxHtmlWindow::AddFilter(new wxHtmlFilterImage
);
167 virtual void OnExit() {}
170 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterModule
, wxModule
)