]>
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"
26 #include "wx/html/htmlfilter.h"
27 #include "wx/html/htmlwin.h"
32 There is code for several default filters:
36 IMPLEMENT_ABSTRACT_CLASS(wxHtmlFilter
, wxObject
)
38 //--------------------------------------------------------------------------------
39 // wxHtmlFilterPlainText
40 // filter for text/plain or uknown
41 //--------------------------------------------------------------------------------
43 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterPlainText
, wxHtmlFilter
)
45 bool wxHtmlFilterPlainText::CanRead(const wxFSFile
& file
) const
52 wxString
wxHtmlFilterPlainText::ReadFile(const wxFSFile
& file
) const
54 wxInputStream
*s
= file
.GetStream();
58 if (s
== NULL
) return wxEmptyString
;
59 src
= new char[s
-> GetSize()+1];
60 src
[s
-> GetSize()] = 0;
61 s
-> Read(src
, s
-> GetSize());
65 doc
.Replace("<", "<", TRUE
);
66 doc
.Replace(">", ">", TRUE
);
67 doc2
= "<HTML><BODY><PRE>\n" + doc
+ "\n</PRE></BODY></HTML>";
75 //--------------------------------------------------------------------------------
78 //--------------------------------------------------------------------------------
80 class wxHtmlFilterImage
: public wxHtmlFilter
82 DECLARE_DYNAMIC_CLASS(wxHtmlFilterImage
)
85 virtual bool CanRead(const wxFSFile
& file
) const;
86 virtual wxString
ReadFile(const wxFSFile
& file
) const;
89 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterImage
, wxHtmlFilter
)
93 bool wxHtmlFilterImage::CanRead(const wxFSFile
& file
) const
95 return (file
.GetMimeType().Left(6) == "image/");
100 wxString
wxHtmlFilterImage::ReadFile(const wxFSFile
& file
) const
102 return ("<HTML><BODY><IMG SRC=\"" + file
.GetLocation() + "\"></BODY></HTML>");
108 //--------------------------------------------------------------------------------
109 // wxHtmlFilterPlainText
110 // filter for text/plain or uknown
111 //--------------------------------------------------------------------------------
113 class wxHtmlFilterHTML
: public wxHtmlFilter
115 DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML
)
118 virtual bool CanRead(const wxFSFile
& file
) const;
119 virtual wxString
ReadFile(const wxFSFile
& file
) const;
123 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterHTML
, wxHtmlFilter
)
125 bool wxHtmlFilterHTML::CanRead(const wxFSFile
& file
) const
127 // return (file.GetMimeType() == "text/html");
128 // This is true in most case but some page can return:
129 // "text/html; char-encoding=...."
130 // So we use Find instead
131 return (file
.GetMimeType().Find(_T("text/html")) == 0);
136 wxString
wxHtmlFilterHTML::ReadFile(const wxFSFile
& file
) const
138 wxInputStream
*s
= file
.GetStream();
142 if (s
== NULL
) return wxEmptyString
;
143 src
= (char*) malloc(s
-> GetSize() + 1);
144 src
[s
-> GetSize()] = 0;
145 s
-> Read(src
, s
-> GetSize());
157 class wxHtmlFilterModule
: public wxModule
159 DECLARE_DYNAMIC_CLASS(wxHtmlFilterModule
)
162 virtual bool OnInit()
164 wxHtmlWindow::AddFilter(new wxHtmlFilterHTML
);
165 wxHtmlWindow::AddFilter(new wxHtmlFilterImage
);
168 virtual void OnExit() {}
171 IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterModule
, wxModule
)