Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / CommonUI / System / Drawing / Advanced / GraphicsPathIterator.cs / 1 / GraphicsPathIterator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /*************************************************************************\ * * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. * * Module Name: * * GraphicsPathIterator.cs * * Abstract: * * COM+ wrapper for GDI+ path iterator objects * * Revision History: * * 3/15/2000 [....] * Created it. * \**************************************************************************/ namespace System.Drawing.Drawing2D { using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Drawing; using System.ComponentModel; using System.Drawing.Internal; using System.Globalization; /** * Represent a Path Iterator object */ ////// /// public sealed class GraphicsPathIterator : MarshalByRefObject, IDisposable { /** * Create a new path iterator object */ ////// Provides helper functions for the ///class. /// /// /// Initializes a new instance of the public GraphicsPathIterator(GraphicsPath path) { IntPtr nativeIter = IntPtr.Zero; int status = SafeNativeMethods.Gdip.GdipCreatePathIter(out nativeIter, new HandleRef(path, (path == null) ? IntPtr.Zero : path.nativePath)); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); this.nativeIter = nativeIter; } /** * Dispose of resources associated with the */ ///class with the specified . /// /// /// Cleans up Windows resources for this /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } void Dispose(bool disposing) { if (nativeIter != IntPtr.Zero) { try{ #if DEBUG int status = #endif SafeNativeMethods.Gdip.GdipDeletePathIter(new HandleRef(this, nativeIter)); #if DEBUG Debug.Assert(status == SafeNativeMethods.Gdip.Ok, "GDI+ returned an error status: " + status.ToString(CultureInfo.InvariantCulture)); #endif } catch( Exception ex ){ if( ClientUtils.IsSecurityOrCriticalException( ex ) ) { throw; } Debug.Fail( "Exception thrown during Dispose: " + ex.ToString() ); } finally{ nativeIter = IntPtr.Zero; } } } ///. /// /// /// Cleans up Windows resources for this /// ~GraphicsPathIterator() { Dispose(false); } /** * Next subpath in path */ ///. /// /// /// Returns the number of subpaths in the /// public int NextSubpath(out int startIndex, out int endIndex, out bool isClosed) { int resultCount = 0; int tempStart = 0; int tempEnd = 0; int status = SafeNativeMethods.Gdip.GdipPathIterNextSubpath(new HandleRef(this, nativeIter), out resultCount, out tempStart, out tempEnd, out isClosed); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); else { startIndex = tempStart; endIndex = tempEnd; } return resultCount; } /** * Next subpath in path */ ///. The start index and end index of the /// next subpath are contained in out parameters. /// /// /// public int NextSubpath(GraphicsPath path, out bool isClosed) { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterNextSubpathPath(new HandleRef(this, nativeIter), out resultCount, new HandleRef(path, (path == null) ? IntPtr.Zero : path.nativePath), out isClosed); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } /** * Next type in subpath */ ///[To be supplied.] ////// /// public int NextPathType(out byte pathType, out int startIndex, out int endIndex) { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterNextPathType(new HandleRef(this, nativeIter), out resultCount, out pathType, out startIndex, out endIndex); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } /** * Next marker in subpath */ ///[To be supplied.] ////// /// public int NextMarker(out int startIndex, out int endIndex) { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterNextMarker(new HandleRef(this, nativeIter), out resultCount, out startIndex, out endIndex); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } /** * Next marker in subpath */ ///[To be supplied.] ////// /// public int NextMarker(GraphicsPath path) { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterNextMarkerPath(new HandleRef(this, nativeIter), out resultCount, new HandleRef(path, (path == null) ? IntPtr.Zero : path.nativePath)); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } ///[To be supplied.] ////// /// public int Count { get { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterGetCount(new HandleRef(this, nativeIter), out resultCount); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } } ///[To be supplied.] ////// /// public int SubpathCount { get { int resultCount = 0; int status = SafeNativeMethods.Gdip.GdipPathIterGetSubpathCount(new HandleRef(this, nativeIter), out resultCount); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return resultCount; } } ///[To be supplied.] ////// /// public bool HasCurve() { bool hasCurve = false; int status = SafeNativeMethods.Gdip.GdipPathIterHasCurve(new HandleRef(this, nativeIter), out hasCurve); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); return hasCurve; } ///[To be supplied.] ////// /// public void Rewind() { int status = SafeNativeMethods.Gdip.GdipPathIterRewind(new HandleRef(this, nativeIter)); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); } ///[To be supplied.] ////// /// public int Enumerate(ref PointF[] points, ref byte[] types) { if (points.Length != types.Length) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); int resultCount = 0; GPPOINTF pt = new GPPOINTF(); int size = (int) Marshal.SizeOf(pt.GetType()); int count = points.Length; IntPtr memoryPts = Marshal.AllocHGlobal(count*size); try { int status = SafeNativeMethods.Gdip.GdipPathIterEnumerate(new HandleRef(this, nativeIter), out resultCount, memoryPts, types, points.Length); if (status != SafeNativeMethods.Gdip.Ok) { throw SafeNativeMethods.Gdip.StatusException(status); } points = SafeNativeMethods.Gdip.ConvertGPPOINTFArrayF(memoryPts, points.Length); } finally { Marshal.FreeHGlobal(memoryPts); } return resultCount; } ///[To be supplied.] ////// /// [SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference")] public int CopyData(ref PointF[] points, ref byte[] types, int startIndex, int endIndex) { if (points.Length != types.Length) throw SafeNativeMethods.Gdip.StatusException(SafeNativeMethods.Gdip.InvalidParameter); int resultCount = 0; GPPOINTF pt = new GPPOINTF(); int size = (int)Marshal.SizeOf(pt.GetType()); int count = points.Length; IntPtr memoryPts = Marshal.AllocHGlobal(count*size); try { int status = SafeNativeMethods.Gdip.GdipPathIterCopyData(new HandleRef(this, nativeIter), out resultCount, memoryPts, types, startIndex, endIndex); if (status != SafeNativeMethods.Gdip.Ok) { throw SafeNativeMethods.Gdip.StatusException(status); } points = SafeNativeMethods.Gdip.ConvertGPPOINTFArrayF(memoryPts, points.Length); } finally { Marshal.FreeHGlobal(memoryPts); } return resultCount; } /* * handle to native path iterator object */ internal IntPtr nativeIter; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Memoizer.cs
- CodeParameterDeclarationExpressionCollection.cs
- GenericsNotImplementedException.cs
- SelectorItemAutomationPeer.cs
- RevocationPoint.cs
- Deserializer.cs
- HttpCachePolicyElement.cs
- DbConnectionPool.cs
- TypeUtil.cs
- PrinterResolution.cs
- EffectiveValueEntry.cs
- MainMenu.cs
- ZipFileInfoCollection.cs
- X509CertificateChain.cs
- dataobject.cs
- SqlUserDefinedTypeAttribute.cs
- OneOfConst.cs
- DoubleMinMaxAggregationOperator.cs
- PathSegment.cs
- XsltArgumentList.cs
- SystemResourceKey.cs
- WinEventTracker.cs
- SystemException.cs
- PreviewPrintController.cs
- LayoutDump.cs
- CounterCreationDataCollection.cs
- DataListCommandEventArgs.cs
- MatrixTransform3D.cs
- PackageRelationship.cs
- DataGridViewCellValidatingEventArgs.cs
- ResetableIterator.cs
- LowerCaseStringConverter.cs
- Translator.cs
- ZipIOExtraFieldPaddingElement.cs
- DaylightTime.cs
- TransactionProtocolConverter.cs
- InstanceStore.cs
- DataTablePropertyDescriptor.cs
- RequestTimeoutManager.cs
- OperationPickerDialog.designer.cs
- DecimalConstantAttribute.cs
- TypographyProperties.cs
- LinqDataSourceContextEventArgs.cs
- AxisAngleRotation3D.cs
- DefaultPropertyAttribute.cs
- ConfigXmlSignificantWhitespace.cs
- IPEndPoint.cs
- FindCriteriaCD1.cs
- TypeSystemProvider.cs
- ButtonChrome.cs
- SystemSounds.cs
- BaseTemplateBuildProvider.cs
- SqlDataSourceCommandParser.cs
- UserControl.cs
- CodeTypeReferenceCollection.cs
- LinearGradientBrush.cs
- ExeConfigurationFileMap.cs
- PKCS1MaskGenerationMethod.cs
- FormViewDeleteEventArgs.cs
- OutputScopeManager.cs
- DynamicActionMessageFilter.cs
- AudioLevelUpdatedEventArgs.cs
- RealProxy.cs
- GenericIdentity.cs
- WebPartTransformerAttribute.cs
- RadioButtonList.cs
- StreamReader.cs
- WebSysDefaultValueAttribute.cs
- StatusBarPanelClickEvent.cs
- ObjectMemberMapping.cs
- ItemCollection.cs
- RawStylusInputReport.cs
- Encoder.cs
- ObjectPersistData.cs
- CollectionView.cs
- ConnectionPool.cs
- _LazyAsyncResult.cs
- CreateUserWizard.cs
- PartialCachingControl.cs
- ToolZone.cs
- PasswordRecovery.cs
- Panel.cs
- OleDbParameter.cs
- UnaryNode.cs
- TextUtf8RawTextWriter.cs
- CodePageUtils.cs
- MaterialGroup.cs
- namescope.cs
- TCEAdapterGenerator.cs
- UriSectionReader.cs
- CodeIdentifier.cs
- GridSplitter.cs
- SystemDiagnosticsSection.cs
- ToolStripManager.cs
- DetailsView.cs
- ToolStripRendererSwitcher.cs
- _SslState.cs
- ZipIOModeEnforcingStream.cs
- ListViewItem.cs
- ExpandCollapsePattern.cs