8fbca5cb70
No real changes, just clean up sources by removing trailing spaces from all the non-generated files. This should hopefully avoid future commits mixing significant changes with insignificant whitespace ones.
513 lines
16 KiB
Objective-C
513 lines
16 KiB
Objective-C
/////////////////////////////////////////////////////////////////////////////
|
|
// 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.
|
|
|
|
If the height of the area used with this renderer (see
|
|
wxHtmlDCRenderer::SetSize) is smaller that total height, the renderer
|
|
will produce more than one page of output.
|
|
|
|
@see GetTotalWidth()
|
|
*/
|
|
int GetTotalHeight() const;
|
|
|
|
/**
|
|
Finds the next page break after the specified (vertical) position.
|
|
|
|
An example of using this method:
|
|
|
|
@code
|
|
std::vector<int> pages;
|
|
for ( int pos = 0; pos != wxNOT_FOUND; pos = renderer.FindNextPageBreak(pos) )
|
|
{
|
|
pages.push_back(pos);
|
|
}
|
|
|
|
// "pages" vector now contains all page break positions and, in
|
|
// particular, its size() returns the number of pages
|
|
@endcode
|
|
|
|
@param pos Absolute position of the last page break. For the initial
|
|
call of this function, it should be 0 and for the subsequent ones
|
|
it should be the previous return value.
|
|
@return Position of the next page break or @c wxNOT_FOUND if there are
|
|
no more of them.
|
|
|
|
@since 3.1.2
|
|
*/
|
|
int FindNextPageBreak(int pos) const;
|
|
|
|
/**
|
|
Renders HTML text to the DC.
|
|
|
|
When using multi-page documents, FindNextPageBreak() can be used to
|
|
find the values for @a from and @a to, which should be the consecutive
|
|
page breaks returned by that function.
|
|
|
|
@param x,y
|
|
position of upper-left corner of printing rectangle (see SetSize()).
|
|
@param from
|
|
y-coordinate of the very first visible cell.
|
|
@param to
|
|
y-coordinate of the last visible cell or @c INT_MAX to use the full
|
|
page height.
|
|
|
|
@note
|
|
The following three methods @b must always be called before any call to
|
|
Render(), in this order:
|
|
- SetDC()
|
|
- SetSize()
|
|
- SetHtmlText()
|
|
*/
|
|
void Render(int x, int y, int from = 0, 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);
|
|
|
|
/**
|
|
Associate the given HTML contents to the renderer.
|
|
|
|
This is similar to SetHtmlText(), but is more efficient as the text can
|
|
be parsed only once, using wxHtmlParser::Parse(), and then passed to
|
|
wxHtmlDCRenderer multiple times or already reused for other purposes.
|
|
|
|
Note that @a cell will be modified (e.g. laid out) by this function.
|
|
|
|
@since 3.1.2
|
|
*/
|
|
void SetHtmlCell(wxHtmlContainerCell& cell);
|
|
|
|
/**
|
|
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);
|
|
|
|
/**
|
|
Controls when the print dialog should be shown.
|
|
|
|
@see SetPromptMode()
|
|
|
|
@since 3.1.2
|
|
*/
|
|
enum PromptMode
|
|
{
|
|
Prompt_Never, //!< Do not show the print dialog.
|
|
Prompt_Once, //!< Show the print dialog only the first time.
|
|
Prompt_Always //!< Show the print dialog every time (default value).
|
|
};
|
|
|
|
/**
|
|
Enable or disable showing the dialog before printing.
|
|
|
|
The prompt mode determines the value of the @c prompt parameter passed
|
|
to wxPrinter::Print() when it is called by this class.
|
|
|
|
Default prompt mode value is Prompt_Always.
|
|
|
|
@since 3.1.2
|
|
*/
|
|
void SetPromptMode(PromptMode promptMode);
|
|
|
|
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);
|
|
|
|
/**
|
|
Sets margins from wxPageSetupDialogData.
|
|
|
|
@since 3.1.0
|
|
*/
|
|
void SetMargins(const wxPageSetupDialogData& pageSetupData);
|
|
};
|
|
|