]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/pen.cpp
Implemented user dashes for PS print.
[wxWidgets.git] / src / os2 / pen.cpp
index 4e47b28cbbf69834c286b8db198b5bcf1c2878e6..dc85074fd91425835a425ef0e189e592ae160b53 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        pen.cpp
+// Name:        src/os2/pen.cpp
 // Purpose:     wxPen
 // Author:      David Webster
 // Modified by:
 #include "wx/wxprec.h"
 
 #ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/setup.h"
-#include "wx/list.h"
-#include "wx/utils.h"
-#include "wx/app.h"
-#include "wx/pen.h"
+    #include <stdio.h>
+    #include "wx/list.h"
+    #include "wx/utils.h"
+    #include "wx/app.h"
+    #include "wx/pen.h"
+    #include "wx/log.h"
 #endif
 
 #include "wx/os2/private.h"
@@ -108,6 +108,10 @@ wxPen::wxPen(
         wxThePenList->AddPen(this);
 } // end of wxPen::wxPen
 
+int wx2os2PenStyle(
+  int                               nWxStyle
+);
+
 bool wxPen::RealizeResource()
 {
     BOOL                            bOk;
@@ -146,16 +150,16 @@ bool wxPen::RealizeResource()
         {
             vError = ::WinGetLastError(vHabmain);
             sError = wxPMErrorToStr(vError);
-            wxLogError("Unable to set current color table to RGB mode. Error: %s\n", sError);
-            return FALSE;
+            wxLogError(_T("Unable to set current color table to RGB mode. Error: %s\n"), sError.c_str());
+            return false;
         }
         if (M_PENDATA->m_nStyle == wxTRANSPARENT)
         {
-            return TRUE;
+            return true;
         }
 
-        COLORREF                    vPmColour = 0L;
-        USHORT                      uLineType = wx2os2PenStyle(M_PENDATA->m_nStyle);
+        COLORREF vPmColour = 0L;
+        USHORT   uLineType = (USHORT)wx2os2PenStyle(M_PENDATA->m_nStyle);
 
         vPmColour = M_PENDATA->m_vColour.GetPixel();
 
@@ -210,10 +214,12 @@ bool wxPen::RealizeResource()
         {
             vError = ::WinGetLastError(vHabmain);
             sError = wxPMErrorToStr(vError);
-            wxLogError("Can't set Gpi attributes for a LINEBUNDLE. Error: %s\n", sError);
-            return FALSE;
+            wxLogError(_T("Can't set Gpi attributes for a LINEBUNDLE. Error: %s\n"), sError.c_str());
+            return false;
         }
 
+        ULONG                           flAttrMask = 0L;
+        ULONG                           flDefMask = 0L;
         switch(M_PENDATA->m_nStyle)
         {
             case wxSTIPPLE:
@@ -224,65 +230,81 @@ bool wxPen::RealizeResource()
                 ::GpiSetPatternSet( M_PENDATA->m_hPen
                                    ,(USHORT)M_PENDATA->m_vStipple.GetId()
                                   );
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SET | ABB_SYMBOL;
+                flDefMask = ABB_REF_POINT;
                 break;
 
             case wxBDIAGONAL_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_DIAG3;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             case wxCROSSDIAG_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_DIAGHATCH;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             case wxFDIAGONAL_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_DIAG1;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             case wxCROSS_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_HATCH;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             case wxHORIZONTAL_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_HORIZ;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             case wxVERTICAL_HATCH:
                 m_vAreaBundle.usSymbol = PATSYM_VERT;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
 
             default:
                 m_vAreaBundle.usSymbol = PATSYM_SOLID;
                 m_vAreaBundle.usSet = LCID_DEFAULT;
+                flAttrMask = ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | ABB_SYMBOL;
+                flDefMask = ABB_SET | ABB_REF_POINT;
                 break;
         }
 
         m_vAreaBundle.lColor        = vPmColour;
-        m_vAreaBundle.lBackColor    = CLR_DEFAULT;
+        m_vAreaBundle.lBackColor    = RGB_WHITE;
         m_vAreaBundle.usMixMode     = FM_OVERPAINT;
         m_vAreaBundle.usBackMixMode = BM_OVERPAINT;
 
         bOk = ::GpiSetAttrs( M_PENDATA->m_hPen
                             ,PRIM_AREA
-                            ,ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE |
-                             ABB_SET | ABB_SYMBOL
-                            ,ABB_REF_POINT
+                            ,flAttrMask
+                            ,flDefMask
                             ,&m_vAreaBundle
                            );
         if (!bOk)
         {
             vError = ::WinGetLastError(vHabmain);
             sError = wxPMErrorToStr(vError);
-            wxLogError("Can't set Gpi attributes for an AREABUNDLE. Error: %s\n", sError);
+            wxLogError(_T("Can't set Gpi attributes for an AREABUNDLE. Error: %s\n"), sError.c_str());
         }
-        return bOk;
+
+        return (bool)bOk;
     }
-    return FALSE;
+    return false;
 } // end of wxPen::RealizeResource
 
 WXHANDLE wxPen::GetResourceHandle()
@@ -293,16 +315,14 @@ WXHANDLE wxPen::GetResourceHandle()
         return (WXHANDLE)M_PENDATA->m_hPen;
 } // end of wxPen::GetResourceHandle
 
-bool wxPen::FreeResource(
-  bool                              bForce
-)
+bool wxPen::FreeResource( bool WXUNUSED(bForce) )
 {
     if (M_PENDATA && (M_PENDATA->m_hPen != 0))
     {
         M_PENDATA->m_hPen = 0;
-        return TRUE;
+        return true;
     }
-    else return FALSE;
+    else return false;
 } // end of wxPen::FreeResource
 
 bool wxPen::IsFree() const
@@ -325,29 +345,21 @@ void wxPen::Unshare()
     }
 } // end of wxPen::Unshare
 
-void wxPen::SetColour(
-  const wxColour&                   rColour
-)
+void wxPen::SetColour( const wxColour& rColour )
 {
     Unshare();
     M_PENDATA->m_vColour = rColour;
     RealizeResource();
 } // end of wxPen::SetColour
 
-void wxPen::SetColour(
-  unsigned char                     cRed
-, unsigned char                     cGreen
-, unsigned char                     cBlue
-)
+void wxPen::SetColour( unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
 {
     Unshare();
     M_PENDATA->m_vColour.Set(cRed, cGreen, cBlue);
     RealizeResource();
 } // end of wxPen::SetColour
 
-void wxPen::SetPS(
-  HPS                               hPS
-)
+void wxPen::SetPS( HPS hPS )
 {
     Unshare();
     if (M_PENDATA->m_hPen)
@@ -384,10 +396,8 @@ void wxPen::SetStipple(
     RealizeResource();
 } // end of wxPen::SetStipple
 
-void wxPen::SetDashes(
-  int                               nNbDashes
-, const wxDash*                     pDash
-)
+void wxPen::SetDashes( int WXUNUSED(nNbDashes),
+                       const wxDash* WXUNUSED(pDash) )
 {
     //
     // Does nothing under OS/2
@@ -451,5 +461,3 @@ int wx2os2PenStyle(
     }
     return nPMStyle;
 } // end of wx2os2PenStyle
-
-