| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: print.h
- // Purpose: interface of wxPreviewControlBar
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- enum wxPrinterError
- {
- wxPRINTER_NO_ERROR = 0,
- wxPRINTER_CANCELLED,
- wxPRINTER_ERROR
- };
- #define wxPREVIEW_PRINT 1
- #define wxPREVIEW_PREVIOUS 2
- #define wxPREVIEW_NEXT 4
- #define wxPREVIEW_ZOOM 8
- #define wxPREVIEW_FIRST 16
- #define wxPREVIEW_LAST 32
- #define wxPREVIEW_GOTO 64
- #define wxPREVIEW_DEFAULT (wxPREVIEW_PREVIOUS|wxPREVIEW_NEXT|wxPREVIEW_ZOOM\
- |wxPREVIEW_FIRST|wxPREVIEW_GOTO|wxPREVIEW_LAST)
- // Ids for controls
- #define wxID_PREVIEW_CLOSE 1
- #define wxID_PREVIEW_NEXT 2
- #define wxID_PREVIEW_PREVIOUS 3
- #define wxID_PREVIEW_PRINT 4
- #define wxID_PREVIEW_ZOOM 5
- #define wxID_PREVIEW_FIRST 6
- #define wxID_PREVIEW_LAST 7
- #define wxID_PREVIEW_GOTO 8
- #define wxID_PREVIEW_ZOOM_IN 9
- #define wxID_PREVIEW_ZOOM_OUT 10
- /**
- @class wxPreviewControlBar
- This is the default implementation of the preview control bar, a panel
- with buttons and a zoom control.
- You can derive a new class from this and override some or all member functions
- to change the behaviour and appearance; or you can leave it as it is.
- @library{wxcore}
- @category{printing}
- @see wxPreviewFrame, wxPreviewCanvas, wxPrintPreview
- */
- class wxPreviewControlBar : public wxPanel
- {
- public:
- /**
- Constructor.
- The @a buttons parameter may be a combination of the following, using the bitwise
- 'or' operator:
- @beginFlagTable
- @flag{wxPREVIEW_PRINT}
- Create a print button.
- @flag{wxPREVIEW_NEXT}
- Create a next page button.
- @flag{wxPREVIEW_PREVIOUS}
- Create a previous page button.
- @flag{wxPREVIEW_ZOOM}
- Create a zoom control.
- @flag{wxPREVIEW_DEFAULT}
- Equivalent to a combination of @c wxPREVIEW_PREVIOUS, @c wxPREVIEW_NEXT
- and @c wxPREVIEW_ZOOM.
- @endFlagTable
- */
- wxPreviewControlBar(wxPrintPreview* preview,
- long buttons,
- wxWindow* parent,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = "panel");
- /**
- Destructor.
- */
- virtual ~wxPreviewControlBar();
- /**
- Creates buttons, according to value of the button style flags.
- @todo which flags??
- */
- virtual void CreateButtons();
- /**
- Gets the print preview object associated with the control bar.
- */
- virtual wxPrintPreviewBase* GetPrintPreview() const;
- /**
- Gets the current zoom setting in percent.
- */
- virtual int GetZoomControl();
- /**
- Sets the zoom control.
- */
- virtual void SetZoomControl(int percent);
- };
- /**
- @class wxPreviewCanvas
- A preview canvas is the default canvas used by the print preview
- system to display the preview.
- @library{wxcore}
- @category{printing}
- @see wxPreviewFrame, wxPreviewControlBar, wxPrintPreview
- */
- class wxPreviewCanvas : public wxScrolledWindow
- {
- public:
- /**
- Constructor.
- */
- wxPreviewCanvas(wxPrintPreview* preview, wxWindow* parent,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = "canvas");
- /**
- Destructor.
- */
- virtual ~wxPreviewCanvas();
- /**
- Calls wxPrintPreview::PaintPage() to refresh the canvas.
- */
- void OnPaint(wxPaintEvent& event);
- };
- /**
- Preview frame modality kind.
- The elements of this enum can be used with wxPreviewFrame::Initialize() to
- indicate how should the preview frame be shown.
- @since 2.9.2
- */
- enum wxPreviewFrameModalityKind
- {
- /**
- Disable all the other top level windows while the preview frame is shown.
- This is the default behaviour.
- */
- wxPreviewFrame_AppModal,
- /**
- Disable only the parent window while the preview frame is shown.
- */
- wxPreviewFrame_WindowModal,
- /**
- Show the preview frame non-modally and don't disable any other windows.
- */
- wxPreviewFrame_NonModal
- };
- /**
- @class wxPreviewFrame
- This class provides the default method of managing the print preview interface.
- Member functions may be overridden to replace functionality, or the
- class may be used without derivation.
- @library{wxcore}
- @category{printing}
- @see wxPreviewCanvas, wxPreviewControlBar, wxPrintPreview
- */
- class wxPreviewFrame : public wxFrame
- {
- public:
- /**
- Constructor.
- Pass a print preview object plus other normal frame arguments.
- The print preview object will be destroyed by the frame when it closes.
- */
- wxPreviewFrame(wxPrintPreviewBase* preview, wxWindow* parent,
- const wxString& title = "Print Preview",
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
- /**
- Destructor.
- */
- virtual ~wxPreviewFrame();
- /**
- Creates a wxPreviewCanvas.
- Override this function to allow a user-defined preview canvas object
- to be created.
- */
- virtual void CreateCanvas();
- /**
- Creates a wxPreviewControlBar.
- Override this function to allow a user-defined preview control bar object
- to be created.
- */
- virtual void CreateControlBar();
- /**
- Initializes the frame elements and prepares for showing it.
- Calling this method is equivalent to calling InitializeWithModality()
- with wxPreviewFrame_AppModal argument, please see its documentation for
- more details.
- Please notice that this function is virtual mostly for backwards
- compatibility only, there is no real need to override it as it's never
- called by wxWidgets itself.
- */
- virtual void Initialize();
- /**
- Initializes the frame elements and prepares for showing it with the
- given modality kind.
- This method creates the frame elements by calling CreateCanvas() and
- CreateControlBar() methods (which may be overridden to customize them)
- and prepares to show the frame according to the value of @a kind
- parameter:
- - If it is wxPreviewFrame_AppModal, all the other application
- windows will be disabled when this frame is shown. This is the same
- behaviour as that of simple Initialize().
- - If it is wxPreviewFrame_WindowModal, only the parent window of
- the preview frame will be disabled when it is shown.
- - And if it is wxPreviewFrame_NonModal, no windows at all will be
- disabled while the preview is shown.
- Notice that this function (or Initialize()) must be called by the
- application prior to showing the frame but you still must call @c
- Show(true) to actually show it afterwards.
- @param kind
- The modality kind of preview frame.
- @since 2.9.2
- */
- virtual void InitializeWithModality(wxPreviewFrameModalityKind kind);
- /**
- Enables any disabled frames in the application, and deletes the print preview
- object, implicitly deleting any printout objects associated with the print
- preview object.
- */
- void OnCloseWindow(wxCloseEvent& event);
- };
- /**
- @class wxPrintPreview
- Objects of this class manage the print preview process. The object is passed
- a wxPrintout object, and the wxPrintPreview object itself is passed to
- a wxPreviewFrame object. Previewing is started by initializing and showing
- the preview frame. Unlike wxPrinter::Print(), flow of control returns to the
- application immediately after the frame is shown.
- @note
- The preview shown is only exact on Windows. On other platforms, the wxDC
- used for preview is different from what is used for printing and the
- results may be significantly different, depending on how is the output
- created. In particular, printing code relying on wxDC::GetTextExtent()
- heavily (for example, wxHtmlEasyPrinting and other wxHTML classes do) is
- affected. It is recommended to use native preview functionality on
- platforms that offer it (OS X, GTK+).
- @library{wxcore}
- @category{printing}
- @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPrintout, wxPrinter,
- wxPreviewCanvas, wxPreviewControlBar, wxPreviewFrame
- */
- class wxPrintPreview : public wxObject
- {
- public:
- /**
- Constructor.
- Pass a printout object, an optional printout object to be used for actual
- printing, and the address of an optional block of printer data, which will
- be copied to the print preview object's print data.
- If @a printoutForPrinting is non-@NULL, a @b "Print..." button will be placed on
- the preview frame so that the user can print directly from the preview interface.
- @remarks
- Do not explicitly delete the printout objects once this constructor has been
- called, since they will be deleted in the wxPrintPreview destructor.
- The same does not apply to the @a data argument.
- Use IsOk() to check whether the wxPrintPreview object was created correctly.
- */
- wxPrintPreview(wxPrintout* printout,
- wxPrintout* printoutForPrinting = NULL,
- wxPrintDialogData* data = NULL);
- wxPrintPreview(wxPrintout* printout,
- wxPrintout* printoutForPrinting,
- wxPrintData* data);
- /**
- Destructor.
- Deletes both print preview objects, so do not destroy these objects
- in your application.
- */
- ~wxPrintPreview();
- /**
- Gets the preview window used for displaying the print preview image.
- */
- virtual wxPreviewCanvas* GetCanvas() const;
- /**
- Gets the page currently being previewed.
- */
- virtual int GetCurrentPage() const;
- /**
- Gets the frame used for displaying the print preview canvas
- and control bar.
- */
- virtual wxFrame* GetFrame() const;
- /**
- Returns the maximum page number.
- */
- virtual int GetMaxPage() const;
- /**
- Returns the minimum page number.
- */
- virtual int GetMinPage() const;
- /**
- Gets the preview printout object associated with the wxPrintPreview object.
- */
- virtual wxPrintout* GetPrintout() const;
- /**
- Gets the printout object to be used for printing from within the preview
- interface,
- or @NULL if none exists.
- */
- virtual wxPrintout* GetPrintoutForPrinting() const;
- /**
- Returns @true if the wxPrintPreview is valid, @false otherwise.
- It could return @false if there was a problem initializing the printer
- device context (current printer not set, for example).
- */
- virtual bool IsOk() const;
- /**
- This refreshes the preview window with the preview image.
- It must be called from the preview window's OnPaint member.
- The implementation simply blits the preview bitmap onto
- the canvas, creating a new preview bitmap if none exists.
- */
- virtual bool PaintPage(wxPreviewCanvas* canvas, wxDC& dc);
- /**
- Invokes the print process using the second wxPrintout object
- supplied in the wxPrintPreview constructor.
- Will normally be called by the @b Print... panel item on the
- preview frame's control bar.
- Returns @false in case of error -- call wxPrinter::GetLastError()
- to get detailed information about the kind of the error.
- */
- virtual bool Print(bool prompt);
- /**
- Renders a page into a wxMemoryDC. Used internally by wxPrintPreview.
- */
- virtual bool RenderPage(int pageNum);
- /**
- Sets the window to be used for displaying the print preview image.
- */
- virtual void SetCanvas(wxPreviewCanvas* window);
- /**
- Sets the current page to be previewed.
- */
- virtual bool SetCurrentPage(int pageNum);
- /**
- Sets the frame to be used for displaying the print preview canvas
- and control bar.
- */
- virtual void SetFrame(wxFrame* frame);
- /**
- Associates a printout object with the wxPrintPreview object.
- */
- virtual void SetPrintout(wxPrintout* printout);
- /**
- Sets the percentage preview zoom, and refreshes the preview canvas accordingly.
- */
- virtual void SetZoom(int percent);
- };
- /**
- @class wxPrinter
- This class represents the Windows or PostScript printer, and is the vehicle
- through which printing may be launched by an application.
- Printing can also be achieved through using of lower functions and classes,
- but this and associated classes provide a more convenient and general method
- of printing.
- @library{wxcore}
- @category{printing}
- @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPrintout, wxPrintPreview
- */
- class wxPrinter : public wxObject
- {
- public:
- /**
- Constructor.
- Pass an optional pointer to a block of print dialog data, which will be
- copied to the printer object's local data.
- @see wxPrintDialogData, wxPrintData
- */
- wxPrinter(wxPrintDialogData* data = NULL);
- /**
- Creates the default printing abort window, with a cancel button.
- */
- virtual wxPrintAbortDialog* CreateAbortWindow(wxWindow* parent, wxPrintout* printout);
- /**
- Returns @true if the user has aborted the print job.
- */
- bool GetAbort() const;
- /**
- Return last error. Valid after calling Print(), PrintDialog() or
- wxPrintPreview::Print().
- These functions set last error to @c wxPRINTER_NO_ERROR if no error happened.
- Returned value is one of the following:
- @beginTable
- @row2col{wxPRINTER_NO_ERROR, No error happened.}
- @row2col{wxPRINTER_CANCELLED, The user cancelled printing.}
- @row2col{wxPRINTER_ERROR, There was an error during printing.}
- @endTable
- */
- static wxPrinterError GetLastError();
- /**
- Returns the @ref overview_printing_printdata "print data" associated with
- the printer object.
- */
- virtual wxPrintDialogData& GetPrintDialogData() const;
- /**
- Starts the printing process. Provide a parent window, a user-defined wxPrintout
- object which controls the printing of a document, and whether the print dialog
- should be invoked first.
- Print() could return @false if there was a problem initializing the printer device
- context (current printer not set, for example) or the user cancelled printing.
- Call GetLastError() to get detailed information about the kind of the error.
- */
- virtual bool Print(wxWindow* parent, wxPrintout* printout,
- bool prompt = true);
- /**
- Invokes the print dialog.
- If successful (the user did not press Cancel and no error occurred),
- a suitable device context will be returned; otherwise @NULL is returned;
- call GetLastError() to get detailed information about the kind of the error.
- @remarks
- The application must delete this device context to avoid a memory leak.
- */
- virtual wxDC* PrintDialog(wxWindow* parent);
- /**
- Default error-reporting function.
- */
- virtual void ReportError(wxWindow* parent, wxPrintout* printout,
- const wxString& message);
- /**
- Invokes the print setup dialog.
- @remarks
- The setup dialog is obsolete from Windows 95, though retained
- for backward compatibility.
- */
- virtual bool Setup(wxWindow* parent);
- };
- /**
- @class wxPrintout
- This class encapsulates the functionality of printing out an application document.
- A new class must be derived and members overridden to respond to calls such as
- OnPrintPage() and HasPage() and to render the print image onto an associated wxDC.
- Instances of this class are passed to wxPrinter::Print() or
- to a wxPrintPreview object to initiate printing or previewing.
- Your derived wxPrintout is responsible for drawing both the preview image and
- the printed page. If your windows' drawing routines accept an arbitrary DC as an
- argument, you can re-use those routines within your wxPrintout subclass to draw
- the printout image. You may also add additional drawing elements within your
- wxPrintout subclass, like headers, footers, and/or page numbers. However, the
- image on the printed page will often differ from the image drawn on the screen,
- as will the print preview image -- not just in the presence of headers and
- footers, but typically in scale. A high-resolution printer presents a much
- larger drawing surface (i.e., a higher-resolution DC); a zoomed-out preview
- image presents a much smaller drawing surface (lower-resolution DC). By using
- the routines FitThisSizeToXXX() and/or MapScreenSizeToXXX() within your
- wxPrintout subclass to set the user scale and origin of the associated DC, you
- can easily use a single drawing routine to draw on your application's windows,
- to create the print preview image, and to create the printed paper image, and
- achieve a common appearance to the preview image and the printed page.
- @library{wxcore}
- @category{printing}
- @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPageSetupDialog,
- wxPrinter, wxPrintPreview
- */
- class wxPrintout : public wxObject
- {
- public:
- /**
- Constructor.
- Pass an optional title argument - the current filename would be a
- good idea. This will appear in the printing list (at least in MSW)
- */
- wxPrintout(const wxString& title = "Printout");
- /**
- Destructor.
- */
- virtual ~wxPrintout();
- /**
- Set the user scale and device origin of the wxDC associated with this wxPrintout
- so that the given image size fits entirely within the page rectangle and the
- origin is at the top left corner of the page rectangle.
- On MSW and Mac, the page rectangle is the printable area of the page.
- On other platforms and PostScript printing, the page rectangle is the entire paper.
- Use this if you want your printed image as large as possible, but with the caveat
- that on some platforms, portions of the image might be cut off at the edges.
- */
- void FitThisSizeToPage(const wxSize& imageSize);
- /**
- Set the user scale and device origin of the wxDC associated with this wxPrintout
- so that the given image size fits entirely within the page margins set in the
- given wxPageSetupDialogData object.
- This function provides the greatest consistency across all platforms because it
- does not depend on having access to the printable area of the paper.
- @remarks
- On Mac, the native wxPageSetupDialog does not let you set the page margins;
- you'll have to provide your own mechanism, or you can use the Mac-only class
- wxMacPageMarginsDialog.
- */
- void FitThisSizeToPageMargins(const wxSize& imageSize,
- const wxPageSetupDialogData& pageSetupData);
- /**
- Set the user scale and device origin of the wxDC associated with this wxPrintout
- so that the given image size fits entirely within the paper and the origin is at
- the top left corner of the paper.
- Use this if you're managing your own page margins.
- @note
- With most printers, the region around the edges of the paper are not
- printable so that the edges of the image could be cut off.
- */
- void FitThisSizeToPaper(const wxSize& imageSize);
- /**
- Returns the device context associated with the printout (given to the printout
- at start of printing or previewing).
- The application can use GetDC() to obtain a device context to draw on.
- This will be a wxPrinterDC if printing under Windows or Mac, a wxPostScriptDC
- if printing on other platforms, and a wxMemoryDC if previewing.
- */
- wxDC* GetDC() const;
- /**
- Return the rectangle corresponding to the page margins specified by the given
- wxPageSetupDialogData object in the associated wxDC's logical coordinates for
- the current user scale and device origin.
- The page margins are specified with respect to the edges of the paper on all
- platforms.
- */
- wxRect GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSetupData) const;
- /**
- Return the rectangle corresponding to the page in the associated wxDC 's
- logical coordinates for the current user scale and device origin.
- On MSW and Mac, this will be the printable area of the paper.
- On other platforms and PostScript printing, this will be the full paper
- rectangle.
- */
- wxRect GetLogicalPageRect() const;
- /**
- Return the rectangle corresponding to the paper in the associated wxDC 's
- logical coordinates for the current user scale and device origin.
- */
- wxRect GetLogicalPaperRect() const;
- /**
- Returns the number of pixels per logical inch of the printer device context.
- Dividing the printer PPI by the screen PPI can give a suitable scaling factor
- for drawing text onto the printer.
- Remember to multiply this by a scaling factor to take the preview DC size into
- account.
- Or you can just use the FitThisSizeToXXX() and MapScreenSizeToXXX routines below,
- which do most of the scaling calculations for you.
- @beginWxPerlOnly
- In wxPerl this method takes no arguments and returns a
- 2-element list (w, h).
- @endWxPerlOnly
- */
- void GetPPIPrinter(int* w, int* h) const;
- /**
- Returns the number of pixels per logical inch of the screen device context.
- Dividing the printer PPI by the screen PPI can give a suitable scaling factor
- for drawing text onto the printer.
- If you are doing your own scaling, remember to multiply this by a scaling
- factor to take the preview DC size into account.
- @beginWxPerlOnly
- In wxPerl this method takes no arguments and returns a
- 2-element list (w, h).
- @endWxPerlOnly
- */
- void GetPPIScreen(int* w, int* h) const;
- /**
- Called by the framework to obtain information from the application about minimum
- and maximum page values that the user can select, and the required page range to
- be printed.
- By default this returns (1, 32000) for the page minimum and maximum values, and
- (1, 1) for the required page range.
- @a minPage must be greater than zero and @a maxPage must be greater
- than @a minPage.
- */
- virtual void GetPageInfo(int* minPage, int* maxPage, int* pageFrom,
- int* pageTo);
- /**
- Returns the size of the printer page in millimetres.
- @beginWxPerlOnly
- In wxPerl this method takes no arguments and returns a
- 2-element list (w, h).
- @endWxPerlOnly
- */
- void GetPageSizeMM(int* w, int* h) const;
- /**
- Returns the size of the printer page in pixels, called the page rectangle.
- The page rectangle has a top left corner at (0,0) and a bottom right corner at
- (w,h). These values may not be the same as the values returned from
- wxDC::GetSize(); if the printout is being used for
- previewing, a memory device context is used, which uses a bitmap size reflecting
- the current preview zoom. The application must take this discrepancy into
- account if previewing is to be supported.
- */
- void GetPageSizePixels(int* w, int* h) const;
- /**
- Returns the rectangle that corresponds to the entire paper in pixels, called the
- paper rectangle.
- This distinction between paper rectangle and page rectangle reflects the fact that
- most printers cannot print all the way to the edge of the paper.
- The page rectangle is a rectangle whose top left corner is at (0,0) and whose width
- and height are given by wxDC::GetPageSizePixels().
- On MSW and Mac, the page rectangle gives the printable area of the paper, while the
- paper rectangle represents the entire paper, including non-printable borders.
- Thus, the rectangle returned by wxDC::GetPaperRectPixels() will have a top left corner
- whose coordinates are small negative numbers and the bottom right corner will have
- values somewhat larger than the width and height given by wxDC::GetPageSizePixels().
- On other platforms and for PostScript printing, the paper is treated as if its entire
- area were printable, so this function will return the same rectangle as the page
- rectangle.
- */
- wxRect GetPaperRectPixels() const;
- /**
- Returns the title of the printout.
- @todo the python note here was wrong
- */
- virtual wxString GetTitle() const;
- /**
- Should be overridden to return @true if the document has this page, or @false
- if not.
- Returning @false signifies the end of the document. By default,
- HasPage behaves as if the document has only one page.
- */
- virtual bool HasPage(int pageNum);
- /**
- Returns @true if the printout is currently being used for previewing.
- @see GetPreview()
- */
- virtual bool IsPreview() const;
- /**
- Returns the associated preview object if any.
- If this printout object is used for previewing, returns the associated
- wxPrintPreview. Otherwise returns @NULL.
- The returned pointer is not owned by the printout and must not be
- deleted.
- @see IsPreview()
- @since 2.9.1.
- */
- wxPrintPreview *GetPreview() const;
- /**
- Set the user scale and device origin of the wxDC associated with this wxPrintout
- so that one screen pixel maps to one device pixel on the DC.
- That is, the user scale is set to (1,1) and the device origin is set to (0,0).
- Use this if you want to do your own scaling prior to calling wxDC drawing calls,
- for example, if your underlying model is floating-point and you want to achieve
- maximum drawing precision on high-resolution printers.
- You can use the GetLogicalXXXRect() routines below to obtain the paper rectangle,
- page rectangle, or page margins rectangle to perform your own scaling.
- @note
- While the underlying drawing model of Mac OS X is floating-point,
- wxWidgets's drawing model scales from integer coordinates.
- */
- void MapScreenSizeToDevice();
- /**
- This sets the user scale of the wxDC associated with this wxPrintout to the same
- scale as MapScreenSizeToPaper() but sets the logical origin to the top left corner
- of the page rectangle.
- */
- void MapScreenSizeToPage();
- /**
- This sets the user scale of the wxDC associated with this wxPrintout to the same
- scale as MapScreenSizeToPageMargins() but sets the logical origin to the top left
- corner of the page margins specified by the given wxPageSetupDialogData object.
- */
- void MapScreenSizeToPageMargins(const wxPageSetupDialogData& pageSetupData);
- /**
- Set the user scale and device origin of the wxDC associated with this wxPrintout
- so that the printed page matches the screen size as closely as possible
- and the logical origin is in the top left corner of the paper rectangle.
- That is, a 100-pixel object on screen should appear at the same size on the
- printed page.
- (It will, of course, be larger or smaller in the preview image, depending on the
- zoom factor.)
- Use this if you want WYSIWYG behaviour, e.g., in a text editor.
- */
- void MapScreenSizeToPaper();
- /**
- Shift the device origin by an amount specified in logical coordinates.
- */
- void OffsetLogicalOrigin(wxCoord xoff, wxCoord yoff);
- /**
- Called by the framework at the start of document printing. Return @false from
- this function cancels the print job.
- OnBeginDocument() is called once for every copy printed.
- @remarks
- The base OnBeginDocument() must be called (and the return value
- checked) from within the overridden function, since it calls wxDC::StartDoc().
- */
- virtual bool OnBeginDocument(int startPage, int endPage);
- /**
- Called by the framework at the start of printing.
- OnBeginPrinting() is called once for every print job
- (regardless of how many copies are being printed).
- */
- virtual void OnBeginPrinting();
- /**
- Called by the framework at the end of document printing.
- OnEndDocument() is called once for every copy printed.
- @remarks
- The base OnEndDocument() must be called from within the overridden function,
- since it calls wxDC::EndDoc().
- */
- virtual void OnEndDocument();
- /**
- Called by the framework at the end of printing.
- OnEndPrinting is called once for every print job
- (regardless of how many copies are being printed).
- */
- virtual void OnEndPrinting();
- /**
- Called once by the framework before any other demands are made of the
- wxPrintout object.
- This gives the object an opportunity to calculate the number of pages
- in the document, for example.
- */
- virtual void OnPreparePrinting();
- /**
- Called by the framework when a page should be printed. Returning @false cancels
- the print job.
- */
- virtual bool OnPrintPage(int pageNum) = 0;
- /**
- Set the device origin of the associated wxDC so that the current logical point
- becomes the new logical origin.
- */
- void SetLogicalOrigin(wxCoord x, wxCoord y);
- };
- /**
- @class wxPrintAbortDialog
- The dialog created by default by the print framework that enables aborting
- the printing process.
- */
- class wxPrintAbortDialog: public wxDialog
- {
- public:
- wxPrintAbortDialog(wxWindow *parent,
- const wxString& documentTitle,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_DIALOG_STYLE,
- const wxString& name = "dialog");
- void SetProgress(int currentPage, int totalPages,
- int currentCopy, int totalCopies);
- };
|