]> git.saurik.com Git - wxWidgets.git/blame - src/mac/pen.cpp
First version of the DbBrowser demo program
[wxWidgets.git] / src / mac / pen.cpp
CommitLineData
e9576ca5
SC
1/////////////////////////////////////////////////////////////////////////////
2// Name: pen.cpp
3// Purpose: wxPen
4// Author: AUTHOR
5// Modified by:
6// Created: ??/??/98
7// RCS-ID: $Id$
8// Copyright: (c) AUTHOR
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "pen.h"
14#endif
15
16#include "wx/setup.h"
17#include "wx/utils.h"
18#include "wx/pen.h"
19
e9576ca5 20IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
e9576ca5
SC
21
22wxPenRefData::wxPenRefData()
23{
24 m_style = wxSOLID;
25 m_width = 1;
26 m_join = wxJOIN_ROUND ;
27 m_cap = wxCAP_ROUND ;
28 m_nbDash = 0 ;
29 m_dash = 0 ;
30/* TODO: null data
31 m_hPen = 0;
32*/
33}
34
35wxPenRefData::wxPenRefData(const wxPenRefData& data)
36{
37 m_style = data.m_style;
38 m_width = data.m_width;
39 m_join = data.m_join;
40 m_cap = data.m_cap;
41 m_nbDash = data.m_nbDash;
42 m_dash = data.m_dash;
43 m_colour = data.m_colour;
44/* TODO: null data
45 m_hPen = 0;
46*/
47}
48
49wxPenRefData::~wxPenRefData()
50{
51 // TODO: delete data
52}
53
54// Pens
55
56wxPen::wxPen()
57{
58 if ( wxThePenList )
59 wxThePenList->AddPen(this);
60}
61
62wxPen::~wxPen()
63{
64 if (wxThePenList)
65 wxThePenList->RemovePen(this);
66}
67
68// Should implement Create
69wxPen::wxPen(const wxColour& col, int Width, int Style)
70{
71 m_refData = new wxPenRefData;
72
73 M_PENDATA->m_colour = col;
74 M_PENDATA->m_width = Width;
75 M_PENDATA->m_style = Style;
76 M_PENDATA->m_join = wxJOIN_ROUND ;
77 M_PENDATA->m_cap = wxCAP_ROUND ;
78 M_PENDATA->m_nbDash = 0 ;
79 M_PENDATA->m_dash = 0 ;
80
81 RealizeResource();
82
83 if ( wxThePenList )
84 wxThePenList->AddPen(this);
85}
86
87wxPen::wxPen(const wxBitmap& stipple, int Width)
88{
89 m_refData = new wxPenRefData;
90
91 M_PENDATA->m_stipple = stipple;
92 M_PENDATA->m_width = Width;
93 M_PENDATA->m_style = wxSTIPPLE;
94 M_PENDATA->m_join = wxJOIN_ROUND ;
95 M_PENDATA->m_cap = wxCAP_ROUND ;
96 M_PENDATA->m_nbDash = 0 ;
97 M_PENDATA->m_dash = 0 ;
98
99 RealizeResource();
100
101 if ( wxThePenList )
102 wxThePenList->AddPen(this);
103}
104
105void wxPen::Unshare()
106{
107 // Don't change shared data
108 if (!m_refData)
109 {
110 m_refData = new wxPenRefData();
111 }
112 else
113 {
114 wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
115 UnRef();
116 m_refData = ref;
117 }
118}
119
120void wxPen::SetColour(const wxColour& col)
121{
122 Unshare();
123
124 M_PENDATA->m_colour = col;
125
126 RealizeResource();
127}
128
129void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b)
130{
131 Unshare();
132
133 M_PENDATA->m_colour.Set(r, g, b);
134
135 RealizeResource();
136}
137
138void wxPen::SetWidth(int Width)
139{
140 Unshare();
141
142 M_PENDATA->m_width = Width;
143
144 RealizeResource();
145}
146
147void wxPen::SetStyle(int Style)
148{
149 Unshare();
150
151 M_PENDATA->m_style = Style;
152
153 RealizeResource();
154}
155
156void wxPen::SetStipple(const wxBitmap& Stipple)
157{
158 Unshare();
159
160 M_PENDATA->m_stipple = Stipple;
161 M_PENDATA->m_style = wxSTIPPLE;
162
163 RealizeResource();
164}
165
166void wxPen::SetDashes(int nb_dashes, const wxDash *Dash)
167{
168 Unshare();
169
170 M_PENDATA->m_nbDash = nb_dashes;
171 M_PENDATA->m_dash = (wxDash *)Dash;
172
173 RealizeResource();
174}
175
176void wxPen::SetJoin(int Join)
177{
178 Unshare();
179
180 M_PENDATA->m_join = Join;
181
182 RealizeResource();
183}
184
185void wxPen::SetCap(int Cap)
186{
187 Unshare();
188
189 M_PENDATA->m_cap = Cap;
190
191 RealizeResource();
192}
193
194bool wxPen::RealizeResource()
195{
196 // TODO: create actual pen
197 return FALSE;
198}
199
200