1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Base classes for printing framework
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_PRNTBASEH__
13 #define _WX_PRNTBASEH__
17 #if wxUSE_PRINTING_ARCHITECTURE
20 #include "wx/cmndata.h"
22 #include "wx/scrolwin.h"
23 #include "wx/dialog.h"
27 class WXDLLIMPEXP_FWD_CORE wxDC
;
28 class WXDLLIMPEXP_FWD_CORE wxButton
;
29 class WXDLLIMPEXP_FWD_CORE wxChoice
;
30 class WXDLLIMPEXP_FWD_CORE wxPrintout
;
31 class WXDLLIMPEXP_FWD_CORE wxPrinterBase
;
32 class WXDLLIMPEXP_FWD_CORE wxPrintDialogBase
;
33 class WXDLLIMPEXP_FWD_CORE wxPrintDialog
;
34 class WXDLLIMPEXP_FWD_CORE wxPageSetupDialogBase
;
35 class WXDLLIMPEXP_FWD_CORE wxPageSetupDialog
;
36 class WXDLLIMPEXP_FWD_CORE wxPrintPreviewBase
;
37 class WXDLLIMPEXP_FWD_CORE wxPreviewCanvas
;
38 class WXDLLIMPEXP_FWD_CORE wxPreviewControlBar
;
39 class WXDLLIMPEXP_FWD_CORE wxPreviewFrame
;
40 class WXDLLIMPEXP_FWD_CORE wxPrintFactory
;
41 class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase
;
42 class WXDLLIMPEXP_FWD_CORE wxPrintPreview
;
43 class wxPrintPageMaxCtrl
;
44 class wxPrintPageTextCtrl
;
46 //----------------------------------------------------------------------------
48 //----------------------------------------------------------------------------
52 wxPRINTER_NO_ERROR
= 0,
57 //----------------------------------------------------------------------------
59 //----------------------------------------------------------------------------
61 class WXDLLIMPEXP_CORE wxPrintFactory
65 virtual ~wxPrintFactory() {}
67 virtual wxPrinterBase
*CreatePrinter( wxPrintDialogData
* data
) = 0;
69 virtual wxPrintPreviewBase
*CreatePrintPreview( wxPrintout
*preview
,
70 wxPrintout
*printout
= NULL
,
71 wxPrintDialogData
*data
= NULL
) = 0;
72 virtual wxPrintPreviewBase
*CreatePrintPreview( wxPrintout
*preview
,
74 wxPrintData
*data
) = 0;
76 virtual wxPrintDialogBase
*CreatePrintDialog( wxWindow
*parent
,
77 wxPrintDialogData
*data
= NULL
) = 0;
78 virtual wxPrintDialogBase
*CreatePrintDialog( wxWindow
*parent
,
79 wxPrintData
*data
) = 0;
81 virtual wxPageSetupDialogBase
*CreatePageSetupDialog( wxWindow
*parent
,
82 wxPageSetupDialogData
* data
= NULL
) = 0;
84 virtual wxDCImpl
* CreatePrinterDCImpl( wxPrinterDC
*owner
, const wxPrintData
& data
) = 0;
86 // What to do and what to show in the wxPrintDialog
87 // a) Use the generic print setup dialog or a native one?
88 virtual bool HasPrintSetupDialog() = 0;
89 virtual wxDialog
*CreatePrintSetupDialog( wxWindow
*parent
, wxPrintData
*data
) = 0;
90 // b) Provide the "print to file" option ourselves or via print setup?
91 virtual bool HasOwnPrintToFile() = 0;
92 // c) Show current printer
93 virtual bool HasPrinterLine() = 0;
94 virtual wxString
CreatePrinterLine() = 0;
95 // d) Show Status line for current printer?
96 virtual bool HasStatusLine() = 0;
97 virtual wxString
CreateStatusLine() = 0;
100 virtual wxPrintNativeDataBase
*CreatePrintNativeData() = 0;
102 static void SetPrintFactory( wxPrintFactory
*factory
);
103 static wxPrintFactory
*GetFactory();
105 static wxPrintFactory
*m_factory
;
108 class WXDLLIMPEXP_CORE wxNativePrintFactory
: public wxPrintFactory
111 virtual wxPrinterBase
*CreatePrinter( wxPrintDialogData
*data
);
113 virtual wxPrintPreviewBase
*CreatePrintPreview( wxPrintout
*preview
,
114 wxPrintout
*printout
= NULL
,
115 wxPrintDialogData
*data
= NULL
);
116 virtual wxPrintPreviewBase
*CreatePrintPreview( wxPrintout
*preview
,
117 wxPrintout
*printout
,
120 virtual wxPrintDialogBase
*CreatePrintDialog( wxWindow
*parent
,
121 wxPrintDialogData
*data
= NULL
);
122 virtual wxPrintDialogBase
*CreatePrintDialog( wxWindow
*parent
,
125 virtual wxPageSetupDialogBase
*CreatePageSetupDialog( wxWindow
*parent
,
126 wxPageSetupDialogData
* data
= NULL
);
128 virtual wxDCImpl
* CreatePrinterDCImpl( wxPrinterDC
*owner
, const wxPrintData
& data
);
130 virtual bool HasPrintSetupDialog();
131 virtual wxDialog
*CreatePrintSetupDialog( wxWindow
*parent
, wxPrintData
*data
);
132 virtual bool HasOwnPrintToFile();
133 virtual bool HasPrinterLine();
134 virtual wxString
CreatePrinterLine();
135 virtual bool HasStatusLine();
136 virtual wxString
CreateStatusLine();
138 virtual wxPrintNativeDataBase
*CreatePrintNativeData();
141 //----------------------------------------------------------------------------
142 // wxPrintNativeDataBase
143 //----------------------------------------------------------------------------
145 class WXDLLIMPEXP_CORE wxPrintNativeDataBase
: public wxObject
148 wxPrintNativeDataBase();
149 virtual ~wxPrintNativeDataBase() {}
151 virtual bool TransferTo( wxPrintData
&data
) = 0;
152 virtual bool TransferFrom( const wxPrintData
&data
) = 0;
154 virtual bool Ok() const { return IsOk(); }
155 virtual bool IsOk() const = 0;
160 DECLARE_CLASS(wxPrintNativeDataBase
)
161 wxDECLARE_NO_COPY_CLASS(wxPrintNativeDataBase
);
164 //----------------------------------------------------------------------------
166 //----------------------------------------------------------------------------
169 * Represents the printer: manages printing a wxPrintout object
172 class WXDLLIMPEXP_CORE wxPrinterBase
: public wxObject
175 wxPrinterBase(wxPrintDialogData
*data
= NULL
);
176 virtual ~wxPrinterBase();
178 virtual wxWindow
*CreateAbortWindow(wxWindow
*parent
, wxPrintout
*printout
);
179 virtual void ReportError(wxWindow
*parent
, wxPrintout
*printout
, const wxString
& message
);
181 virtual wxPrintDialogData
& GetPrintDialogData() const;
182 bool GetAbort() const { return sm_abortIt
; }
184 static wxPrinterError
GetLastError() { return sm_lastError
; }
186 ///////////////////////////////////////////////////////////////////////////
189 virtual bool Setup(wxWindow
*parent
) = 0;
190 virtual bool Print(wxWindow
*parent
, wxPrintout
*printout
, bool prompt
= true) = 0;
191 virtual wxDC
* PrintDialog(wxWindow
*parent
) = 0;
194 wxPrintDialogData m_printDialogData
;
195 wxPrintout
* m_currentPrintout
;
197 static wxPrinterError sm_lastError
;
200 static wxWindow
* sm_abortWindow
;
201 static bool sm_abortIt
;
204 DECLARE_CLASS(wxPrinterBase
)
205 wxDECLARE_NO_COPY_CLASS(wxPrinterBase
);
208 //----------------------------------------------------------------------------
210 //----------------------------------------------------------------------------
212 class WXDLLIMPEXP_CORE wxPrinter
: public wxPrinterBase
215 wxPrinter(wxPrintDialogData
*data
= NULL
);
216 virtual ~wxPrinter();
218 virtual wxWindow
*CreateAbortWindow(wxWindow
*parent
, wxPrintout
*printout
);
219 virtual void ReportError(wxWindow
*parent
, wxPrintout
*printout
, const wxString
& message
);
221 virtual bool Setup(wxWindow
*parent
);
222 virtual bool Print(wxWindow
*parent
, wxPrintout
*printout
, bool prompt
= true);
223 virtual wxDC
* PrintDialog(wxWindow
*parent
);
225 virtual wxPrintDialogData
& GetPrintDialogData() const;
228 wxPrinterBase
*m_pimpl
;
231 DECLARE_CLASS(wxPrinter
)
232 wxDECLARE_NO_COPY_CLASS(wxPrinter
);
235 //----------------------------------------------------------------------------
237 //----------------------------------------------------------------------------
240 * Represents an object via which a document may be printed.
241 * The programmer derives from this, overrides (at least) OnPrintPage,
242 * and passes it to a wxPrinter object for printing, or a wxPrintPreview
243 * object for previewing.
246 class WXDLLIMPEXP_CORE wxPrintout
: public wxObject
249 wxPrintout(const wxString
& title
= _("Printout"));
250 virtual ~wxPrintout();
252 virtual bool OnBeginDocument(int startPage
, int endPage
);
253 virtual void OnEndDocument();
254 virtual void OnBeginPrinting();
255 virtual void OnEndPrinting();
257 // Guaranteed to be before any other functions are called
258 virtual void OnPreparePrinting() { }
260 virtual bool HasPage(int page
);
261 virtual bool OnPrintPage(int page
) = 0;
262 virtual void GetPageInfo(int *minPage
, int *maxPage
, int *pageFrom
, int *pageTo
);
264 virtual wxString
GetTitle() const { return m_printoutTitle
; }
266 wxDC
*GetDC() const { return m_printoutDC
; }
267 void SetDC(wxDC
*dc
) { m_printoutDC
= dc
; }
269 void FitThisSizeToPaper(const wxSize
& imageSize
);
270 void FitThisSizeToPage(const wxSize
& imageSize
);
271 void FitThisSizeToPageMargins(const wxSize
& imageSize
, const wxPageSetupDialogData
& pageSetupData
);
272 void MapScreenSizeToPaper();
273 void MapScreenSizeToPage();
274 void MapScreenSizeToPageMargins(const wxPageSetupDialogData
& pageSetupData
);
275 void MapScreenSizeToDevice();
277 wxRect
GetLogicalPaperRect() const;
278 wxRect
GetLogicalPageRect() const;
279 wxRect
GetLogicalPageMarginsRect(const wxPageSetupDialogData
& pageSetupData
) const;
281 void SetLogicalOrigin(wxCoord x
, wxCoord y
);
282 void OffsetLogicalOrigin(wxCoord xoff
, wxCoord yoff
);
284 void SetPageSizePixels(int w
, int h
) { m_pageWidthPixels
= w
; m_pageHeightPixels
= h
; }
285 void GetPageSizePixels(int *w
, int *h
) const { *w
= m_pageWidthPixels
; *h
= m_pageHeightPixels
; }
286 void SetPageSizeMM(int w
, int h
) { m_pageWidthMM
= w
; m_pageHeightMM
= h
; }
287 void GetPageSizeMM(int *w
, int *h
) const { *w
= m_pageWidthMM
; *h
= m_pageHeightMM
; }
289 void SetPPIScreen(int x
, int y
) { m_PPIScreenX
= x
; m_PPIScreenY
= y
; }
290 void SetPPIScreen(const wxSize
& ppi
) { SetPPIScreen(ppi
.x
, ppi
.y
); }
291 void GetPPIScreen(int *x
, int *y
) const { *x
= m_PPIScreenX
; *y
= m_PPIScreenY
; }
292 void SetPPIPrinter(int x
, int y
) { m_PPIPrinterX
= x
; m_PPIPrinterY
= y
; }
293 void SetPPIPrinter(const wxSize
& ppi
) { SetPPIPrinter(ppi
.x
, ppi
.y
); }
294 void GetPPIPrinter(int *x
, int *y
) const { *x
= m_PPIPrinterX
; *y
= m_PPIPrinterY
; }
296 void SetPaperRectPixels(const wxRect
& paperRectPixels
) { m_paperRectPixels
= paperRectPixels
; }
297 wxRect
GetPaperRectPixels() const { return m_paperRectPixels
; }
299 // This must be called by wxPrintPreview to associate itself with the
301 virtual void SetPreview(wxPrintPreview
*preview
) { m_preview
= preview
; }
303 wxPrintPreview
*GetPreview() const { return m_preview
; }
304 virtual bool IsPreview() const { return GetPreview() != NULL
; }
307 wxString m_printoutTitle
;
309 wxPrintPreview
*m_preview
;
311 int m_pageWidthPixels
;
312 int m_pageHeightPixels
;
322 wxRect m_paperRectPixels
;
325 DECLARE_ABSTRACT_CLASS(wxPrintout
)
326 wxDECLARE_NO_COPY_CLASS(wxPrintout
);
329 //----------------------------------------------------------------------------
331 //----------------------------------------------------------------------------
334 * Canvas upon which a preview is drawn.
337 class WXDLLIMPEXP_CORE wxPreviewCanvas
: public wxScrolledWindow
340 wxPreviewCanvas(wxPrintPreviewBase
*preview
,
342 const wxPoint
& pos
= wxDefaultPosition
,
343 const wxSize
& size
= wxDefaultSize
,
345 const wxString
& name
= wxT("canvas"));
346 virtual ~wxPreviewCanvas();
348 void SetPreview(wxPrintPreviewBase
*preview
) { m_printPreview
= preview
; }
350 void OnPaint(wxPaintEvent
& event
);
351 void OnChar(wxKeyEvent
&event
);
352 // Responds to colour changes
353 void OnSysColourChanged(wxSysColourChangedEvent
& event
);
357 void OnMouseWheel(wxMouseEvent
& event
);
358 #endif // wxUSE_MOUSEWHEEL
359 void OnIdle(wxIdleEvent
& event
);
361 wxPrintPreviewBase
* m_printPreview
;
363 DECLARE_CLASS(wxPreviewCanvas
)
364 DECLARE_EVENT_TABLE()
365 wxDECLARE_NO_COPY_CLASS(wxPreviewCanvas
);
368 //----------------------------------------------------------------------------
370 //----------------------------------------------------------------------------
373 * Default frame for showing preview.
376 class WXDLLIMPEXP_CORE wxPreviewFrame
: public wxFrame
379 wxPreviewFrame(wxPrintPreviewBase
*preview
,
381 const wxString
& title
= _("Print Preview"),
382 const wxPoint
& pos
= wxDefaultPosition
,
383 const wxSize
& size
= wxDefaultSize
,
384 long style
= wxDEFAULT_FRAME_STYLE
| wxFRAME_FLOAT_ON_PARENT
,
385 const wxString
& name
= wxFrameNameStr
);
386 virtual ~wxPreviewFrame();
388 void OnCloseWindow(wxCloseEvent
& event
);
389 virtual void Initialize();
390 virtual void CreateCanvas();
391 virtual void CreateControlBar();
393 inline wxPreviewControlBar
* GetControlBar() const { return m_controlBar
; }
396 wxPreviewCanvas
* m_previewCanvas
;
397 wxPreviewControlBar
* m_controlBar
;
398 wxPrintPreviewBase
* m_printPreview
;
399 wxWindowDisabler
* m_windowDisabler
;
402 void OnChar(wxKeyEvent
& event
);
404 DECLARE_EVENT_TABLE()
405 DECLARE_CLASS(wxPreviewFrame
)
406 wxDECLARE_NO_COPY_CLASS(wxPreviewFrame
);
409 //----------------------------------------------------------------------------
410 // wxPreviewControlBar
411 //----------------------------------------------------------------------------
414 * A panel with buttons for controlling a print preview.
415 * The programmer may wish to use other means for controlling
419 #define wxPREVIEW_PRINT 1
420 #define wxPREVIEW_PREVIOUS 2
421 #define wxPREVIEW_NEXT 4
422 #define wxPREVIEW_ZOOM 8
423 #define wxPREVIEW_FIRST 16
424 #define wxPREVIEW_LAST 32
425 #define wxPREVIEW_GOTO 64
427 #define wxPREVIEW_DEFAULT (wxPREVIEW_PREVIOUS|wxPREVIEW_NEXT|wxPREVIEW_ZOOM\
428 |wxPREVIEW_FIRST|wxPREVIEW_GOTO|wxPREVIEW_LAST)
431 #define wxID_PREVIEW_CLOSE 1
432 #define wxID_PREVIEW_NEXT 2
433 #define wxID_PREVIEW_PREVIOUS 3
434 #define wxID_PREVIEW_PRINT 4
435 #define wxID_PREVIEW_ZOOM 5
436 #define wxID_PREVIEW_FIRST 6
437 #define wxID_PREVIEW_LAST 7
438 #define wxID_PREVIEW_GOTO 8
439 #define wxID_PREVIEW_ZOOM_IN 9
440 #define wxID_PREVIEW_ZOOM_OUT 10
442 class WXDLLIMPEXP_CORE wxPreviewControlBar
: public wxPanel
444 DECLARE_CLASS(wxPreviewControlBar
)
447 wxPreviewControlBar(wxPrintPreviewBase
*preview
,
450 const wxPoint
& pos
= wxDefaultPosition
,
451 const wxSize
& size
= wxDefaultSize
,
452 long style
= wxTAB_TRAVERSAL
,
453 const wxString
& name
= wxT("panel"));
454 virtual ~wxPreviewControlBar();
456 virtual void CreateButtons();
457 virtual void SetPageInfo(int minPage
, int maxPage
);
458 virtual void SetZoomControl(int zoom
);
459 virtual int GetZoomControl();
460 virtual wxPrintPreviewBase
*GetPrintPreview() const
461 { return m_printPreview
; }
464 // Implementation only from now on.
465 void OnWindowClose(wxCommandEvent
& event
);
473 void OnPrintButton(wxCommandEvent
& WXUNUSED(event
)) { OnPrint(); }
474 void OnNextButton(wxCommandEvent
& WXUNUSED(event
)) { OnNext(); }
475 void OnPreviousButton(wxCommandEvent
& WXUNUSED(event
)) { OnPrevious(); }
476 void OnFirstButton(wxCommandEvent
& WXUNUSED(event
)) { OnFirst(); }
477 void OnLastButton(wxCommandEvent
& WXUNUSED(event
)) { OnLast(); }
478 void OnPaint(wxPaintEvent
& event
);
480 void OnUpdateNextButton(wxUpdateUIEvent
& event
)
481 { event
.Enable(IsNextEnabled()); }
482 void OnUpdatePreviousButton(wxUpdateUIEvent
& event
)
483 { event
.Enable(IsPreviousEnabled()); }
484 void OnUpdateFirstButton(wxUpdateUIEvent
& event
)
485 { event
.Enable(IsFirstEnabled()); }
486 void OnUpdateLastButton(wxUpdateUIEvent
& event
)
487 { event
.Enable(IsLastEnabled()); }
488 void OnUpdateZoomInButton(wxUpdateUIEvent
& event
)
489 { event
.Enable(IsZoomInEnabled()); }
490 void OnUpdateZoomOutButton(wxUpdateUIEvent
& event
)
491 { event
.Enable(IsZoomOutEnabled()); }
493 // These methods are not private because they are called by wxPreviewCanvas.
498 wxPrintPreviewBase
* m_printPreview
;
499 wxButton
* m_closeButton
;
500 wxChoice
* m_zoomControl
;
501 wxPrintPageTextCtrl
* m_currentPageText
;
502 wxPrintPageMaxCtrl
* m_maxPageText
;
507 void DoGotoPage(int page
);
511 bool IsNextEnabled() const;
512 bool IsPreviousEnabled() const;
513 bool IsFirstEnabled() const;
514 bool IsLastEnabled() const;
515 bool IsZoomInEnabled() const;
516 bool IsZoomOutEnabled() const;
518 void OnZoomInButton(wxCommandEvent
& WXUNUSED(event
)) { DoZoomIn(); }
519 void OnZoomOutButton(wxCommandEvent
& WXUNUSED(event
)) { DoZoomOut(); }
520 void OnZoomChoice(wxCommandEvent
& WXUNUSED(event
)) { DoZoom(); }
522 DECLARE_EVENT_TABLE()
523 wxDECLARE_NO_COPY_CLASS(wxPreviewControlBar
);
526 //----------------------------------------------------------------------------
527 // wxPrintPreviewBase
528 //----------------------------------------------------------------------------
531 * Programmer creates an object of this class to preview a wxPrintout.
534 class WXDLLIMPEXP_CORE wxPrintPreviewBase
: public wxObject
537 wxPrintPreviewBase(wxPrintout
*printout
,
538 wxPrintout
*printoutForPrinting
= NULL
,
539 wxPrintDialogData
*data
= NULL
);
540 wxPrintPreviewBase(wxPrintout
*printout
,
541 wxPrintout
*printoutForPrinting
,
543 virtual ~wxPrintPreviewBase();
545 virtual bool SetCurrentPage(int pageNum
);
546 virtual int GetCurrentPage() const;
548 virtual void SetPrintout(wxPrintout
*printout
);
549 virtual wxPrintout
*GetPrintout() const;
550 virtual wxPrintout
*GetPrintoutForPrinting() const;
552 virtual void SetFrame(wxFrame
*frame
);
553 virtual void SetCanvas(wxPreviewCanvas
*canvas
);
555 virtual wxFrame
*GetFrame() const;
556 virtual wxPreviewCanvas
*GetCanvas() const;
558 // This is a helper routine, used by the next 4 routines.
560 virtual void CalcRects(wxPreviewCanvas
*canvas
, wxRect
& printableAreaRect
, wxRect
& paperRect
);
562 // The preview canvas should call this from OnPaint
563 virtual bool PaintPage(wxPreviewCanvas
*canvas
, wxDC
& dc
);
565 // Updates rendered page by calling RenderPage() if needed, returns true
566 // if there was some change. Preview canvas should call it at idle time
567 virtual bool UpdatePageRendering();
569 // This draws a blank page onto the preview canvas
570 virtual bool DrawBlankPage(wxPreviewCanvas
*canvas
, wxDC
& dc
);
572 // Adjusts the scrollbars for the current scale
573 virtual void AdjustScrollbars(wxPreviewCanvas
*canvas
);
575 // This is called by wxPrintPreview to render a page into a wxMemoryDC.
576 virtual bool RenderPage(int pageNum
);
579 virtual void SetZoom(int percent
);
580 virtual int GetZoom() const;
582 virtual wxPrintDialogData
& GetPrintDialogData();
584 virtual int GetMaxPage() const;
585 virtual int GetMinPage() const;
587 virtual bool Ok() const { return IsOk(); }
588 virtual bool IsOk() const;
589 virtual void SetOk(bool ok
);
591 ///////////////////////////////////////////////////////////////////////////
594 // If we own a wxPrintout that can be used for printing, this
595 // will invoke the actual printing procedure. Called
596 // by the wxPreviewControlBar.
597 virtual bool Print(bool interactive
) = 0;
599 // Calculate scaling that needs to be done to get roughly
600 // the right scaling for the screen pretending to be
601 // the currently selected printer.
602 virtual void DetermineScaling() = 0;
605 // helpers for RenderPage():
606 virtual bool RenderPageIntoDC(wxDC
& dc
, int pageNum
);
607 // renders preview into m_previewBitmap
608 virtual bool RenderPageIntoBitmap(wxBitmap
& bmp
, int pageNum
);
610 void InvalidatePreviewBitmap();
613 wxPrintDialogData m_printDialogData
;
614 wxPreviewCanvas
* m_previewCanvas
;
615 wxFrame
* m_previewFrame
;
616 wxBitmap
* m_previewBitmap
;
617 bool m_previewFailed
;
618 wxPrintout
* m_previewPrintout
;
619 wxPrintout
* m_printPrintout
;
622 float m_previewScaleX
;
623 float m_previewScaleY
;
632 bool m_printingPrepared
; // Called OnPreparePrinting?
635 void Init(wxPrintout
*printout
, wxPrintout
*printoutForPrinting
);
637 wxDECLARE_NO_COPY_CLASS(wxPrintPreviewBase
);
638 DECLARE_CLASS(wxPrintPreviewBase
)
641 //----------------------------------------------------------------------------
643 //----------------------------------------------------------------------------
645 class WXDLLIMPEXP_CORE wxPrintPreview
: public wxPrintPreviewBase
648 wxPrintPreview(wxPrintout
*printout
,
649 wxPrintout
*printoutForPrinting
= NULL
,
650 wxPrintDialogData
*data
= NULL
);
651 wxPrintPreview(wxPrintout
*printout
,
652 wxPrintout
*printoutForPrinting
,
654 virtual ~wxPrintPreview();
656 virtual bool SetCurrentPage(int pageNum
);
657 virtual int GetCurrentPage() const;
658 virtual void SetPrintout(wxPrintout
*printout
);
659 virtual wxPrintout
*GetPrintout() const;
660 virtual wxPrintout
*GetPrintoutForPrinting() const;
661 virtual void SetFrame(wxFrame
*frame
);
662 virtual void SetCanvas(wxPreviewCanvas
*canvas
);
664 virtual wxFrame
*GetFrame() const;
665 virtual wxPreviewCanvas
*GetCanvas() const;
666 virtual bool PaintPage(wxPreviewCanvas
*canvas
, wxDC
& dc
);
667 virtual bool UpdatePageRendering();
668 virtual bool DrawBlankPage(wxPreviewCanvas
*canvas
, wxDC
& dc
);
669 virtual void AdjustScrollbars(wxPreviewCanvas
*canvas
);
670 virtual bool RenderPage(int pageNum
);
671 virtual void SetZoom(int percent
);
672 virtual int GetZoom() const;
674 virtual bool Print(bool interactive
);
675 virtual void DetermineScaling();
677 virtual wxPrintDialogData
& GetPrintDialogData();
679 virtual int GetMaxPage() const;
680 virtual int GetMinPage() const;
682 virtual bool Ok() const { return IsOk(); }
683 virtual bool IsOk() const;
684 virtual void SetOk(bool ok
);
687 wxPrintPreviewBase
*m_pimpl
;
690 DECLARE_CLASS(wxPrintPreview
)
691 wxDECLARE_NO_COPY_CLASS(wxPrintPreview
);
694 //----------------------------------------------------------------------------
695 // wxPrintAbortDialog
696 //----------------------------------------------------------------------------
698 class WXDLLIMPEXP_CORE wxPrintAbortDialog
: public wxDialog
701 wxPrintAbortDialog(wxWindow
*parent
,
702 const wxString
& title
,
703 const wxPoint
& pos
= wxDefaultPosition
,
704 const wxSize
& size
= wxDefaultSize
,
706 const wxString
& name
= wxT("dialog"))
707 : wxDialog(parent
, wxID_ANY
, title
, pos
, size
, style
, name
)
711 void OnCancel(wxCommandEvent
& event
);
714 DECLARE_EVENT_TABLE()
715 wxDECLARE_NO_COPY_CLASS(wxPrintAbortDialog
);
718 #endif // wxUSE_PRINTING_ARCHITECTURE