X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a5ae8241de5d07fc10d8fa6ba9c0faa1457521b8..d3fc1755150fd63134568285f2433544fa51af53:/include/wx/html/htmprint.h diff --git a/include/wx/html/htmprint.h b/include/wx/html/htmprint.h index 8ee2742637..7c80088e5e 100644 --- a/include/wx/html/htmprint.h +++ b/include/wx/html/htmprint.h @@ -4,14 +4,14 @@ // Author: Vaclav Slavik // Created: 25/09/99 // RCS-ID: $Id$ -// Copyright: (c) +// Copyright: (c) Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_HTMPRINT_H_ #define _WX_HTMPRINT_H_ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "htmprint.h" #endif @@ -21,6 +21,7 @@ #include "wx/html/htmlcell.h" #include "wx/html/winpars.h" +#include "wx/html/htmlfilt.h" #include "wx/print.h" #include "wx/printdlg.h" @@ -29,11 +30,11 @@ //-------------------------------------------------------------------------------- // wxHtmlDCRenderer -// This class is capable of rendering HTML into specified +// This class is capable of rendering HTML into specified // portion of DC //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlDCRenderer : public wxObject +class WXDLLIMPEXP_HTML wxHtmlDCRenderer : public wxObject { public: wxHtmlDCRenderer(); @@ -51,13 +52,19 @@ public: // Sets the text to be displayed. // Basepath is base directory (html string would be stored there if it was in // file). It is used to determine path for loading images, for example. - // isdir is FALSE if basepath is filename, TRUE if it is directory name + // isdir is 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); + void SetHtmlText(const wxString& html, const wxString& basepath = wxEmptyString, bool isdir = true); // Sets fonts to be used when displaying HTML page. (if size null then default sizes used). void SetFonts(wxString normal_face, 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 + void SetStandardFonts(int size = -1, + const wxString& normal_face = wxEmptyString, + const wxString& fixed_face = wxEmptyString); + // [x,y] is position of upper-left corner of printing rectangle (see SetSize) // from is y-coordinate of the very first visible cell // to is y-coordinate of the next following page break, if any @@ -74,7 +81,8 @@ public: // set the same pagebreak twice. // // CAUTION! Render() changes DC's user scale and does NOT restore it! - int Render(int x, int y, int from = 0, int dont_render = FALSE, int to = INT_MAX, + int Render(int x, int y, int from = 0, int dont_render = FALSE, + int maxHeight = INT_MAX, int *known_pagebreaks = NULL, int number_of_pages = 0); // returns total height of the html document @@ -105,24 +113,24 @@ enum { //-------------------------------------------------------------------------------- // wxHtmlPrintout -// This class is derived from standard wxWindows printout class +// This class is derived from standard wxWidgets printout class // and is used to print HTML documents. //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlPrintout : public wxPrintout +class WXDLLIMPEXP_HTML wxHtmlPrintout : public wxPrintout { public: wxHtmlPrintout(const wxString& title = wxT("Printout")); ~wxHtmlPrintout(); - void SetHtmlText(const wxString& html, const wxString &basepath = wxEmptyString, bool isdir = TRUE); + void SetHtmlText(const wxString& html, const wxString &basepath = wxEmptyString, bool isdir = true); // prepares the class for printing this html document. // Must be called before using the class, in fact just after constructor // // basepath is base directory (html string would be stored there if it was in // file). It is used to determine path for loading images, for example. - // isdir is FALSE if basepath is filename, TRUE if it is directory name + // isdir is false if basepath is filename, true if it is directory name // (see wxFileSystem for detailed explanation) void SetHtmlFile(const wxString &htmlfile); @@ -141,16 +149,29 @@ public: // Sets fonts to be used when displaying HTML page. (if size null then default sizes used). void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL); - void SetMargins(float top = 25.2, float bottom = 25.2, float left = 25.2, float right = 25.2, + // Sets font sizes to be relative to the given size or the system + // default size; use either specified or default font + void SetStandardFonts(int size = -1, + const wxString& normal_face = wxEmptyString, + const wxString& fixed_face = wxEmptyString); + + void SetMargins(float top = 25.2, float bottom = 25.2, float left = 25.2, float right = 25.2, float spaces = 5); // sets margins in milimeters. Defaults to 1 inch for margins and 0.5cm for space // between text and header and/or footer - // wxPrintout stuff: + // wxPrintout stuff: bool OnPrintPage(int page); bool HasPage(int page); void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo); bool OnBeginDocument(int startPage, int endPage); + void OnPreparePrinting(); + + // Adds input filter + static void AddFilter(wxHtmlFilter *filter); + + // Cleanup + static void CleanUpStatics(); private: @@ -174,6 +195,9 @@ private: wxHtmlDCRenderer *m_Renderer, *m_RendererHdr; float m_MarginTop, m_MarginBottom, m_MarginLeft, m_MarginRight, m_MarginSpace; + // list of HTML filters + static wxList m_Filters; + DECLARE_NO_COPY_CLASS(wxHtmlPrintout) }; @@ -183,17 +207,17 @@ private: //-------------------------------------------------------------------------------- // wxHtmlEasyPrinting -// This class provides very simple interface to printing +// This class provides very simple interface to printing // architecture. It allows you to print HTML documents only -// with very few commands. +// with very few commands. // // Note : do not create this class on stack only. -// You should create an instance on app startup and +// You should create an instance on app startup and // use this instance for all printing. Why? The class // stores page&printer settings in it. //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlEasyPrinting : public wxObject +class WXDLLIMPEXP_HTML wxHtmlEasyPrinting : public wxObject { public: wxHtmlEasyPrinting(const wxString& name = wxT("Printing"), wxWindow *parentWindow = NULL); @@ -209,7 +233,6 @@ public: bool PrintText(const wxString &htmltext, const wxString& basepath = wxEmptyString); // Print file / html-text w/o preview - void PrinterSetup(); void PageSetup(); // pop up printer or page setup dialog @@ -226,9 +249,15 @@ public: void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = 0); // Sets fonts to be used when displaying HTML page. (if size null then default sizes used) - wxPrintData *GetPrintData() {return m_PrintData;} + // Sets font sizes to be relative to the given size or the system + // default size; use either specified or default font + void SetStandardFonts(int size = -1, + const wxString& normal_face = wxEmptyString, + const wxString& fixed_face = wxEmptyString); + + wxPrintData *GetPrintData(); wxPageSetupDialogData *GetPageSetupData() {return m_PageSetupData;} - // return page setting data objects. + // return page setting data objects. // (You can set their parameters.) protected: @@ -243,6 +272,14 @@ private: int m_FontsSizesArr[7]; int *m_FontsSizes; wxString m_FontFaceFixed, m_FontFaceNormal; + + enum FontMode + { + FontMode_Explicit, + FontMode_Standard + }; + FontMode m_fontMode; + wxString m_Headers[2], m_Footers[2]; wxWindow *m_ParentWindow;