]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/richtext/richtexthtml.h
routing native events first to the wx class and only if skipped call native handler
[wxWidgets.git] / include / wx / richtext / richtexthtml.h
index 20c86ed60a8f485cc9bf76fa7f172e3f12a51002..dee3f7091f885f4e6604367652585459cda35e1f 100644 (file)
@@ -26,9 +26,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextHTMLHandler: public wxRichTextFileHandler
 {
     DECLARE_CLASS(wxRichTextHTMLHandler)
 public:
-    wxRichTextHTMLHandler(const wxString& name = wxT("HTML"), const wxString& ext = wxT("html"), int type = wxRICHTEXT_TYPE_HTML)
-        : wxRichTextFileHandler(name, ext, type), m_indent(0), m_font(false), m_list(false), m_is_ul(false)
-        { }
+    wxRichTextHTMLHandler(const wxString& name = wxT("HTML"), const wxString& ext = wxT("html"), int type = wxRICHTEXT_TYPE_HTML);
 
     /// Can we save using this handler?
     virtual bool CanSave() const { return true; }
@@ -64,6 +62,12 @@ public:
     void SetTempDir(const wxString& tempDir) { m_tempDir = tempDir; }
     const wxString& GetTempDir() const { return m_tempDir; }
 
+    /// Set and get mapping from point size to HTML font size. There should be 7 elements,
+    /// one for each HTML font size, each element specifying the maximum point size for that
+    /// HTML font size. E.g. 8, 10, 13, 17, 22, 29, 100
+    void SetFontSizeMapping(const wxArrayInt& fontSizeMapping) { m_fontSizeMapping = fontSizeMapping; }
+    wxArrayInt GetFontSizeMapping() const { return m_fontSizeMapping; }
+
 protected:
 
 // Implementation
@@ -73,20 +77,21 @@ protected:
     virtual bool DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& stream);
 
     /// Output character formatting
-    virtual void BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, const wxTextAttrEx& paraStyle, wxOutputStream& stream );
-    virtual void EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, const wxTextAttrEx& paraStyle, wxOutputStream& stream );
+    void BeginCharacterFormatting(const wxTextAttr& currentStyle, const wxTextAttr& thisStyle, const wxTextAttr& paraStyle, wxTextOutputStream& stream );
+    void EndCharacterFormatting(const wxTextAttr& currentStyle, const wxTextAttr& thisStyle, const wxTextAttr& paraStyle, wxTextOutputStream& stream );
 
     /// Output paragraph formatting
-    virtual void OutputParagraphFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream/*, bool start*/);
+    void BeginParagraphFormatting(const wxTextAttr& currentStyle, const wxTextAttr& thisStyle, wxTextOutputStream& stream);
+    void EndParagraphFormatting(const wxTextAttr& currentStyle, const wxTextAttr& thisStyle, wxTextOutputStream& stream);
 
-    /// Writes an image to its base64 equivalent, or to the memory filesystem, or to a file
-    void WriteImage(wxRichTextImage* image, wxOutputStream& stream);
+    /// Output font tag
+    void OutputFont(const wxTextAttr& style, wxTextOutputStream& stream);
 
-    /// Builds required indentation
-    void Indent(const wxTextAttrEx& thisStyle, wxTextOutputStream& str);
+    /// Closes lists to level (-1 means close all)
+    void CloseLists(int level, wxTextOutputStream& str);
 
-    /// Left indent
-    void LIndent(const wxTextAttrEx& thisStyle, wxTextOutputStream& str);
+    /// Writes an image to its base64 equivalent, or to the memory filesystem, or to a file
+    void WriteImage(wxRichTextImage* image, wxOutputStream& stream);
 
     /// Converts from pt to size property compatible height
     long PtToSize(long size);
@@ -98,34 +103,30 @@ protected:
     const wxChar* GetMimeType(int imageType);
 
     /// Gets the html equivalent of the specified value
-    wxString GetAlignment(const wxTextAttrEx& thisStyle);
+    wxString GetAlignment(const wxTextAttr& thisStyle);
 
     /// Generates   array for indentations
     wxString SymbolicIndent(long indent);
 
     /// Finds the html equivalent of the specified bullet
-    void TypeOfList(const wxTextAttrEx& thisStyle, wxString& tag);
-
-    /// Closes existings or Opens new tables for navigation to an item's horizontal position.
-    void NavigateToListPosition(const wxTextAttrEx& thisStyle, wxTextOutputStream& str);
+    int TypeOfList(const wxTextAttr& thisStyle, wxString& tag);
 #endif
 
 // Data members
 
+    wxRichTextBuffer* m_buffer;
+
     /// Indentation values of the table tags
     wxArrayInt      m_indents;
 
-    /// Horizontal position of the current table
-    long            m_indent;
+    /// Stack of list types: 0 = ol, 1 = ul
+    wxArrayInt      m_listTypes;
 
-    /// Is there any opened font tag
+    /// Is there any opened font tag?
     bool            m_font;
 
-    /// Is there any opened ul/ol tag
-    bool            m_list;
-
-    /// type of list, ul or ol?
-    bool            m_is_ul;
+    /// Are we in a table?
+    bool            m_inTable;
 
     /// A list of the image files or in-memory images created by the last operation.
     wxArrayString   m_imageLocations;
@@ -133,6 +134,9 @@ protected:
     /// A location for the temporary files
     wxString        m_tempDir;
 
+    /// A mapping from point size to HTML font size
+    wxArrayInt      m_fontSizeMapping;
+
     /// A counter for generating filenames
     static int      sm_fileCounter;
 };