]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/dcprint.cpp
Added support for wxTEXT_ATTR_EFFECT_SMALL_CAPITALS.
[wxWidgets.git] / src / os2 / dcprint.cpp
index 8367bb39403fc7c6f536c2764b39d77ceab0904e..9f3bd395ccddebd9a7da01d86b4c4682beefbf7b 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        dcprint.cpp
+// Name:        src/os2/dcprint.cpp
 // Purpose:     wxPrinterDC class
 // Purpose:     wxPrinterDC class
-// Author:      Julian Smart
+// Author:      David Webster
 // Modified by:
 // Modified by:
-// Created:     01/02/97
+// Created:     10/14/99
 // RCS-ID:      $Id$
 // 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"
 // 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<os2.h>
 
 
 #define INCL_DEV
 #define INCL_GPI
 #define INCL_PM
 #include<os2.h>
 
-// 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
 #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);
     m_ok = (m_hDC != 0);
-
     if (m_hDC)
         SetMapMode(wxMM_TEXT);
     if (m_hDC)
         SetMapMode(wxMM_TEXT);
-
     SetBrush(*wxBLACK_BRUSH);
     SetPen(*wxBLACK_PEN);
     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)
     {
     if (m_hDC)
     {
-        //     int width = GetDeviceCaps(m_hDC, VERTRES);
-        //     int height = GetDeviceCaps(m_hDC, HORZRES);
         SetMapMode(wxMM_TEXT);
     }
     SetBrush(*wxBLACK_BRUSH);
     SetPen(*wxBLACK_PEN);
         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;
 {
 /* TODO:  PM's implementation
    DOCINFO docinfo;
@@ -167,7 +81,7 @@ bool wxPrinterDC::StartDoc(const wxString& message)
 
     wxString filename(m_printData.GetFilename());
 
 
     wxString filename(m_printData.GetFilename());
 
-    if (filename.IsEmpty())
+    if (filename.empty())
         docinfo.lpszOutput = NULL;
     else
         docinfo.lpszOutput = (const wxChar *) filename;
         docinfo.lpszOutput = NULL;
     else
         docinfo.lpszOutput = (const wxChar *) filename;
@@ -178,7 +92,7 @@ bool wxPrinterDC::StartDoc(const wxString& message)
 #endif
 
     if (!m_hDC)
 #endif
 
     if (!m_hDC)
-        return FALSE;
+        return false;
 
     int ret =
 #ifndef __WIN32__
 
     int ret =
 #ifndef __WIN32__
@@ -199,35 +113,44 @@ bool wxPrinterDC::StartDoc(const wxString& message)
     if (ret <= 0)
     {
         DWORD lastError = GetLastError();
     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);
 */
     }
 #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);
 {
 //    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);
 {
 //    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);
 {
 //    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
 // 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;
 /*
     LPDEVNAMES  lpDevNames;
     LPSTR       lpszDriverName;
@@ -256,7 +179,7 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
 
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
 
-        return FALSE;
+        return false;
     }
 
     if (pd.hDevNames)
     }
 
     if (pd.hDevNames)
@@ -278,27 +201,28 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
         GlobalFree(pd.hDevMode);
         pd.hDevMode=NULL;
     }
         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
 
 // 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();
 
 /*
     wxPrintData printData = printDataConst;
     printData.ConvertToNative();
 
-    wxChar* driverName = (wxChar*) NULL;
+    wxChar* driverName = NULL;
 
     wxString devNameStr = printData.GetPrinterName();
     wxChar* deviceName;
 
     wxString devNameStr = printData.GetPrinterName();
     wxChar* deviceName;
-    wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32
+    wxChar* portName = NULL; // Obsolete in WIN32
 
 
-    if (devNameStr == T(""))
-        deviceName = (wxChar*) NULL;
+    if (devNameStr.empty())
+        deviceName = NULL;
     else
         deviceName = WXSTRINGCAST devNameStr;
 
     else
         deviceName = WXSTRINGCAST devNameStr;
 
@@ -309,13 +233,13 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
     if ( hDevMode )
         lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
 
     if ( hDevMode )
         lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
 
-    if (devNameStr == T(""))
+    if (devNameStr.empty())
     {
         // Retrieve the default device name
         wxString portName;
         bool ret = wxGetDefaultDeviceName(devNameStr, portName);
 
     {
         // 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;
     }
 
         deviceName = WXSTRINGCAST devNameStr;
     }
@@ -330,5 +254,39 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
         GlobalUnlock(hDevMode);
 */
     return (WXHDC) hDC;
         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