/////////////////////////////////////////////////////////////////////////////
// Name: pen.cpp
// Purpose: wxPen
-// Author: AUTHOR
+// Author: David Webster
// Modified by:
-// Created: ??/??/98
+// Created: 10/10/99
// RCS-ID: $Id$
-// Copyright: (c) AUTHOR
-// Licence: wxWindows licence
+// Copyright: (c) David Webster
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation "pen.h"
-#endif
+// For compilers that support precompilation, includes "wx.h".
+#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"
+#endif
+
+#include "wx/os2/private.h"
+#include "assert.h"
-#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
-#endif
wxPenRefData::wxPenRefData()
{
m_cap = wxCAP_ROUND ;
m_nbDash = 0 ;
m_dash = 0 ;
-/* TODO: null data
m_hPen = 0;
-*/
}
wxPenRefData::wxPenRefData(const wxPenRefData& data)
m_refData = new wxPenRefData;
M_PENDATA->m_colour = col;
+// M_PENDATA->m_stipple = NULL;
M_PENDATA->m_width = Width;
M_PENDATA->m_style = Style;
M_PENDATA->m_join = wxJOIN_ROUND ;
M_PENDATA->m_cap = wxCAP_ROUND ;
M_PENDATA->m_nbDash = 0 ;
M_PENDATA->m_dash = 0 ;
-
+ M_PENDATA->m_hPen = 0 ;
+
+// TODO:
+/*
+ if ((Style == wxDOT) || (Style == wxLONG_DASH) ||
+ (Style == wxSHORT_DASH) || (Style == wxDOT_DASH) ||
+ (Style == wxUSER_DASH))
+ M_PENDATA->m_width = 1;
+*/
RealizeResource();
if ( wxThePenList )
M_PENDATA->m_cap = wxCAP_ROUND ;
M_PENDATA->m_nbDash = 0 ;
M_PENDATA->m_dash = 0 ;
+ M_PENDATA->m_hPen = 0 ;
RealizeResource();
wxThePenList->AddPen(this);
}
+bool wxPen::RealizeResource()
+{
+ // TODO: create actual pen
+ return FALSE;
+}
+
+WXHANDLE wxPen::GetResourceHandle()
+{
+ if ( !M_PENDATA )
+ return 0;
+ else
+ return (WXHANDLE)M_PENDATA->m_hPen;
+}
+
+bool wxPen::FreeResource(bool force)
+{
+ if (M_PENDATA && (M_PENDATA->m_hPen != 0))
+ {
+// TODO: DeleteObject((HPEN) M_PENDATA->m_hPen);
+ M_PENDATA->m_hPen = 0;
+ return TRUE;
+ }
+ else return FALSE;
+}
+
+bool wxPen::IsFree() const
+{
+ return (M_PENDATA && M_PENDATA->m_hPen == 0);
+}
+
void wxPen::Unshare()
{
- // Don't change shared data
- if (!m_refData)
+ // Don't change shared data
+ if (!m_refData)
{
- m_refData = new wxPenRefData();
- }
+ m_refData = new wxPenRefData();
+ }
else
{
- wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
- UnRef();
- m_refData = ref;
- }
+ wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
+ UnRef();
+ m_refData = ref;
+ }
}
void wxPen::SetColour(const wxColour& col)
Unshare();
M_PENDATA->m_colour = col;
-
+
RealizeResource();
}
Unshare();
M_PENDATA->m_colour.Set(r, g, b);
-
+
RealizeResource();
}
M_PENDATA->m_stipple = Stipple;
M_PENDATA->m_style = wxSTIPPLE;
-
+
RealizeResource();
}
M_PENDATA->m_nbDash = nb_dashes;
M_PENDATA->m_dash = (wxDash *)Dash;
-
+
RealizeResource();
}
RealizeResource();
}
-bool wxPen::RealizeResource()
+int wx2os2PenStyle(int wx_style)
{
- // TODO: create actual pen
- return FALSE;
+ int cstyle = 0;
+// TODO:
+/*
+ switch (wx_style)
+ {
+ case wxDOT:
+ cstyle = PS_DOT;
+ break;
+
+ case wxDOT_DASH:
+ cstyle = PS_DASHDOT;
+ break;
+
+ case wxSHORT_DASH:
+ case wxLONG_DASH:
+ cstyle = PS_DASH;
+ break;
+
+ case wxTRANSPARENT:
+ cstyle = PS_NULL;
+ break;
+
+ case wxUSER_DASH:
+#ifdef __WIN32__
+ // Win32s doesn't have PS_USERSTYLE
+ if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95)
+ cstyle = PS_USERSTYLE;
+ else
+ cstyle = PS_DOT; // We must make a choice... This is mine!
+#else
+ cstyle = PS_DASH;
+#endif
+ break;
+ case wxSOLID:
+ default:
+ cstyle = PS_SOLID;
+ break;
+ }
+*/
+ return cstyle;
}