X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/27476f7368c891de149723b7d4cf9fb922ce8433..d968078adbfb147e913b9a33fc54242a36f117ce:/src/os2/dcprint.cpp diff --git a/src/os2/dcprint.cpp b/src/os2/dcprint.cpp index 8367bb3940..a861f3363d 100644 --- a/src/os2/dcprint.cpp +++ b/src/os2/dcprint.cpp @@ -1,164 +1,78 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.cpp +// Name: src/os2/dcprint.cpp // Purpose: wxPrinterDC class -// Author: Julian Smart +// Author: David Webster // Modified by: -// Created: 01/02/97 +// Created: 10/14/99 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Copyright: (c) David Webster +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "dcprint.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#ifndef WX_PRECOMP -#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 wxUSE_PRINTING_ARCHITECTURE -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxPrinterDC, wxDC) -#endif +#include "wx/dcprint.h" +#include "wx/os2/dcprint.h" #define INCL_DEV #define INCL_GPI #define INCL_PM #include -// 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 != T("")) - 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 +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/math.h" + #include "wx/string.h" + #include "wx/log.h" + #include "wx/window.h" #endif -*/ - if ((!driver_name.IsNull() && driver_name != T("")) && - (!device_name.IsNull() && device_name != T("")) && - (!file.IsNull() && file != T(""))) - { - 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) -{ - m_printData = printData; +#include "wx/os2/private.h" - m_isInteractive = FALSE; +IMPLEMENT_ABSTRACT_CLASS(wxPrinterDCImpl, wxPMDCImpl) - m_hDC = wxGetPrinterDC(printData); +wxPrinterDCImpl::wxPrinterDCImpl( wxPrinterDC *owner, const wxPrintData& rPrintData ) : + wxPMDCImpl( owner ) +{ + 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); + + SetBrush(*wxBLACK_BRUSH); + SetPen(*wxBLACK_PEN); + } +} // end of wxPrinterDC::Init -bool wxPrinterDC::StartDoc(const wxString& message) +bool wxPrinterDCImpl::StartDoc(const wxString& WXUNUSED(rsMessage)) { /* TODO: PM's implementation DOCINFO docinfo; @@ -167,7 +81,7 @@ bool wxPrinterDC::StartDoc(const wxString& message) wxString filename(m_printData.GetFilename()); - if (filename.IsEmpty()) + if (filename.empty()) docinfo.lpszOutput = NULL; else docinfo.lpszOutput = (const wxChar *) filename; @@ -178,7 +92,7 @@ bool wxPrinterDC::StartDoc(const wxString& message) #endif if (!m_hDC) - return FALSE; + return false; int ret = #ifndef __WIN32__ @@ -199,35 +113,44 @@ bool wxPrinterDC::StartDoc(const wxString& message) if (ret <= 0) { DWORD lastError = GetLastError(); - wxLogDebug(T("wxDC::StartDoc failed with error: %d\n"), lastError); + wxLogDebug(wxT("wxDC::StartDoc failed with error: %d\n"), lastError); } #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() +{ + // 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; @@ -256,7 +179,7 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName) if (pd.hDevNames) GlobalFree(pd.hDevNames); - return FALSE; + return false; } if (pd.hDevNames) @@ -278,15 +201,16 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName) GlobalFree(pd.hDevMode); pd.hDevMode=NULL; } - return ( deviceName != T("") ); + 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(); @@ -297,7 +221,7 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst) wxChar* deviceName; wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32 - if (devNameStr == T("")) + if (devNameStr.empty()) deviceName = (wxChar*) NULL; else deviceName = WXSTRINGCAST devNameStr; @@ -309,13 +233,13 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst) if ( hDevMode ) lpDevMode = (DEVMODE*) GlobalLock(hDevMode); - if (devNameStr == T("")) + if (devNameStr.empty()) { // Retrieve the default device name wxString portName; bool ret = wxGetDefaultDeviceName(devNameStr, portName); - wxASSERT_MSG( ret, T("Could not get default device name.") ); + wxASSERT_MSG( ret, wxT("Could not get default device name.") ); deviceName = WXSTRINGCAST devNameStr; } @@ -330,5 +254,39 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst) 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.Ok(), _T("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), + int 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