// Author: David Webster
// Modified by:
// Created: 10/14/99
-// RCS-ID: $Id$
// Copyright: (c) David Webster
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_PRINTING_ARCHITECTURE
+#include "wx/dcprint.h"
+#include "wx/os2/dcprint.h"
+
#define INCL_DEV
#define INCL_GPI
#define INCL_PM
#include<os2.h>
-#include "wx/dcprint.h"
-
#ifndef WX_PRECOMP
#include "wx/app.h"
#include "wx/math.h"
#include "wx/string.h"
+ #include "wx/log.h"
+ #include "wx/window.h"
#endif
-#include "wx/log.h"
-#include "wx/window.h"
#include "wx/os2/private.h"
-IMPLEMENT_CLASS(wxPrinterDC, wxDC)
-
+IMPLEMENT_ABSTRACT_CLASS(wxPrinterDCImpl, wxPMDCImpl)
-// This form is deprecated
-wxPrinterDC::wxPrinterDC( const wxString& rsDriverName,
- const wxString& rsDeviceName,
- const wxString& rsFile,
- bool bInteractive,
- int nOrientation )
-{
- DEVOPENSTRUC vDevOpen = { (char*)rsDeviceName.c_str()
- ,(char*)rsDriverName.c_str()
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- };
-
- m_isInteractive = bInteractive;
-
- if (!rsFile.IsNull() && !rsFile.empty())
- m_printData.SetFilename(rsFile);
-
-/*
- Implement PM's version of this
-#if wxUSE_COMMON_DIALOGS
- if (interactive)
- {
- PRINTDLG pd;
-
- pd.lStructSize = sizeof( PRINTDLG );
- pd.hwndOwner=(HWND) NULL;
- pd.hDevMode=(HANDLE)NULL;
- pd.hDevNames=(HANDLE)NULL;
- pd.Flags=PD_RETURNDC | PD_NOSELECTION | PD_NOPAGENUMS;
- pd.nFromPage=0;
- pd.nToPage=0;
- pd.nMinPage=0;
- pd.nMaxPage=0;
- pd.nCopies=1;
- pd.hInstance=(HINSTANCE)NULL;
-
- if ( PrintDlg( &pd ) != 0 )
- {
- m_hDC = (WXHDC) pd.hDC;
- m_ok = true;
- }
- else
- {
- m_ok = false;
- return;
- }
- }
- else
-#endif
-*/
- if ( !rsDriverName.empty() &&
- !rsDeviceName.empty() &&
- !rsFile.empty() )
- {
- m_hDC = (WXHDC) ::DevOpenDC( vHabmain
- ,OD_QUEUED
- ,"*"
- ,5L
- ,(PDEVOPENDATA)&vDevOpen
- ,NULLHANDLE
- );
- m_ok = m_hDC ? true: false;
- }
- else
- {
- wxPrintData vPrintData;
-
- vPrintData.SetOrientation(nOrientation);
- m_hDC = wxGetPrinterDC(vPrintData);
- m_ok = m_hDC ? true: false;
- }
-
- if (m_hDC)
- {
- // int width = GetDeviceCaps(m_hDC, VERTRES);
- // int height = GetDeviceCaps(m_hDC, HORZRES);
- SetMapMode(wxMM_TEXT);
- }
- SetBrush(*wxBLACK_BRUSH);
- SetPen(*wxBLACK_PEN);
-} // end of wxPrinterDC::wxPrinterDC
-
-wxPrinterDC::wxPrinterDC( const wxPrintData& rPrintData )
+wxPrinterDCImpl::wxPrinterDCImpl( wxPrinterDC *owner, const wxPrintData& rPrintData ) :
+ wxPMDCImpl( owner )
{
m_printData = rPrintData;
m_isInteractive = false;
SetPen(*wxBLACK_PEN);
} // end of wxPrinterDC::wxPrinterDC
-wxPrinterDC::wxPrinterDC( WXHDC hTheDC )
+wxPrinterDCImpl::wxPrinterDCImpl( wxPrinterDC *owner, WXHDC hTheDC ) :
+ wxPMDCImpl( owner )
{
m_isInteractive = false;
m_hDC = hTheDC;
SetPen(*wxBLACK_PEN);
} // end of wxPrinterDC::wxPrinterDC
-void wxPrinterDC::Init()
+void wxPrinterDCImpl::Init()
{
if (m_hDC)
{
}
} // end of wxPrinterDC::Init
-bool wxPrinterDC::StartDoc(const wxString& WXUNUSED(rsMessage))
+bool wxPrinterDCImpl::StartDoc(const wxString& WXUNUSED(rsMessage))
{
/* TODO: PM's implementation
DOCINFO docinfo;
else
docinfo.lpszOutput = (const wxChar *) filename;
-#if defined(__WIN95__)
docinfo.lpszDatatype = NULL;
docinfo.fwType = 0;
-#endif
if (!m_hDC)
return false;
return true;
} // end of wxPrinterDC::StartDoc
-void wxPrinterDC::EndDoc()
+void wxPrinterDCImpl::EndDoc()
{
// if (m_hDC) ::EndDoc((HDC) m_hDC);
} // end of wxPrinterDC::EndDoc
-void wxPrinterDC::StartPage()
+void wxPrinterDCImpl::StartPage()
{
// if (m_hDC)
// ::StartPage((HDC) m_hDC);
} // end of wxPrinterDC::StartPage
-void wxPrinterDC::EndPage()
+void wxPrinterDCImpl::EndPage()
{
// if (m_hDC)
// ::EndPage((HDC) m_hDC);
} // end of wxPrinterDC::EndPage
+
+wxRect wxPrinterDCImpl::GetPaperRect() const
+{
+ // Use page rect if we can't get paper rect.
+ wxCoord w, h;
+ GetSize(&w, &h);
+ return wxRect(0, 0, w, h);
+}
+
#if 0
// Returns default device and port names
static bool wxGetDefaultDeviceName( wxString& rsDeviceName, wxString& rsPortName )
GlobalFree(pd.hDevMode);
pd.hDevMode=NULL;
}
- return ( deviceName != wxT("") );
+ return !deviceName.empty();
*/
return true;
} // end of wxGetDefaultDeviceName
wxPrintData printData = printDataConst;
printData.ConvertToNative();
- wxChar* driverName = (wxChar*) NULL;
+ wxChar* driverName = NULL;
wxString devNameStr = printData.GetPrinterName();
wxChar* deviceName;
- wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32
+ wxChar* portName = NULL; // Obsolete in WIN32
if (devNameStr.empty())
- deviceName = (wxChar*) NULL;
+ deviceName = NULL;
else
deviceName = WXSTRINGCAST devNameStr;
return (WXHDC) hDC;
} // end of wxGetPrinterDC
-void wxPrinterDC::DoDrawBitmap( const wxBitmap& rBmp,
- wxCoord WXUNUSED(vX),
- wxCoord WXUNUSED(vY),
- bool WXUNUSED(bUseMask))
+void wxPrinterDCImpl::DoDrawBitmap( const wxBitmap& rBmp,
+ wxCoord WXUNUSED(vX),
+ wxCoord WXUNUSED(vY),
+ bool WXUNUSED(bUseMask))
{
- wxCHECK_RET( rBmp.Ok(), _T("invalid bitmap in wxPrinterDC::DrawBitmap") );
+ wxCHECK_RET( rBmp.IsOk(), wxT("invalid bitmap in wxPrinterDC::DrawBitmap") );
// int nWidth = rBmp.GetWidth();
// int nHeight = rBmp.GetHeight();
} // end of wxPrinterDC::DoDrawBitmap
-bool wxPrinterDC::DoBlit( wxCoord WXUNUSED(vXdest),
- wxCoord WXUNUSED(vYdest),
- wxCoord WXUNUSED(vWidth),
- wxCoord WXUNUSED(vHeight),
- wxDC* WXUNUSED(pSource),
- wxCoord WXUNUSED(vXsrc),
- wxCoord WXUNUSED(vYsrc),
- int WXUNUSED(nRop),
- bool WXUNUSED(bUseMask),
- wxCoord WXUNUSED(xsrcMask),
- wxCoord WXUNUSED(ysrcMask) )
+bool wxPrinterDCImpl::DoBlit( wxCoord WXUNUSED(vXdest),
+ wxCoord WXUNUSED(vYdest),
+ wxCoord WXUNUSED(vWidth),
+ wxCoord WXUNUSED(vHeight),
+ wxDC* WXUNUSED(pSource),
+ wxCoord WXUNUSED(vXsrc),
+ wxCoord WXUNUSED(vYsrc),
+ wxRasterOperationMode WXUNUSED(nRop),
+ bool WXUNUSED(bUseMask),
+ wxCoord WXUNUSED(xsrcMask),
+ wxCoord WXUNUSED(ysrcMask) )
{
bool bSuccess = true;
// TODO:
return bSuccess;
-} // end of wxPrintDC::DoBlit
+} // end of wxPrintDCImpl::DoBlit
#endif //wxUSE_PRINTING_ARCHITECTURE