| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: html/htmprint.h
- // Purpose: interface of wxHtmlDCRenderer
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxHtmlDCRenderer
- This class can render HTML document into a specified area of a DC.
- You can use it in your own printing code, although use of wxHtmlEasyPrinting
- or wxHtmlPrintout is strongly recommended.
- @library{wxhtml}
- @category{html}
- */
- class wxHtmlDCRenderer : public wxObject
- {
- public:
- /**
- Constructor.
- */
- wxHtmlDCRenderer();
- /**
- Returns the width of the HTML text in pixels.
- This can be compared with the width parameter of SetSize() to check if
- the document being printed fits into the page boundary.
- @see GetTotalHeight()
- @since 2.9.0
- */
- int GetTotalWidth() const;
- /**
- Returns the height of the HTML text in pixels.
- This is important if area height (see wxHtmlDCRenderer::SetSize) is
- smaller that total height and thus the page cannot fit into it. In that
- case you're supposed to call Render() as long as its return value is
- smaller than GetTotalHeight()'s.
- @see GetTotalWidth()
- */
- int GetTotalHeight() const;
- /**
- Renders HTML text to the DC.
- @param x,y
- position of upper-left corner of printing rectangle (see SetSize()).
- @param known_pagebreaks
- @todo docme
- @param from
- y-coordinate of the very first visible cell.
- @param dont_render
- if @true then this method only returns y coordinate of the next page
- and does not output anything.
- @param to
- y-coordinate of the last visible cell.
- Returned value is y coordinate of first cell than didn't fit onto page.
- Use this value as from in next call to Render() in order to print
- multipages document.
- @note
- The following three methods @b must always be called before any call to
- Render(), in this order:
- - SetDC()
- - SetSize()
- - SetHtmlText()
- @note Render() changes the DC's user scale and does NOT restore it.
- */
- int Render(int x, int y, wxArrayInt& known_pagebreaks, int from = 0,
- int dont_render = false, int to = INT_MAX);
- /**
- Assign DC instance to the renderer.
- @a pixel_scale can be used when rendering to high-resolution DCs (e.g. printer)
- to adjust size of pixel metrics.
- (Many dimensions in HTML are given in pixels -- e.g. image sizes. 300x300
- image would be only one inch wide on typical printer. With pixel_scale = 3.0
- it would be 3 inches.)
- */
- void SetDC(wxDC* dc, double pixel_scale = 1.0);
- /**
- This function sets font sizes and faces.
- @param normal_face
- This is face name for normal (i.e. non-fixed) font.
- It can be either empty string (then the default face is chosen) or
- platform-specific face name. Examples are "helvetica" under Unix or
- "Times New Roman" under Windows.
- @param fixed_face
- The same thing for fixed face ( \<TT\>..\</TT\> )
- @param sizes
- This is an array of 7 items of int type.
- The values represent size of font with HTML size from -2 to +4
- ( \<FONT SIZE=-2\> to \<FONT SIZE=+4\> ).
- Default sizes are used if sizes is @NULL.
- Default font sizes are defined by constants wxHTML_FONT_SIZE_1,
- wxHTML_FONT_SIZE_2, ..., wxHTML_FONT_SIZE_7.
- Note that they differ among platforms. Default face names are empty strings.
- @see SetSize()
- */
- void SetFonts(const wxString& normal_face, const wxString& fixed_face,
- const int* sizes = NULL);
- /**
- Sets font sizes to be relative to the given size or the system
- default size; use either specified or default font
- @param size
- Point size of the default HTML text
- @param normal_face
- This is face name for normal (i.e. non-fixed) font. It can be
- either empty string (then the default face is chosen) or
- platform-specific face name. Examples are "helvetica" under
- Unix or "Times New Roman" under Windows.
- @param fixed_face
- The same thing for fixed face ( \<TT\>..\</TT\> )
- @see SetSize()
- */
- void SetStandardFonts(int size = -1,
- const wxString& normal_face = wxEmptyString,
- const wxString& fixed_face = wxEmptyString);
- /**
- Assign text to the renderer. Render() then draws the text onto DC.
- @param html
- HTML text. This is not a filename.
- @param basepath
- base directory (html string would be stored there if it was in file).
- It is used to determine path for loading images, for example.
- @param isdir
- @false if basepath is filename, @true if it is directory name
- (see wxFileSystem for detailed explanation).
- */
- void SetHtmlText(const wxString& html,
- const wxString& basepath = wxEmptyString,
- bool isdir = true);
- /**
- Set size of output rectangle, in pixels. Note that you @b can't change
- width of the rectangle between calls to Render() !
- (You can freely change height.)
- */
- void SetSize(int width, int height);
- };
- /**
- @class wxHtmlEasyPrinting
- This class provides very simple interface to printing architecture.
- It allows you to print HTML documents using only a few commands.
- @note
- Do not create this class on the stack only. You should create an instance
- on app startup and use this instance for all printing operations.
- The reason is that this class stores various settings in it.
- @library{wxhtml}
- @category{html,printing}
- */
- class wxHtmlEasyPrinting : public wxObject
- {
- public:
- /**
- Constructor.
- @param name
- Name of the printing object. Used by preview frames and setup dialogs.
- @param parentWindow
- pointer to the window that will own the preview frame and setup dialogs.
- May be @NULL.
- */
- wxHtmlEasyPrinting(const wxString& name = "Printing",
- wxWindow* parentWindow = NULL);
- /**
- Returns the current name being used for preview frames and setup
- dialogs.
- @since 2.8.11 / 2.9.1
- */
- const wxString& GetName() const;
- /**
- Returns a pointer to wxPageSetupDialogData instance used by this class.
- You can set its parameters (via SetXXXX methods).
- */
- wxPageSetupDialogData* GetPageSetupData();
- /**
- Gets the parent window for dialogs.
- */
- wxWindow* GetParentWindow() const;
- /**
- Returns pointer to wxPrintData instance used by this class.
- You can set its parameters (via SetXXXX methods).
- */
- wxPrintData* GetPrintData();
- /**
- Display page setup dialog and allows the user to modify settings.
- */
- void PageSetup();
- /**
- Preview HTML file.
- Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
- information about the kind of the error.
- */
- bool PreviewFile(const wxString& htmlfile);
- /**
- Preview HTML text (not file!).
- Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
- information about the kind of the error.
- @param htmltext
- HTML text.
- @param basepath
- base directory (html string would be stored there if it was in file).
- It is used to determine path for loading images, for example.
- */
- bool PreviewText(const wxString& htmltext,
- const wxString& basepath = wxEmptyString);
- /**
- Print HTML file.
- Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
- information about the kind of the error.
- */
- bool PrintFile(const wxString& htmlfile);
- /**
- Print HTML text (not file!).
- Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
- information about the kind of the error.
- @param htmltext
- HTML text.
- @param basepath
- base directory (html string would be stored there if it was in file).
- It is used to determine path for loading images, for example.
- */
- bool PrintText(const wxString& htmltext,
- const wxString& basepath = wxEmptyString);
- /**
- Sets fonts. See wxHtmlDCRenderer::SetFonts for detailed description.
- */
- void SetFonts(const wxString& normal_face, const wxString& fixed_face,
- const int* sizes = NULL);
-
- /**
- Sets the name used for preview frames and setup dialogs.
- @since 2.8.11 / 2.9.1
- */
- void SetName(const wxString& name);
- /**
- Sets default font sizes and/or default font size.
- See wxHtmlDCRenderer::SetStandardFonts for detailed description.
- @see SetFonts()
- */
- void SetStandardFonts(int size = -1,
- const wxString& normal_face = wxEmptyString,
- const wxString& fixed_face = wxEmptyString);
- /**
- Set page footer. The following macros can be used inside it:
- @@DATE@ is replaced by the current date in default format
- @@PAGENUM@ is replaced by page number
- @@PAGESCNT@ is replaced by total number of pages
- @@TIME@ is replaced by the current time in default format
- @@TITLE@ is replaced with the title of the document
- @param footer
- HTML text to be used as footer.
- @param pg
- one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
- */
- void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
- /**
- Set page header. The following macros can be used inside it:
- - @@DATE@ is replaced by the current date in default format
- - @@PAGENUM@ is replaced by page number
- - @@PAGESCNT@ is replaced by total number of pages
- - @@TIME@ is replaced by the current time in default format
- - @@TITLE@ is replaced with the title of the document
- @param header
- HTML text to be used as header.
- @param pg
- one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
- */
- void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
- /**
- Sets the parent window for dialogs.
- */
- void SetParentWindow(wxWindow* window);
- private:
- /**
- Check whether the document fits into the page area.
- This function is called by the base class OnPreparePrinting()
- implementation and by default checks whether the document fits into
- @a pageArea horizontally and warns the user if it does not, giving him
- the possibility to cancel printing in this case (presumably in order to
- change some layout options and retry it again).
- You may override it to either suppress this check if truncation of the
- HTML being printed is acceptable or, on the contrary, add more checks to
- it, e.g. for the fit in the vertical direction if the document should
- always appear on a single page.
- @return
- @true if wxHtmlPrintout should continue or @false to cancel
- printing.
- @since 2.9.0
- */
- virtual bool CheckFit(const wxSize& pageArea, const wxSize& docArea) const;
- };
- enum {
- wxPAGE_ODD,
- wxPAGE_EVEN,
- wxPAGE_ALL
- };
- /**
- @class wxHtmlPrintout
- This class serves as printout class for HTML documents.
- @library{wxhtml}
- @category{html,printing}
- */
- class wxHtmlPrintout : public wxPrintout
- {
- public:
- /**
- Constructor.
- */
- wxHtmlPrintout(const wxString& title = "Printout");
- /**
- Adds a filter to the static list of filters for wxHtmlPrintout.
- See wxHtmlFilter for further information.
- */
- static void AddFilter(wxHtmlFilter* filter);
- /**
- This function sets font sizes and faces. See wxHtmlWindow::SetFonts
- for detailed description.
- */
- void SetFonts(const wxString& normal_face, const wxString& fixed_face,
- const int* sizes = NULL);
- /**
- Set page footer. The following macros can be used inside it:
- - @@DATE@ is replaced by the current date in default format
- - @@PAGENUM@ is replaced by page number
- - @@PAGESCNT@ is replaced by total number of pages
- - @@TIME@ is replaced by the current time in default format
- - @@TITLE@ is replaced with the title of the document
- @param footer
- HTML text to be used as footer.
- @param pg
- one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
- */
- void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
- /**
- Set page header. The following macros can be used inside it:
- - @@DATE@ is replaced by the current date in default format
- - @@PAGENUM@ is replaced by page number
- - @@PAGESCNT@ is replaced by total number of pages
- - @@TIME@ is replaced by the current time in default format
- - @@TITLE@ is replaced with the title of the document
- @param header
- HTML text to be used as header.
- @param pg
- one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
- */
- void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
- /**
- Prepare the class for printing this HTML @b file.
- The file may be located on any virtual file system or it may be normal file.
- */
- void SetHtmlFile(const wxString& htmlfile);
- /**
- Prepare the class for printing this HTML text.
- @param html
- HTML text. (NOT file!)
- @param basepath
- base directory (html string would be stored there if it was in file).
- It is used to determine path for loading images, for example.
- @param isdir
- @false if basepath is filename, @true if it is directory name
- (see wxFileSystem for detailed explanation).
- */
- void SetHtmlText(const wxString& html,
- const wxString& basepath = wxEmptyString,
- bool isdir = true);
- /**
- Sets margins in millimeters.
- Defaults to 1 inch for margins and 0.5cm for space between text and header
- and/or footer.
- */
- void SetMargins(float top = 25.2, float bottom = 25.2,
- float left = 25.2,
- float right = 25.2,
- float spaces = 5);
- };
|