2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: html/htmprint.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxHtmlDCRenderer
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxHtmlDCRenderer
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-10-25 16:44:52 -04:00
|
|
|
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
|
2008-03-08 08:52:38 -05:00
|
|
|
or wxHtmlPrintout is strongly recommended.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxhtml}
|
2008-10-25 16:44:52 -04:00
|
|
|
@category{html}
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxHtmlDCRenderer : public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructor.
|
|
|
|
*/
|
|
|
|
wxHtmlDCRenderer();
|
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Returns the height of the HTML text. 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.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
int GetTotalHeight();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Renders HTML text to the DC.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param x,y
|
2008-11-03 06:57:07 -05:00
|
|
|
position of upper-left corner of printing rectangle (see SetSize()).
|
|
|
|
@param known_pagebreaks
|
|
|
|
@todo docme
|
2008-03-08 09:43:31 -05:00
|
|
|
@param from
|
2008-11-03 06:57:07 -05:00
|
|
|
y-coordinate of the very first visible cell.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param dont_render
|
2008-03-09 08:33:59 -04:00
|
|
|
if @true then this method only returns y coordinate of the next page
|
2008-11-03 06:57:07 -05:00
|
|
|
and does not output anything.
|
|
|
|
@param to
|
|
|
|
y-coordinate of the last visible cell.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
@warning
|
|
|
|
The Following three methods @b must always be called before any call to
|
|
|
|
Render() (preferably in this order):
|
|
|
|
- SetDC()
|
|
|
|
- SetSize()
|
|
|
|
- SetHtmlText()
|
|
|
|
<b>Render() changes the DC's user scale and does NOT restore it.</b>
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-29 11:34:31 -04:00
|
|
|
int Render(int x, int y, wxArrayInt& known_pagebreaks, int from = 0,
|
2008-11-09 11:46:52 -05:00
|
|
|
int dont_render = false, int to = INT_MAX);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Assign DC instance to the renderer.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@a pixel_scale can be used when rendering to high-resolution DCs (e.g. printer)
|
2008-03-08 08:52:38 -05:00
|
|
|
to adjust size of pixel metrics.
|
2008-10-25 16:44:52 -04:00
|
|
|
(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.)
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
void SetDC(wxDC* dc, double pixel_scale = 1.0);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Sets fonts. See wxHtmlWindow::SetFonts for detailed description.
|
|
|
|
|
|
|
|
@see SetSize()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-29 11:34:31 -04:00
|
|
|
void SetFonts(const wxString& normal_face, const wxString& fixed_face,
|
|
|
|
const int* sizes = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Assign text to the renderer. Render() then draws the text onto DC.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param html
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text. This is not a filename.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param basepath
|
2008-10-25 16:44:52 -04:00
|
|
|
base directory (html string would be stored there if it was in file).
|
|
|
|
It is used to determine path for loading images, for example.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param isdir
|
2008-03-09 08:33:59 -04:00
|
|
|
@false if basepath is filename, @true if it is directory name
|
2008-10-25 16:44:52 -04:00
|
|
|
(see wxFileSystem for detailed explanation).
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetHtmlText(const wxString& html,
|
|
|
|
const wxString& basepath = wxEmptyString,
|
2008-03-09 08:33:59 -04:00
|
|
|
bool isdir = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Set size of output rectangle, in pixels. Note that you @b can't change
|
|
|
|
width of the rectangle between calls to wxHtmlDCRenderer::Render!
|
|
|
|
(You can freely change height.)
|
|
|
|
*/
|
|
|
|
void SetSize(int width, int height);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxHtmlEasyPrinting
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-10-25 16:44:52 -04:00
|
|
|
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.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxhtml}
|
2008-10-25 16:44:52 -04:00
|
|
|
@category{html,printing}
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxHtmlEasyPrinting : public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructor.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param name
|
2008-03-09 08:33:59 -04:00
|
|
|
Name of the printing object. Used by preview frames and setup dialogs.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param parentWindow
|
2008-03-09 08:33:59 -04:00
|
|
|
pointer to the window that will own the preview frame and setup dialogs.
|
2008-10-25 16:44:52 -04:00
|
|
|
May be @NULL.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxHtmlEasyPrinting(const wxString& name = "Printing",
|
2008-03-09 08:33:59 -04:00
|
|
|
wxWindow* parentWindow = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Returns a pointer to wxPageSetupDialogData instance used by this class.
|
|
|
|
You can set its parameters (via SetXXXX methods).
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxPageSetupDialogData* GetPageSetupData();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Gets the parent window for dialogs.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxWindow* GetParentWindow() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Returns pointer to wxPrintData instance used by this class.
|
|
|
|
You can set its parameters (via SetXXXX methods).
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxPrintData* GetPrintData();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Display page setup dialog and allows the user to modify settings.
|
|
|
|
*/
|
|
|
|
void PageSetup();
|
|
|
|
|
|
|
|
/**
|
2008-03-08 09:43:31 -05:00
|
|
|
Preview HTML file.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
|
|
|
Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
|
2008-03-08 08:52:38 -05:00
|
|
|
information about the kind of the error.
|
|
|
|
*/
|
|
|
|
bool PreviewFile(const wxString& htmlfile);
|
|
|
|
|
|
|
|
/**
|
2008-03-08 09:43:31 -05:00
|
|
|
Preview HTML text (not file!).
|
2008-10-25 16:44:52 -04:00
|
|
|
|
|
|
|
Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
|
2008-03-08 08:52:38 -05:00
|
|
|
information about the kind of the error.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param htmltext
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param basepath
|
2008-10-25 16:44:52 -04:00
|
|
|
base directory (html string would be stored there if it was in file).
|
|
|
|
It is used to determine path for loading images, for example.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool PreviewText(const wxString& htmltext,
|
|
|
|
const wxString& basepath = wxEmptyString);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Print HTML file.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
|
|
|
Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
|
2008-03-08 08:52:38 -05:00
|
|
|
information about the kind of the error.
|
|
|
|
*/
|
|
|
|
bool PrintFile(const wxString& htmlfile);
|
|
|
|
|
|
|
|
/**
|
2008-03-08 09:43:31 -05:00
|
|
|
Print HTML text (not file!).
|
2008-10-25 16:44:52 -04:00
|
|
|
|
|
|
|
Returns @false in case of error -- call wxPrinter::GetLastError to get detailed
|
2008-03-08 08:52:38 -05:00
|
|
|
information about the kind of the error.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param htmltext
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param basepath
|
2008-10-25 16:44:52 -04:00
|
|
|
base directory (html string would be stored there if it was in file).
|
|
|
|
It is used to determine path for loading images, for example.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool PrintText(const wxString& htmltext,
|
|
|
|
const wxString& basepath = wxEmptyString);
|
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Sets fonts. See wxHtmlWindow::SetFonts for detailed description.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-29 11:34:31 -04:00
|
|
|
void SetFonts(const wxString& normal_face, const wxString& fixed_face,
|
|
|
|
const int* sizes = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Set page footer. The following macros can be used inside it:
|
2008-08-25 19:25:51 -04:00
|
|
|
@@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
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param footer
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text to be used as footer.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pg
|
2008-03-09 08:33:59 -04:00
|
|
|
one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set page header. The following macros can be used inside it:
|
2008-10-25 16:44:52 -04:00
|
|
|
- @@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
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param header
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text to be used as header.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pg
|
2008-03-09 08:33:59 -04:00
|
|
|
one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the parent window for dialogs.
|
|
|
|
*/
|
|
|
|
void SetParentWindow(wxWindow* window);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxHtmlPrintout
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
This class serves as printout class for HTML documents.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxhtml}
|
2008-10-25 16:44:52 -04:00
|
|
|
@category{html,printing}
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxHtmlPrintout : public wxPrintout
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructor.
|
|
|
|
*/
|
|
|
|
wxHtmlPrintout(const wxString& title = "Printout");
|
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Adds a filter to the static list of filters for wxHtmlPrintout.
|
|
|
|
See wxHtmlFilter for further information.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
static void AddFilter(wxHtmlFilter* filter);
|
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Sets fonts. See wxHtmlWindow::SetFonts for detailed description.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-29 11:34:31 -04:00
|
|
|
void SetFonts(const wxString& normal_face, const wxString& fixed_face,
|
|
|
|
const int* sizes = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Set page footer. The following macros can be used inside it:
|
2008-10-25 16:44:52 -04:00
|
|
|
- @@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
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param footer
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text to be used as footer.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pg
|
2008-03-09 08:33:59 -04:00
|
|
|
one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set page header. The following macros can be used inside it:
|
2008-10-25 16:44:52 -04:00
|
|
|
- @@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
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param header
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text to be used as header.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param pg
|
2008-03-09 08:33:59 -04:00
|
|
|
one of wxPAGE_ODD, wxPAGE_EVEN and wxPAGE_ALL constants.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
|
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
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.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetHtmlFile(const wxString& htmlfile);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Prepare the class for printing this HTML text.
|
2008-10-25 16:44:52 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param html
|
2008-03-09 08:33:59 -04:00
|
|
|
HTML text. (NOT file!)
|
2008-03-08 09:43:31 -05:00
|
|
|
@param basepath
|
2008-10-25 16:44:52 -04:00
|
|
|
base directory (html string would be stored there if it was in file).
|
|
|
|
It is used to determine path for loading images, for example.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param isdir
|
2008-03-09 08:33:59 -04:00
|
|
|
@false if basepath is filename, @true if it is directory name
|
2008-10-25 16:44:52 -04:00
|
|
|
(see wxFileSystem for detailed explanation).
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetHtmlText(const wxString& html,
|
|
|
|
const wxString& basepath = wxEmptyString,
|
2008-03-09 08:33:59 -04:00
|
|
|
bool isdir = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-10-25 16:44:52 -04:00
|
|
|
Sets margins in millimeters.
|
|
|
|
Defaults to 1 inch for margins and 0.5cm for space between text and header
|
|
|
|
and/or footer.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetMargins(float top = 25.2, float bottom = 25.2,
|
|
|
|
float left = 25.2,
|
|
|
|
float right = 25.2,
|
|
|
|
float spaces = 5);
|
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|