/Extras/wxWidgets-2.9.0/include/wx/richtext/richtextprint.h
C Header | 247 lines | 129 code | 63 blank | 55 comment | 0 complexity | b289fb6efec06e26cf48be26e0a18723 MD5 | raw file
Possible License(s): LGPL-2.0, LGPL-3.0
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/richtext/richtextprint.h
- // Purpose: Rich text printing classes
- // Author: Julian Smart
- // Created: 2006-10-23
- // RCS-ID: $Id: richtextprint.h 58757 2009-02-08 11:45:59Z VZ $
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_RICHTEXTPRINT_H_
- #define _WX_RICHTEXTPRINT_H_
- #include "wx/defs.h"
- #if wxUSE_RICHTEXT & wxUSE_PRINTING_ARCHITECTURE
- #include "wx/richtext/richtextbuffer.h"
- #include "wx/print.h"
- #include "wx/printdlg.h"
- #define wxRICHTEXT_PRINT_MAX_PAGES 99999
- // Header/footer page identifiers
- enum wxRichTextOddEvenPage {
- wxRICHTEXT_PAGE_ODD,
- wxRICHTEXT_PAGE_EVEN,
- wxRICHTEXT_PAGE_ALL
- };
- // Header/footer text locations
- enum wxRichTextPageLocation {
- wxRICHTEXT_PAGE_LEFT,
- wxRICHTEXT_PAGE_CENTRE,
- wxRICHTEXT_PAGE_RIGHT
- };
- /*!
- * Header/footer data
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextHeaderFooterData: public wxObject
- {
- public:
- wxRichTextHeaderFooterData() { Init(); }
- wxRichTextHeaderFooterData(const wxRichTextHeaderFooterData& data): wxObject() { Copy(data); }
- /// Initialise
- void Init() { m_headerMargin = 20; m_footerMargin = 20; m_showOnFirstPage = true; }
- /// Copy
- void Copy(const wxRichTextHeaderFooterData& data);
- /// Assignment
- void operator= (const wxRichTextHeaderFooterData& data) { Copy(data); }
- /// Set/get header text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
- void SetHeaderText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /// Set/get footer text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
- void SetFooterText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /// Set/get text
- void SetText(const wxString& text, int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location);
- wxString GetText(int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location) const;
- /// Set/get margins between text and header or footer, in tenths of a millimeter
- void SetMargins(int headerMargin, int footerMargin) { m_headerMargin = headerMargin; m_footerMargin = footerMargin; }
- int GetHeaderMargin() const { return m_headerMargin; }
- int GetFooterMargin() const { return m_footerMargin; }
- /// Set/get whether to show header or footer on first page
- void SetShowOnFirstPage(bool showOnFirstPage) { m_showOnFirstPage = showOnFirstPage; }
- bool GetShowOnFirstPage() const { return m_showOnFirstPage; }
- /// Clear all text
- void Clear();
- /// Set/get font
- void SetFont(const wxFont& font) { m_font = font; }
- const wxFont& GetFont() const { return m_font; }
- /// Set/get colour
- void SetTextColour(const wxColour& col) { m_colour = col; }
- const wxColour& GetTextColour() const { return m_colour; }
- DECLARE_CLASS(wxRichTextHeaderFooterData)
- private:
- // Strings for left, centre, right, top, bottom, odd, even
- wxString m_text[12];
- wxFont m_font;
- wxColour m_colour;
- int m_headerMargin;
- int m_footerMargin;
- bool m_showOnFirstPage;
- };
- /*!
- * wxRichTextPrintout
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextPrintout : public wxPrintout
- {
- public:
- wxRichTextPrintout(const wxString& title = wxT("Printout"));
- virtual ~wxRichTextPrintout();
- /// The buffer to print
- void SetRichTextBuffer(wxRichTextBuffer* buffer) { m_richTextBuffer = buffer; }
- wxRichTextBuffer* GetRichTextBuffer() const { return m_richTextBuffer; }
- /// Set/get header/footer data
- void SetHeaderFooterData(const wxRichTextHeaderFooterData& data) { m_headerFooterData = data; }
- const wxRichTextHeaderFooterData& GetHeaderFooterData() const { return m_headerFooterData; }
- /// Sets margins in 10ths of millimetre. Defaults to 1 inch for margins.
- void SetMargins(int top = 254, int bottom = 254, int left = 254, int right = 254);
- /// Calculate scaling and rectangles, setting the device context scaling
- void CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& headerRect, wxRect& footerRect);
- // wxPrintout virtual functions
- virtual bool OnPrintPage(int page);
- virtual bool HasPage(int page);
- virtual void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
- virtual bool OnBeginDocument(int startPage, int endPage);
- virtual void OnPreparePrinting();
- private:
- /// Renders one page into dc
- void RenderPage(wxDC *dc, int page);
- /// Substitute keywords
- static bool SubstituteKeywords(wxString& str, const wxString& title, int pageNum, int pageCount);
- private:
- wxRichTextBuffer* m_richTextBuffer;
- int m_numPages;
- wxArrayInt m_pageBreaksStart;
- wxArrayInt m_pageBreaksEnd;
- int m_marginLeft, m_marginTop, m_marginRight, m_marginBottom;
- wxRichTextHeaderFooterData m_headerFooterData;
- wxDECLARE_NO_COPY_CLASS(wxRichTextPrintout);
- };
- /*
- *! wxRichTextPrinting
- * A simple interface to perform wxRichTextBuffer printing.
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextPrinting : public wxObject
- {
- public:
- wxRichTextPrinting(const wxString& name = wxT("Printing"), wxWindow *parentWindow = NULL);
- virtual ~wxRichTextPrinting();
- /// Preview the file or buffer
- bool PreviewFile(const wxString& richTextFile);
- bool PreviewBuffer(const wxRichTextBuffer& buffer);
- /// Print the file or buffer
- bool PrintFile(const wxString& richTextFile);
- bool PrintBuffer(const wxRichTextBuffer& buffer);
- /// Shows page setup dialog
- void PageSetup();
- /// Set/get header/footer data
- void SetHeaderFooterData(const wxRichTextHeaderFooterData& data) { m_headerFooterData = data; }
- const wxRichTextHeaderFooterData& GetHeaderFooterData() const { return m_headerFooterData; }
- /// Set/get header text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
- void SetHeaderText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /// Set/get footer text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
- void SetFooterText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /// Show header/footer on first page, or not
- void SetShowOnFirstPage(bool show) { m_headerFooterData.SetShowOnFirstPage(show); }
- /// Set the font
- void SetHeaderFooterFont(const wxFont& font) { m_headerFooterData.SetFont(font); }
- /// Set the colour
- void SetHeaderFooterTextColour(const wxColour& font) { m_headerFooterData.SetTextColour(font); }
- /// Get print and page setup data
- wxPrintData *GetPrintData();
- wxPageSetupDialogData *GetPageSetupData() { return m_pageSetupData; }
- /// Set print and page setup data
- void SetPrintData(const wxPrintData& printData);
- void SetPageSetupData(const wxPageSetupData& pageSetupData);
- /// Set the rich text buffer pointer, deleting the existing object if present
- void SetRichTextBufferPreview(wxRichTextBuffer* buf);
- wxRichTextBuffer* GetRichTextBufferPreview() const { return m_richTextBufferPreview; }
- void SetRichTextBufferPrinting(wxRichTextBuffer* buf);
- wxRichTextBuffer* GetRichTextBufferPrinting() const { return m_richTextBufferPrinting; }
- /// Set/get the parent window
- void SetParentWindow(wxWindow* parent) { m_parentWindow = parent; }
- wxWindow* GetParentWindow() const { return m_parentWindow; }
- /// Set/get the title
- void SetTitle(const wxString& title) { m_title = title; }
- const wxString& GetTitle() const { return m_title; }
- /// Set/get the preview rect
- void SetPreviewRect(const wxRect& rect) { m_previewRect = rect; }
- const wxRect& GetPreviewRect() const { return m_previewRect; }
- protected:
- virtual wxRichTextPrintout *CreatePrintout();
- virtual bool DoPreview(wxRichTextPrintout *printout1, wxRichTextPrintout *printout2);
- virtual bool DoPrint(wxRichTextPrintout *printout);
- private:
- wxPrintData* m_printData;
- wxPageSetupDialogData* m_pageSetupData;
- wxRichTextHeaderFooterData m_headerFooterData;
- wxString m_title;
- wxWindow* m_parentWindow;
- wxRichTextBuffer* m_richTextBufferPreview;
- wxRichTextBuffer* m_richTextBufferPrinting;
- wxRect m_previewRect;
- wxDECLARE_NO_COPY_CLASS(wxRichTextPrinting);
- };
- #endif // wxUSE_RICHTEXT & wxUSE_PRINTING_ARCHITECTURE
- #endif // _WX_RICHTEXTPRINT_H_