X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4eecf1150d4954e389f49c402756f2381915dd10..d30ee785c216be96e1fdf0488d5891e93340700f:/include/wx/html/htmprint.h diff --git a/include/wx/html/htmprint.h b/include/wx/html/htmprint.h index e05d01d903..1ebf5a728a 100644 --- a/include/wx/html/htmprint.h +++ b/include/wx/html/htmprint.h @@ -11,7 +11,7 @@ #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,17 +21,20 @@ #include "wx/html/htmlcell.h" #include "wx/html/winpars.h" +#include "wx/html/htmlfilt.h" #include "wx/print.h" #include "wx/printdlg.h" +#include // INT_MAX + //-------------------------------------------------------------------------------- // wxHtmlDCRenderer // 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(); @@ -39,7 +42,7 @@ public: // Following 3 methods *must* be called before any call to Render: - // Asign DC to this render + // Assign DC to this render void SetDC(wxDC *dc, double pixel_scale = 1.0); // Sets size of output rectangle, in pixels. Note that you *can't* change @@ -57,15 +60,23 @@ public: void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL); // [x,y] is position of upper-left corner of printing rectangle (see SetSize) - // from is y-coordinate of the very first visible cell + // from is y-coordinate of the very first visible cell + // to is y-coordinate of the next following page break, if any // 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 multiple pages // document // If dont_render is TRUE then nothing is rendered into DC and it only counts // pixels and return y coord of the next page // - // 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); + // known_pagebreaks and number_of_pages are used only when counting pages; + // otherwise, their default values should be used. Their purpose is to + // support pagebreaks using a subset of CSS2's
. The
handler + // needs to know what pagebreaks have already been set so that it doesn't + // 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 *known_pagebreaks = NULL, int number_of_pages = 0); // returns total height of the html document // (compare Render's return value with this) @@ -100,7 +111,7 @@ enum { //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlPrintout : public wxPrintout +class WXDLLIMPEXP_HTML wxHtmlPrintout : public wxPrintout { public: wxHtmlPrintout(const wxString& title = wxT("Printout")); @@ -141,6 +152,13 @@ public: 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: @@ -164,6 +182,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,10 +204,10 @@ private: // stores page&printer settings in it. //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlEasyPrinting : public wxObject +class WXDLLIMPEXP_HTML wxHtmlEasyPrinting : public wxObject { public: - wxHtmlEasyPrinting(const wxString& name = wxT("Printing"), wxFrame *parent_frame = NULL); + wxHtmlEasyPrinting(const wxString& name = wxT("Printing"), wxWindow *parentWindow = NULL); ~wxHtmlEasyPrinting(); bool PreviewFile(const wxString &htmlfile); @@ -216,12 +237,12 @@ 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;} + wxPrintData *GetPrintData(); wxPageSetupDialogData *GetPageSetupData() {return m_PageSetupData;} // return page setting data objects. // (You can set their parameters.) -protected: +protected: virtual wxHtmlPrintout *CreatePrintout(); virtual bool DoPreview(wxHtmlPrintout *printout1, wxHtmlPrintout *printout2); virtual bool DoPrint(wxHtmlPrintout *printout); @@ -234,7 +255,7 @@ private: int *m_FontsSizes; wxString m_FontFaceFixed, m_FontFaceNormal; wxString m_Headers[2], m_Footers[2]; - wxFrame *m_Frame; + wxWindow *m_ParentWindow; DECLARE_NO_COPY_CLASS(wxHtmlEasyPrinting) };