File: richtexthtml.h

package info (click to toggle)
wxwidgets3.0 3.0.2%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 120,808 kB
  • ctags: 118,010
  • sloc: cpp: 889,420; makefile: 52,980; ansic: 21,933; sh: 5,603; python: 2,935; xml: 1,534; perl: 281
file content (144 lines) | stat: -rw-r--r-- 5,145 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/////////////////////////////////////////////////////////////////////////////
// Name:        richtext/richtexthtml.h
// Purpose:     interface of wxRichTextHTMLHandler
// Author:      wxWidgets team
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

/**
    @class wxRichTextHTMLHandler

    Handles HTML output (only) for wxRichTextCtrl content.

    The most flexible way to use this class is to create a temporary object and call
    its functions directly, rather than use wxRichTextBuffer::SaveFile or
    wxRichTextCtrl::SaveFile.

    Image handling requires a little extra work from the application, to choose an
    appropriate image format for the target HTML viewer and to clean up the temporary
    images later.
    If you are planning to load the HTML into a standard web browser, you can
    specify the handler flag wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_BASE64 (the default)
    and no extra work is required: the images will be written with the HTML.

    However, if you want wxHTML compatibility, you will need to use
    @c wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_MEMORY or
    @c wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_FILES.

    In this case, you must either call wxRichTextHTMLHandler::DeleteTemporaryImages
    before the next load operation, or you must store the image locations and
    delete them yourself when appropriate.

    You can call wxRichTextHTMLHandler::GetTemporaryImageLocations to
    get the array of temporary image names.


    @section richtexthtmlhandler_flags Handler flags

    The following flags can be used with this handler, via the handler's SetFlags()
    function or the buffer or control's SetHandlerFlags() function:

    - wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_MEMORY
      Images are saved to the memory filesystem: suitable for showing wxHTML windows.
    - wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_FILES
      Images are saved to temporary files: suitable for showing in wxHTML windows.
    - wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_BASE64
      Images are written with the HTML files in Base 64 format: suitable for showing
      in web browsers.
    - wxRICHTEXT_HANDLER_NO_HEADER_FOOTER
      Don't include header and footer tags (HTML, HEAD, BODY), so that the HTML
      can be used as part of a larger document.
    - wxRICHTEXT_HANDLER_USE_CSS
      Use CSS where possible, otherwise use workarounds that will show in wxHtmlWindow.

    @library{wxrichtext}
    @category{richtext}
*/
class wxRichTextHTMLHandler : public wxRichTextFileHandler
{
public:
    /**
        Constructor.
    */
    wxRichTextHTMLHandler(const wxString& name = "HTML",
                          const wxString& ext = "html",
                          int type = wxRICHTEXT_TYPE_HTML);

    /**
        Clears the image locations generated by the last operation.
    */
    void ClearTemporaryImageLocations();

    /**
        Deletes 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);

    /**
        Returns the mapping for converting point sizes to HTML font sizes.
    */
    wxArrayInt GetFontSizeMapping() const;

    /**
        Returns the directory used to store temporary image files.
    */
    const wxString& GetTempDir() const;

    /**
        Returns the image locations for the last operation.
    */
    const wxArrayString& GetTemporaryImageLocations() const;

    /**
        Reset the file counter, in case, for example, the same names are required each
        time.
    */
    static void SetFileCounter(int counter);

    /**
        Sets the mapping for converting point sizes to HTML font sizes.

        There should be 7 elements, one for each HTML font size, each element
        specifying the maximum point size for that HTML font size.
        For example:
        @code
        wxArrayInt fontSizeMapping;
        fontSizeMapping.Add(7);
        fontSizeMapping.Add(9);
        fontSizeMapping.Add(11);
        fontSizeMapping.Add(12);
        fontSizeMapping.Add(14);
        fontSizeMapping.Add(22);
        fontSizeMapping.Add(100);

        htmlHandler.SetFontSizeMapping(fontSizeMapping);
        @endcode
    */
    void SetFontSizeMapping(const wxArrayInt& fontSizeMapping);

    /**
        Sets the directory for storing temporary files.
        If empty, the system temporary directory will be used.
    */
    void SetTempDir(const wxString& tempDir);

    /**
        Sets the list of image locations generated by the last operation.
    */
    void SetTemporaryImageLocations(const wxArrayString& locations);

protected:
    /**
        Saves the buffer content to the HTML stream.
    */
    virtual bool DoSaveFile(wxRichTextBuffer* buffer, wxOutputStream& stream);
};