2 // System.Drawing.Drawing2D.GraphicsPathIterator.cs
\r
5 // Dennis Hayes (dennish@Raytek.com)
\r
6 // Duncan Mak (duncan@ximian.com)
\r
8 // (C) 2002/3 Ximian, Inc
\r
12 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
14 // Permission is hereby granted, free of charge, to any person obtaining
15 // a copy of this software and associated documentation files (the
16 // "Software"), to deal in the Software without restriction, including
17 // without limitation the rights to use, copy, modify, merge, publish,
18 // distribute, sublicense, and/or sell copies of the Software, and to
19 // permit persons to whom the Software is furnished to do so, subject to
20 // the following conditions:
22 // The above copyright notice and this permission notice shall be
23 // included in all copies or substantial portions of the Software.
25 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Drawing;
\r
36 namespace System.Drawing.Drawing2D
\r
38 public sealed class GraphicsPathIterator : MarshalByRefObject, IDisposable
\r
46 public GraphicsPathIterator (GraphicsPath path)
\r
48 this._points = path.PathPoints;
\r
49 this._types = path.PathTypes;
\r
50 this._count = path.PointCount;
\r
54 // Public Properites
\r
61 public int SubpathCount {
\r
65 foreach (byte b in _types)
\r
66 if (b == (byte) PathPointType.Start)
\r
74 public int CopyData (ref PointF [] points, ref byte [] types, int startIndex, int endIndex)
\r
76 for (int i = 0, j = startIndex; j < endIndex; i++, j++) {
\r
77 points [i] = _points [j];
\r
78 types [i] = _types [j];
\r
81 return endIndex - startIndex;
\r
84 public void Dispose ()
\r
88 ~GraphicsPathIterator ()
\r
92 public int Enumerate (ref PointF [] points, ref byte [] types)
\r
100 public bool HasCurve ()
\r
102 foreach (byte b in _types)
\r
103 if (b == (byte) PathPointType.Bezier)
\r
110 public int NextMarker (GraphicsPath path)
\r
112 throw new NotImplementedException ();
\r
116 public int NextMarker (out int startIndex, out int endIndex)
\r
118 throw new NotImplementedException ();
\r
122 public int NextPathType (out byte pathType, out int startIndex, out int endIndex)
\r
124 throw new NotImplementedException ();
\r
128 public int NextSubpath (GraphicsPath path, out bool isClosed)
\r
130 throw new NotImplementedException ();
\r
134 public int NextSubpath (out int startIndex, out int endIndex, out bool isClosed)
\r
136 throw new NotImplementedException ();
\r
139 public void Rewind ()
\r