#ifndef _WX_HTMLPARS_H_
#define _WX_HTMLPARS_H_
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlpars.h"
#endif
#include "wx/html/htmltag.h"
#include "wx/filesys.h"
+#include "wx/hash.h"
+#include "wx/fontenc.h"
class WXDLLEXPORT wxMBConv;
class WXDLLEXPORT wxHtmlParser;
class wxHtmlTextPieces;
class wxHtmlParserState;
+
+enum wxHtmlURLType
+{
+ wxHTML_URL_PAGE,
+ wxHTML_URL_IMAGE,
+ wxHTML_URL_OTHER
+};
+
// This class handles generic parsing of HTML document : it scans
// the document and divide it into blocks of tags (where one block
// consists of starting and ending tag and of text between these
wxFileSystem* GetFS() const { return m_FS; }
+ // Opens file if the parser is allowed to open given URL (may be forbidden
+ // for security reasons)
+ virtual wxFSFile *OpenURL(wxHtmlURLType type, const wxString& url) const;
+
// You can simply call this method when you need parsed output.
// This method does these things:
// 1. call InitParser(source);
virtual void InitParser(const wxString& source);
// This must be called after Parse().
virtual void DoneParser();
+
+ // May be called during parsing to immediately return from Parse().
+ virtual void StopParsing() { m_stopParsing = TRUE; }
// Parses the m_Source from begin_pos to end_pos-1.
// (in noparams version it parses whole m_Source)
// Restores parser's state from stack or returns FALSE if the stack is
// empty
virtual bool RestoreState();
+
+ // Parses HTML string 'markup' and extracts charset info from <meta> tag
+ // if present. Returns empty string if the tag is missing.
+ // For wxHTML's internal use.
+ static wxString ExtractCharsetInformation(const wxString& markup);
protected:
// DOM structure
// entity parse
wxHtmlEntitiesParser *m_entitiesParser;
+
+ // flag indicating that the parser should stop
+ bool m_stopParsing;
};
// Parses entities in input and replaces them with respective characters
// (with respect to output encoding)
wxString Parse(const wxString& input);
-
-protected:
+
+ // Returns character for given entity or 0 if the enity is unknown
wxChar GetEntityChar(const wxString& entity);
+
+ // Returns character that represents given Unicode code
+#if wxUSE_UNICODE
+ wxChar GetCharForCode(unsigned code) { return (wxChar)code; }
+#else
wxChar GetCharForCode(unsigned code);
+#endif
+protected:
#if wxUSE_WCHAR_T && !wxUSE_UNICODE
wxMBConv *m_conv;
wxFontEncoding m_encoding;