| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: richtext/richtextprint.h
- // Purpose: interface of wxRichTextHeaderFooterData
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- These are the header and footer page identifiers, passed to functions such
- as wxRichTextHeaderFooterData::SetFooterText to specify the odd or even page
- for the text.
- */
- enum wxRichTextOddEvenPage {
- wxRICHTEXT_PAGE_ODD,
- wxRICHTEXT_PAGE_EVEN,
- wxRICHTEXT_PAGE_ALL,
- };
- /**
- These are the location identifiers for passing to functions such as
- wxRichTextHeaderFooterData::SetFooterText(), to specify whether the text
- is on the left, centre or right of the page.
- */
- enum wxRichTextPageLocation {
- wxRICHTEXT_PAGE_LEFT,
- wxRICHTEXT_PAGE_CENTRE,
- wxRICHTEXT_PAGE_RIGHT
- };
- /**
- @class wxRichTextHeaderFooterData
- This class represents header and footer data to be passed to the
- wxRichTextPrinting and wxRichTextPrintout classes.
- Headers and footers can be specified independently for odd, even or both page
- sides. Different text can be specified for left, centre and right locations
- on the page, and the font and text colour can also be specified.
- You can specify the following keywords in header and footer text, which will
- be substituted for the actual values during printing and preview.
- - @@DATE@: the current date.
- - @@PAGESCNT@: the total number of pages.
- - @@PAGENUM@: the current page number.
- - @@TIME@: the current time.
- - @@TITLE@: the title of the document, as passed to the wxRichTextPrinting or
- wxRichTextLayout constructor.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextHeaderFooterData : public wxObject
- {
- public:
- //@{
- /**
- Constructors.
- */
- wxRichTextHeaderFooterData();
- wxRichTextHeaderFooterData(const wxRichTextHeaderFooterData& data);
- //@}
- /**
- Clears all text.
- */
- void Clear();
- /**
- Copies the data.
- */
- void Copy(const wxRichTextHeaderFooterData& data);
- /**
- Returns the font specified for printing the header and footer.
- */
- const wxFont& GetFont() const;
- /**
- Returns the margin between the text and the footer.
- */
- int GetFooterMargin() const;
- /**
- Returns the footer text on odd or even pages, and at a given position on the
- page (left, centre or right).
- */
- wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /**
- Returns the margin between the text and the header.
- */
- int GetHeaderMargin() const;
- /**
- Returns the header text on odd or even pages, and at a given position on the
- page (left, centre or right).
- */
- wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /**
- Returns @true if the header and footer will be shown on the first page.
- */
- bool GetShowOnFirstPage() const;
- /**
- Helper function for getting the header or footer text, odd or even pages, and
- at a given position on the page (left, centre or right).
- */
- wxString GetText(int headerFooter, wxRichTextOddEvenPage page,
- wxRichTextPageLocation location) const;
- /**
- Returns the text colour for drawing the header and footer.
- */
- const wxColour& GetTextColour() const;
- /**
- Initialises the object.
- */
- void Init();
- /**
- Sets the font for drawing the header and footer.
- */
- void SetFont(const wxFont& font);
- /**
- Sets the footer text on odd or even pages, and at a given position on the page
- (left, centre or right).
- */
- void SetFooterText(const wxString& text,
- wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- /**
- Sets the header text on odd or even pages, and at a given position on the page
- (left, centre or right).
- */
- void SetHeaderText(const wxString& text,
- wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- /**
- Sets the margins between text and header or footer, in tenths of a millimeter.
- */
- void SetMargins(int headerMargin, int footerMargin);
- /**
- Pass @true to show the header or footer on first page (the default).
- */
- void SetShowOnFirstPage(bool showOnFirstPage);
- /**
- Helper function for setting the header or footer text, odd or even pages, and
- at a given position on the page (left, centre or right).
- */
- void SetText(const wxString& text, int headerFooter,
- wxRichTextOddEvenPage page,
- wxRichTextPageLocation location);
- /**
- Sets the text colour for drawing the header and footer.
- */
- void SetTextColour(const wxColour& col);
- /**
- Assignment operator.
- */
- void operator operator=(const wxRichTextHeaderFooterData& data);
- };
- /**
- @class wxRichTextPrintout
- This class implements print layout for wxRichTextBuffer.
- Instead of using it directly, you should normally use the wxRichTextPrinting class.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextPrintout : public wxPrintout
- {
- public:
- /**
- Constructor.
- */
- wxRichTextPrintout(const wxString& title = "Printout");
- /**
- Calculates scaling and text, header and footer rectangles.
- */
- void CalculateScaling(wxDC* dc, wxRect& textRect,
- wxRect& headerRect,
- wxRect& footerRect);
- /**
- Returns the header and footer data associated with the printout.
- */
- const wxRichTextHeaderFooterData& GetHeaderFooterData() const;
- /**
- Gets the page information.
- */
- virtual void GetPageInfo(int* minPage, int* maxPage, int* selPageFrom,
- int* selPageTo);
- /**
- Returns a pointer to the buffer being rendered.
- */
- wxRichTextBuffer* GetRichTextBuffer() const;
- /**
- Returns @true if the given page exists in the printout.
- */
- virtual bool HasPage(int page);
- /**
- Prepares for printing, laying out the buffer and calculating pagination.
- */
- virtual void OnPreparePrinting();
- /**
- Does the actual printing for this page.
- */
- virtual bool OnPrintPage(int page);
- /**
- Sets the header and footer data associated with the printout.
- */
- void SetHeaderFooterData(const wxRichTextHeaderFooterData& data);
- /**
- 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);
- /**
- Sets the buffer to print. wxRichTextPrintout does not manage this pointer;
- it should be managed by the calling code, such as wxRichTextPrinting.
- */
- void SetRichTextBuffer(wxRichTextBuffer* buffer);
- };
- /**
- @class wxRichTextPrinting
- This class provides a simple interface for performing wxRichTextBuffer printing
- and previewing. It uses wxRichTextPrintout for layout and rendering.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextPrinting : public wxObject
- {
- public:
- /**
- Constructor.
- Optionally pass a title to be used in the preview frame and printing wait
- dialog, and also a parent window for these windows.
- */
- wxRichTextPrinting(const wxString& name = "Printing",
- wxWindow* parentWindow = NULL);
- /**
- A convenience function to get the footer text.
- See wxRichTextHeaderFooterData for details.
- */
- wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /**
- Returns the internal wxRichTextHeaderFooterData object.
- */
- const wxRichTextHeaderFooterData& GetHeaderFooterData() const;
- /**
- A convenience function to get the header text.
- See wxRichTextHeaderFooterData for details.
- */
- wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
- /**
- Returns a pointer to the internal page setup data.
- */
- wxPageSetupDialogData* GetPageSetupData();
- /**
- Returns the parent window to be used for the preview window and printing
- wait dialog.
- */
- wxWindow* GetParentWindow() const;
- /**
- Returns the dimensions to be used for the preview window.
- */
- const wxRect& GetPreviewRect() const;
- /**
- Returns a pointer to the internal print data.
- */
- wxPrintData* GetPrintData();
- /**
- Returns the title of the preview window or printing wait caption.
- */
- const wxString& GetTitle() const;
- /**
- Shows the page setup dialog.
- */
- void PageSetup();
- /**
- Shows a preview window for the given buffer.
- The function takes its own copy of @a buffer.
- */
- bool PreviewBuffer(const wxRichTextBuffer& buffer);
- /**
- Shows a preview window for the given file.
- @a richTextFile can be a text file or XML file, or other file
- depending on the available file handlers.
- */
- bool PreviewFile(const wxString& richTextFile);
- /**
- Prints the given buffer. The function takes its own copy of @a buffer.
- @a showPrintDialog can be @true to show the print dialog, or @false to print quietly.
- */
- bool PrintBuffer(const wxRichTextBuffer& buffer, bool showPrintDialog = true);
- /**
- Prints the given file. @a richTextFile can be a text file or XML file,
- or other file depending on the available file handlers. @a showPrintDialog
- can be @true to show the print dialog, or @false to print quietly.
- */
- bool PrintFile(const wxString& richTextFile, bool showPrintDialog = true);
- /**
- A convenience function to set the footer text.
- See wxRichTextHeaderFooterData for details.
- */
- void SetFooterText(const wxString& text,
- wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- /**
- Sets the internal wxRichTextHeaderFooterData object.
- */
- void SetHeaderFooterData(const wxRichTextHeaderFooterData& data);
- /**
- Sets the wxRichTextHeaderFooterData font.
- */
- void SetHeaderFooterFont(const wxFont& font);
- /**
- Sets the wxRichTextHeaderFooterData text colour.
- */
- void SetHeaderFooterTextColour(const wxColour& colour);
- /**
- A convenience function to set the header text.
- See wxRichTextHeaderFooterData for details.
- */
- void SetHeaderText(const wxString& text,
- wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL,
- wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
- /**
- Sets the page setup data.
- */
- void SetPageSetupData(const wxPageSetupDialogData& pageSetupData);
- /**
- Sets the parent window to be used for the preview window and printing
- wait dialog.
- */
- void SetParentWindow(wxWindow* parent);
- /**
- Sets the dimensions to be used for the preview window.
- */
- void SetPreviewRect(const wxRect& rect);
- /**
- Sets the print data.
- */
- void SetPrintData(const wxPrintData& printData);
- /**
- Pass @true to show the header and footer on the first page.
- */
- void SetShowOnFirstPage(bool show);
- /**
- Pass the title of the preview window or printing wait caption.
- */
- void SetTitle(const wxString& title);
- };
|