Robert Lang's patch [ 1583183 ] Fixes printing/print preview inconsistencies
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -419,6 +419,7 @@ public: | ||||
|     wxPageSetupDialogData& operator=(const wxPrintData& data); | ||||
|  | ||||
|     wxPrintData& GetPrintData() { return m_printData; } | ||||
|     const wxPrintData& GetPrintData() const { return m_printData; } | ||||
|     void SetPrintData(const wxPrintData& printData); | ||||
|  | ||||
| private: | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| ///////////////////////////////////////////////////////////////////////////// | ||||
| // Name:        dcprint.h | ||||
| // Name:        wx/mac/carbon/dcprint.h | ||||
| // Purpose:     wxPrinterDC class | ||||
| // Author:      Stefan Csomor | ||||
| // Modified by: | ||||
| @@ -31,6 +31,9 @@ class WXDLLEXPORT wxPrinterDC: public wxDC | ||||
|     virtual void EndDoc(void) ; | ||||
|     virtual void StartPage(void) ; | ||||
|     virtual void EndPage(void) ; | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
|     wxPrintData& GetPrintData() { return m_printData; } | ||||
|     virtual wxSize GetPPI() const; | ||||
| #if wxMAC_USE_CORE_GRAPHICS | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| ///////////////////////////////////////////////////////////////////////////// | ||||
| // Name:        printdlg.h | ||||
| // Name:        wx/mac/carbon/printdlg.h | ||||
| // Purpose:     wxPrintDialog, wxPageSetupDialog classes. | ||||
| //              Use generic, PostScript version if no | ||||
| //              platform-specific implementation. | ||||
| @@ -58,21 +58,54 @@ private: | ||||
| class WXDLLEXPORT wxMacPageSetupDialog: public wxPageSetupDialogBase | ||||
| { | ||||
| public: | ||||
|     wxMacPageSetupDialog(wxWindow *parent, wxPageSetupDialogData *data = NULL); | ||||
|     wxMacPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL); | ||||
|     virtual ~wxMacPageSetupDialog(); | ||||
|  | ||||
|     virtual wxPageSetupData& GetPageSetupDialogData(); | ||||
|      | ||||
|     bool Create(wxWindow *parent, wxPageSetupDialogData *data = NULL); | ||||
|     bool Create(wxWindow *parent, wxPageSetupData *data = NULL); | ||||
|     virtual int ShowModal(); | ||||
|    | ||||
| private: | ||||
|     wxPageSetupDialogData   m_pageSetupData; | ||||
|     wxPageSetupData   m_pageSetupData; | ||||
|     wxWindow*               m_dialogParent; | ||||
|    | ||||
| private: | ||||
|     DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacPageSetupDialog) | ||||
| }; | ||||
|  | ||||
| #endif | ||||
|     // _WX_PRINTDLG_H_ | ||||
|  | ||||
| /* | ||||
| * wxMacPageMarginsDialog | ||||
| * A Mac dialog for setting the page margins separately from page setup since | ||||
| * (native) wxMacPageSetupDialog doesn't let you set margins. | ||||
| */ | ||||
|  | ||||
| class WXDLLEXPORT wxMacPageMarginsDialog : public wxDialog | ||||
| { | ||||
| public: | ||||
|     wxMacPageMarginsDialog(wxFrame* parent, wxPageSetupData* data); | ||||
|     bool TransferToWindow(); | ||||
|     bool TransferDataFromWindow(); | ||||
|  | ||||
|     virtual wxPageSetupData& GetPageSetupDialogData() { return *m_pageSetupDialogData; } | ||||
|  | ||||
| private: | ||||
|     wxPageSetupData* m_pageSetupDialogData; | ||||
|      | ||||
|     wxPoint m_MinMarginTopLeft; | ||||
|     wxPoint m_MinMarginBottomRight; | ||||
|     wxTextCtrl *m_LeftMargin; | ||||
|     wxTextCtrl *m_TopMargin; | ||||
|     wxTextCtrl *m_RightMargin; | ||||
|     wxTextCtrl *m_BottomMargin; | ||||
|      | ||||
|     void GetMinMargins(); | ||||
|     bool CheckValue(wxTextCtrl* textCtrl, int *value, int minValue, const wxString& name); | ||||
|      | ||||
| private: | ||||
|     DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacPageMarginsDialog) | ||||
| }; | ||||
|  | ||||
|  | ||||
| #endif    // _WX_PRINTDLG_H_ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| ///////////////////////////////////////////////////////////////////////////// | ||||
| // Name:        dcprint.h | ||||
| // Name:        wx/mac/classic/dcprint.h | ||||
| // Purpose:     wxPrinterDC class | ||||
| // Author:      Stefan Csomor | ||||
| // Modified by: | ||||
| @@ -31,6 +31,9 @@ class WXDLLEXPORT wxPrinterDC: public wxDC | ||||
|     virtual void EndDoc(void) ; | ||||
|     virtual void StartPage(void) ; | ||||
|     virtual void EndPage(void) ; | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
|     wxPrintData& GetPrintData() { return m_printData; } | ||||
|     virtual void DoGetSize( int *width, int *height ) const; | ||||
|      | ||||
|   | ||||
| @@ -59,11 +59,43 @@ class WXDLLEXPORT wxPageSetupDialog: public wxDialog | ||||
|   bool Create(wxWindow *parent, wxPageSetupData *data = NULL); | ||||
|   virtual int ShowModal(); | ||||
|  | ||||
|   inline wxPageSetupData& GetPageSetupData() { return m_pageSetupData; } | ||||
|   virtual wxPageSetupData& GetPageSetupDialogData() { return m_pageSetupData; } | ||||
|  private: | ||||
|   wxPageSetupData   m_pageSetupData; | ||||
|   wxWindow*         m_dialogParent; | ||||
| }; | ||||
|  | ||||
| #endif | ||||
|     // _WX_PRINTDLG_H_ | ||||
|  | ||||
| /* | ||||
| * wxMacPageMarginsDialog | ||||
| * A Mac dialog for setting the page margins separately from page setup since | ||||
| * (native) wxMacPageSetupDialog doesn't let you set margins. | ||||
| */ | ||||
|  | ||||
| class WXDLLEXPORT wxMacPageMarginsDialog : public wxDialog | ||||
| { | ||||
| public: | ||||
|     wxMacPageMarginsDialog(wxFrame* parent, wxPageSetupData* data); | ||||
|     bool TransferToWindow(); | ||||
|     bool TransferDataFromWindow(); | ||||
|     virtual wxPageSetupData& GetPageSetupDialogData() { return *m_pageSetupDialogData; } | ||||
|  | ||||
| private: | ||||
|     wxPageSetupData* m_pageSetupDialogData; | ||||
|      | ||||
|     wxPoint m_MinMarginTopLeft; | ||||
|     wxPoint m_MinMarginBottomRight; | ||||
|     wxTextCtrl *m_LeftMargin; | ||||
|     wxTextCtrl *m_TopMargin; | ||||
|     wxTextCtrl *m_RightMargin; | ||||
|     wxTextCtrl *m_BottomMargin; | ||||
|      | ||||
|     void GetMinMargins(); | ||||
|     bool CheckValue(wxTextCtrl* textCtrl, int *value, int minValue, const wxString& name); | ||||
|      | ||||
| private: | ||||
|     DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacPageMarginsDialog) | ||||
| }; | ||||
|  | ||||
|  | ||||
| #endif    // _WX_PRINTDLG_H_ | ||||
|   | ||||
| @@ -22,6 +22,8 @@ public: | ||||
|     // Create a printer DC | ||||
|     wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = true, int orientation = wxPORTRAIT); | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
|     virtual ~wxPrinterDC(); | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -34,6 +34,8 @@ public: | ||||
|     virtual void StartPage(); | ||||
|     virtual void EndPage(); | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
| protected: | ||||
|     virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y, | ||||
|                               bool useMask = false); | ||||
|   | ||||
| @@ -68,11 +68,12 @@ public: | ||||
|  | ||||
|     wxPrintDialogData& GetPrintDialogData() { return m_printDialogData; } | ||||
|     wxPrintData& GetPrintData() { return m_printDialogData.GetPrintData(); } | ||||
|  | ||||
|     virtual wxDC *GetPrintDC(); | ||||
|  | ||||
| private: | ||||
|     wxPrintDialogData m_printDialogData; | ||||
|     wxDC*             m_printerDC; | ||||
|     wxPrinterDC*      m_printerDC; | ||||
|     bool              m_destroyDC; | ||||
|     wxWindow*         m_dialogParent; | ||||
|      | ||||
|   | ||||
| @@ -29,7 +29,8 @@ public: | ||||
|     virtual bool Print(wxWindow *parent, | ||||
|                        wxPrintout *printout, | ||||
|                        bool prompt = true); | ||||
|     virtual wxDC* PrintDialog(wxWindow *parent); | ||||
|  | ||||
|     virtual wxDC *PrintDialog(wxWindow *parent); | ||||
|     virtual bool Setup(wxWindow *parent); | ||||
|  | ||||
| private: | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| ///////////////////////////////////////////////////////////////////////////// | ||||
| // Name:        dcprint.h | ||||
| // Name:        wx/os2/dcprint.h | ||||
| // Purpose:     wxPrinterDC class | ||||
| // Author:      David Webster | ||||
| // Modified by: | ||||
| @@ -37,6 +37,8 @@ class WXDLLEXPORT wxPrinterDC: public wxDC | ||||
|     void StartPage(void); | ||||
|     void EndPage(void); | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
| protected: | ||||
|     virtual void DoDrawBitmap( const wxBitmap& rBmp | ||||
|                               ,wxCoord         vX | ||||
|   | ||||
| @@ -34,6 +34,8 @@ public: | ||||
|     virtual void StartPage(); | ||||
|     virtual void EndPage(); | ||||
|  | ||||
|     wxRect GetPaperRect(); | ||||
|  | ||||
| protected: | ||||
|     virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y, | ||||
|                               bool useMask = FALSE); | ||||
|   | ||||
| @@ -261,6 +261,22 @@ public: | ||||
|  | ||||
|     wxDC *GetDC() const { return m_printoutDC; } | ||||
|     void SetDC(wxDC *dc) { m_printoutDC = dc; } | ||||
|  | ||||
|     void FitThisSizeToPaper(const wxSize& imageSize); | ||||
|     void FitThisSizeToPage(const wxSize& imageSize); | ||||
|     void FitThisSizeToPageMargins(const wxSize& imageSize, const wxPageSetupDialogData& pageSetupData); | ||||
|     void MapScreenSizeToPaper(); | ||||
|     void MapScreenSizeToPage(); | ||||
|     void MapScreenSizeToPageMargins(const wxPageSetupDialogData& pageSetupData); | ||||
|     void MapScreenSizeToDevice(); | ||||
|  | ||||
|     wxRect GetLogicalPaperRect() const; | ||||
|     wxRect GetLogicalPageRect() const; | ||||
|     wxRect GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSetupData) const; | ||||
|  | ||||
|     void SetLogicalOrigin(wxCoord x, wxCoord y); | ||||
|     void OffsetLogicalOrigin(wxCoord xoff, wxCoord yoff); | ||||
|  | ||||
|     void SetPageSizePixels(int w, int  h) { m_pageWidthPixels = w; m_pageHeightPixels = h; } | ||||
|     void GetPageSizePixels(int *w, int  *h) const { *w = m_pageWidthPixels; *h = m_pageHeightPixels; } | ||||
|     void SetPageSizeMM(int w, int  h) { m_pageWidthMM = w; m_pageHeightMM = h; } | ||||
| @@ -271,6 +287,9 @@ public: | ||||
|     void SetPPIPrinter(int x, int y) { m_PPIPrinterX = x; m_PPIPrinterY = y; } | ||||
|     void GetPPIPrinter(int *x, int *y) const { *x = m_PPIPrinterX; *y = m_PPIPrinterY; } | ||||
|  | ||||
|     void SetPaperRectPixels(const wxRect& paperRectPixels) { m_paperRectPixels = paperRectPixels; } | ||||
|     wxRect GetPaperRectPixels() const { return m_paperRectPixels; } | ||||
|  | ||||
|     virtual bool IsPreview() const { return m_isPreview; } | ||||
|  | ||||
|     virtual void SetIsPreview(bool p) { m_isPreview = p; } | ||||
| @@ -290,6 +309,8 @@ private: | ||||
|     int              m_PPIPrinterX; | ||||
|     int              m_PPIPrinterY; | ||||
|  | ||||
|     wxRect           m_paperRectPixels; | ||||
|  | ||||
|     bool             m_isPreview; | ||||
|  | ||||
| private: | ||||
| @@ -297,8 +318,11 @@ private: | ||||
|     DECLARE_NO_COPY_CLASS(wxPrintout) | ||||
| }; | ||||
|  | ||||
| //---------------------------------------------------------------------------- | ||||
| // wxPreviewCanvas | ||||
| //---------------------------------------------------------------------------- | ||||
|  | ||||
| /* | ||||
|  * wxPreviewCanvas | ||||
|  * Canvas upon which a preview is drawn. | ||||
|  */ | ||||
|  | ||||
| @@ -330,8 +354,11 @@ private: | ||||
|     DECLARE_NO_COPY_CLASS(wxPreviewCanvas) | ||||
| }; | ||||
|  | ||||
| //---------------------------------------------------------------------------- | ||||
| // wxPreviewFrame | ||||
| //---------------------------------------------------------------------------- | ||||
|  | ||||
| /* | ||||
|  * wxPreviewFrame | ||||
|  * Default frame for showing preview. | ||||
|  */ | ||||
|  | ||||
| @@ -366,8 +393,11 @@ private: | ||||
|     DECLARE_NO_COPY_CLASS(wxPreviewFrame) | ||||
| }; | ||||
|  | ||||
| //---------------------------------------------------------------------------- | ||||
| // wxPreviewControlBar | ||||
| //---------------------------------------------------------------------------- | ||||
|  | ||||
| /* | ||||
|  * wxPreviewControlBar | ||||
|  * A panel with buttons for controlling a print preview. | ||||
|  * The programmer may wish to use other means for controlling | ||||
|  * the print preview. | ||||
| @@ -479,6 +509,10 @@ public: | ||||
|     virtual wxFrame *GetFrame() const; | ||||
|     virtual wxPreviewCanvas *GetCanvas() const; | ||||
|  | ||||
|     // This is a helper routine, used by the next 4 routines. | ||||
|  | ||||
|     virtual void CalcRects(wxPreviewCanvas *canvas, wxRect& printableAreaRect, wxRect& paperRect); | ||||
|  | ||||
|     // The preview canvas should call this from OnPaint | ||||
|     virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc); | ||||
|  | ||||
| @@ -526,7 +560,8 @@ protected: | ||||
|     wxPrintout*       m_printPrintout; | ||||
|     int               m_currentPage; | ||||
|     int               m_currentZoom; | ||||
|     float             m_previewScale; | ||||
|     float             m_previewScaleX; | ||||
|     float             m_previewScaleY; | ||||
|     int               m_topMargin; | ||||
|     int               m_leftMargin; | ||||
|     int               m_pageWidth; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user