X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2dec67617f3cf1e2b724d16176c5dc20e8d97471..9e1fc0e42822fdf1159582f1b73cde0c7d15bc92:/include/wx/richtext/richtexthtml.h?ds=sidebyside diff --git a/include/wx/richtext/richtexthtml.h b/include/wx/richtext/richtexthtml.h index 8bca5ff644..20c86ed60a 100644 --- a/include/wx/richtext/richtexthtml.h +++ b/include/wx/richtext/richtexthtml.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/richtext/richedithtml.h +// Name: wx/richtext/richtexthtml.h // Purpose: HTML I/O for wxRichTextCtrl // Author: Julian Smart // Modified by: @@ -22,12 +22,12 @@ * wxRichTextHTMLHandler */ -class WXDLLIMPEXP_ADV wxRichTextHTMLHandler: public wxRichTextFileHandler +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) + : wxRichTextFileHandler(name, ext, type), m_indent(0), m_font(false), m_list(false), m_is_ul(false) { } /// Can we save using this handler? @@ -39,65 +39,102 @@ public: /// Can we handle this filename (if using files)? By default, checks the extension. virtual bool CanHandle(const wxString& filename) const; +// Accessors and operations unique to this handler + + /// Set and get the list of image locations generated by the last operation + void SetTemporaryImageLocations(const wxArrayString& locations) { m_imageLocations = locations; } + const wxArrayString& GetTemporaryImageLocations() const { return m_imageLocations; } + + /// Clear the image locations generated by the last operation + void ClearTemporaryImageLocations() { m_imageLocations.Clear(); } + + /// Delete the in-memory or temporary files generated by the last operation + bool DeleteTemporaryImages(); + + /// Delete the in-memory or temporary files generated by the last operation. This is a static + /// function that can be used to delete the saved locations from an earlier operation, + /// for example after the user has viewed the HTML file. + static bool DeleteTemporaryImages(int flags, const wxArrayString& imageLocations); + + /// Reset the file counter, in case, for example, the same names are required each time + static void SetFileCounter(int counter) { sm_fileCounter = counter; } + + /// Set and get the directory for storing temporary files. If empty, the system + /// temporary directory will be used. + void SetTempDir(const wxString& tempDir) { m_tempDir = tempDir; } + const wxString& GetTempDir() const { return m_tempDir; } + protected: +// Implementation + #if wxUSE_STREAMS virtual bool DoLoadFile(wxRichTextBuffer *buffer, wxInputStream& stream); virtual bool DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& stream); -#endif /// Output character formatting - virtual void BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, wxOutputStream& stream ); - virtual void EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream ); - - /// Output paragraph 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 ); + + /// Output paragraph formatting virtual void OutputParagraphFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream/*, bool start*/); - - /// Converts an image to its base64 equivalent - void Image_to_Base64(wxRichTextImage* image, wxOutputStream& stream); - - /// Builds required indentation - void Indent( const wxTextAttrEx& thisStyle, wxTextOutputStream& str ); - - /// Left indent - void LIndent( const wxTextAttrEx& thisStyle, wxTextOutputStream& str ); - - /// Converts from pt to size property compatible height - long Pt_To_Size(long size); - - /// Typical base64 encoder - wxChar* b64enc( unsigned char* input, size_t in_len ); - - /// Gets the mime type of the given wxBITMAP_TYPE - wxChar* GetMimeType(int imageType); - - /// Gets the html equivalent of the specified value - wxString GetAlignment( const wxTextAttrEx& 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 ); - - /// Indentation values of the table tags - wxArrayInt m_indents; - - /// Horizontal position of the current table - long m_indent; - - /// 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; + /// Writes an image to its base64 equivalent, or to the memory filesystem, or to a file + void WriteImage(wxRichTextImage* image, wxOutputStream& stream); + + /// Builds required indentation + void Indent(const wxTextAttrEx& thisStyle, wxTextOutputStream& str); + + /// Left indent + void LIndent(const wxTextAttrEx& thisStyle, wxTextOutputStream& str); + + /// Converts from pt to size property compatible height + long PtToSize(long size); + + /// Typical base64 encoder + wxChar* b64enc(unsigned char* input, size_t in_len); + + /// Gets the mime type of the given wxBITMAP_TYPE + const wxChar* GetMimeType(int imageType); + + /// Gets the html equivalent of the specified value + wxString GetAlignment(const wxTextAttrEx& 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); +#endif + +// Data members + + /// Indentation values of the table tags + wxArrayInt m_indents; + + /// Horizontal position of the current table + long m_indent; + + /// 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; + + /// A list of the image files or in-memory images created by the last operation. + wxArrayString m_imageLocations; + + /// A location for the temporary files + wxString m_tempDir; + + /// A counter for generating filenames + static int sm_fileCounter; }; #endif