/////////////////////////////////////////////////////////////////////////////
-// Name: dcprint.cpp
+// Name: src/os2/dcprint.cpp
// Purpose: wxPrinterDC class
// Author: David Webster
// Modified by:
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+#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>
#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/string.h"
-#include "wx/log.h"
-#include "wx/window.h"
#include "wx/os2/private.h"
-#include "wx/dcprint.h"
-#include "math.h"
-
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_CLASS(wxPrinterDC, wxDC)
-#endif
+IMPLEMENT_ABSTRACT_CLASS(wxPrinterDCImpl, wxPMDCImpl)
-// This form is deprecated
-wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation)
-{
- LONG lType;
- HAB hab;
- DEVOPENSTRUC devOpen = { (char*)device_name.c_str()
- ,(char*)driver_name.c_str()
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- ,NULL
- };
-
- m_isInteractive = interactive;
-
- if (!file.IsNull() && file != wxT(""))
- m_printData.SetFilename(file);
-
-/*
- 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;
- }
-
- // m_dontDelete = TRUE;
- }
- else
-#endif
-*/
- if ((!driver_name.IsNull() && driver_name != wxT("")) &&
- (!device_name.IsNull() && device_name != wxT("")) &&
- (!file.IsNull() && file != wxT("")))
- {
- m_hDC = (WXHDC) ::DevOpenDC( hab
- ,OD_QUEUED
- ,"*"
- ,5L
- ,(PDEVOPENDATA)&devOpen
- ,NULLHANDLE
- );
- m_ok = m_hDC ? TRUE: FALSE;
- }
- else
- {
- wxPrintData printData;
- printData.SetOrientation(orientation);
- m_hDC = wxGetPrinterDC(printData);
- 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);
-}
-
-wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
+wxPrinterDCImpl::wxPrinterDCImpl( wxPrinterDC *owner, const wxPrintData& rPrintData ) :
+ wxPMDCImpl( owner )
{
- m_printData = printData;
-
- m_isInteractive = FALSE;
-
- m_hDC = wxGetPrinterDC(printData);
+ m_printData = rPrintData;
+ m_isInteractive = false;
+ m_hDC = wxGetPrinterDC(rPrintData);
m_ok = (m_hDC != 0);
-
if (m_hDC)
SetMapMode(wxMM_TEXT);
-
SetBrush(*wxBLACK_BRUSH);
SetPen(*wxBLACK_PEN);
-}
-
+} // end of wxPrinterDC::wxPrinterDC
-wxPrinterDC::wxPrinterDC(WXHDC theDC)
+wxPrinterDCImpl::wxPrinterDCImpl( wxPrinterDC *owner, WXHDC hTheDC ) :
+ wxPMDCImpl( owner )
{
- m_isInteractive = FALSE;
-
- m_hDC = theDC;
- m_ok = TRUE;
+ m_isInteractive = false;
+ m_hDC = hTheDC;
+ m_ok = true;
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(void)
+void wxPrinterDCImpl::Init()
{
-}
+ if (m_hDC)
+ {
+ SetMapMode(wxMM_TEXT);
-bool wxPrinterDC::StartDoc(const wxString& message)
+ SetBrush(*wxBLACK_BRUSH);
+ SetPen(*wxBLACK_PEN);
+ }
+} // end of wxPrinterDC::Init
+
+bool wxPrinterDCImpl::StartDoc(const wxString& WXUNUSED(rsMessage))
{
/* TODO: PM's implementation
DOCINFO docinfo;
wxString filename(m_printData.GetFilename());
- if (filename.IsEmpty())
+ if (filename.empty())
docinfo.lpszOutput = NULL;
else
docinfo.lpszOutput = (const wxChar *) filename;
#endif
if (!m_hDC)
- return FALSE;
+ return false;
int ret =
#ifndef __WIN32__
#endif
return (ret > 0);
*/
- return(TRUE);
-}
+ return true;
+} // end of wxPrinterDC::StartDoc
-void wxPrinterDC::EndDoc(void)
+void wxPrinterDCImpl::EndDoc()
{
// if (m_hDC) ::EndDoc((HDC) m_hDC);
-}
+} // end of wxPrinterDC::EndDoc
-void wxPrinterDC::StartPage(void)
+void wxPrinterDCImpl::StartPage()
{
// if (m_hDC)
// ::StartPage((HDC) m_hDC);
-}
+} // end of wxPrinterDC::StartPage
-void wxPrinterDC::EndPage(void)
+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& deviceName, wxString& portName)
+static bool wxGetDefaultDeviceName( wxString& rsDeviceName, wxString& rsPortName )
{
- deviceName = "";
+ rsDeviceName = wxEmptyString;
/*
LPDEVNAMES lpDevNames;
LPSTR lpszDriverName;
if (pd.hDevNames)
GlobalFree(pd.hDevNames);
- return FALSE;
+ return false;
}
if (pd.hDevNames)
GlobalFree(pd.hDevMode);
pd.hDevMode=NULL;
}
- return ( deviceName != wxT("") );
+ return !deviceName.empty();
*/
- return(TRUE);
-}
+ return true;
+} // end of wxGetDefaultDeviceName
+#endif
// Gets an HDC for the specified printer configuration
-WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
+WXHDC WXDLLEXPORT wxGetPrinterDC( const wxPrintData& WXUNUSED(rPrintDataConst) )
{
- HDC hDC;
+ HDC hDC = NULLHANDLE;
/*
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 == wxT(""))
- deviceName = (wxChar*) NULL;
+ if (devNameStr.empty())
+ deviceName = NULL;
else
deviceName = WXSTRINGCAST devNameStr;
if ( hDevMode )
lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
- if (devNameStr == wxT(""))
+ if (devNameStr.empty())
{
// Retrieve the default device name
wxString portName;
GlobalUnlock(hDevMode);
*/
return (WXHDC) hDC;
-}
+} // end of wxGetPrinterDC
+
+void wxPrinterDCImpl::DoDrawBitmap( const wxBitmap& rBmp,
+ wxCoord WXUNUSED(vX),
+ wxCoord WXUNUSED(vY),
+ bool WXUNUSED(bUseMask))
+{
+ wxCHECK_RET( rBmp.IsOk(), wxT("invalid bitmap in wxPrinterDC::DrawBitmap") );
+
+// int nWidth = rBmp.GetWidth();
+// int nHeight = rBmp.GetHeight();
+
+ // TODO:
+
+} // end of wxPrinterDC::DoDrawBitmap
+
+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 wxPrintDCImpl::DoBlit
+#endif //wxUSE_PRINTING_ARCHITECTURE