Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Pen.cs / 1305600 / Pen.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: Pen.cs // // Description: This file contains the implementation of Pen. // Pen is is the class which describes how to stroke a geometric // area. // // History: // 04/28/2003 : [....] - Created it. // //--------------------------------------------------------------------------- using MS.Internal; using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Media.Animation; using System.Windows.Media.Composition; using System.Windows.Markup; using System.Security; using System.Security.Permissions; namespace System.Windows.Media { ////// Pen - The pen class is used to describe how a shape is stroked. /// [Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] public sealed partial class Pen : Animatable, DUCE.IResource { #region Constructors ////// /// public Pen() { } ////// Pen - Initializes the pen from the given Brush and thickness. /// All other values as set to default. /// /// The Brush for this Pen. /// The thickness of the Pen. public Pen(Brush brush, double thickness) { Brush = brush; Thickness = thickness; } ////// Pen - Initializes the brush from the parameters. /// /// The Pen's Brush. /// The Pen's thickness. /// The PenLineCap which applies to the start of the stroke. /// The PenLineCap which applies to the end of the stroke. /// The PenDashCap which applies to the ends of each dash. /// The PenLineJoin. /// The miter limit. /// The dash style. internal Pen( Brush brush, double thickness, PenLineCap startLineCap, PenLineCap endLineCap, PenLineCap dashCap, PenLineJoin lineJoin, double miterLimit, DashStyle dashStyle) { Thickness = thickness; StartLineCap = startLineCap; EndLineCap = endLineCap; DashCap = dashCap; LineJoin = lineJoin; MiterLimit = miterLimit; Brush = brush; DashStyle = dashStyle; } #endregion Constructors private MIL_PEN_CAP GetInternalCapType(PenLineCap cap) { Debug.Assert((MIL_PEN_CAP)PenLineCap.Flat == MIL_PEN_CAP.MilPenCapFlat); Debug.Assert((MIL_PEN_CAP)PenLineCap.Square == MIL_PEN_CAP.MilPenCapSquare); Debug.Assert((MIL_PEN_CAP)PenLineCap.Round == MIL_PEN_CAP.MilPenCapRound); Debug.Assert((MIL_PEN_CAP)PenLineCap.Triangle == MIL_PEN_CAP.MilPenCapTriangle); return (MIL_PEN_CAP)cap; } private MIL_PEN_JOIN GetInternalJoinType(PenLineJoin join) { Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Miter == MIL_PEN_JOIN.MilPenJoinMiter); Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Bevel == MIL_PEN_JOIN.MilPenJoinBevel); Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Round == MIL_PEN_JOIN.MilPenJoinRound); return (MIL_PEN_JOIN)join; } ////// Returns a packed structure of non-animate pen values. If a property is animated, it /// uses the instantaneous value of the property. /// ////// Critical: has unsafe code blocks .Returning pen information is safe, the risk /// is in pointer handling /// [SecurityCritical] internal unsafe void GetBasicPenData(MIL_PEN_DATA* pData, out double[] dashArray) { dashArray = null; Invariant.Assert(pData!=null); unsafe { pData->Thickness = Thickness; pData->StartLineCap = GetInternalCapType(StartLineCap); pData->EndLineCap = GetInternalCapType(EndLineCap); pData->DashCap = GetInternalCapType(DashCap); pData->LineJoin = GetInternalJoinType(LineJoin); pData->MiterLimit = MiterLimit; } if (DashStyle != null) { DashStyle.GetDashData(pData, out dashArray); } } internal bool DoesNotContainGaps { get { DashStyle style = DashStyle; if (style != null) { DoubleCollection dashes = style.Dashes; if ((dashes != null) && (dashes.Count > 0)) { return false; } } return true; } } internal static bool ContributesToBounds( Pen pen) { return (pen != null) && (pen.Brush != null); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: Pen.cs // // Description: This file contains the implementation of Pen. // Pen is is the class which describes how to stroke a geometric // area. // // History: // 04/28/2003 : [....] - Created it. // //--------------------------------------------------------------------------- using MS.Internal; using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Media.Animation; using System.Windows.Media.Composition; using System.Windows.Markup; using System.Security; using System.Security.Permissions; namespace System.Windows.Media { ////// Pen - The pen class is used to describe how a shape is stroked. /// [Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] public sealed partial class Pen : Animatable, DUCE.IResource { #region Constructors ////// /// public Pen() { } ////// Pen - Initializes the pen from the given Brush and thickness. /// All other values as set to default. /// /// The Brush for this Pen. /// The thickness of the Pen. public Pen(Brush brush, double thickness) { Brush = brush; Thickness = thickness; } ////// Pen - Initializes the brush from the parameters. /// /// The Pen's Brush. /// The Pen's thickness. /// The PenLineCap which applies to the start of the stroke. /// The PenLineCap which applies to the end of the stroke. /// The PenDashCap which applies to the ends of each dash. /// The PenLineJoin. /// The miter limit. /// The dash style. internal Pen( Brush brush, double thickness, PenLineCap startLineCap, PenLineCap endLineCap, PenLineCap dashCap, PenLineJoin lineJoin, double miterLimit, DashStyle dashStyle) { Thickness = thickness; StartLineCap = startLineCap; EndLineCap = endLineCap; DashCap = dashCap; LineJoin = lineJoin; MiterLimit = miterLimit; Brush = brush; DashStyle = dashStyle; } #endregion Constructors private MIL_PEN_CAP GetInternalCapType(PenLineCap cap) { Debug.Assert((MIL_PEN_CAP)PenLineCap.Flat == MIL_PEN_CAP.MilPenCapFlat); Debug.Assert((MIL_PEN_CAP)PenLineCap.Square == MIL_PEN_CAP.MilPenCapSquare); Debug.Assert((MIL_PEN_CAP)PenLineCap.Round == MIL_PEN_CAP.MilPenCapRound); Debug.Assert((MIL_PEN_CAP)PenLineCap.Triangle == MIL_PEN_CAP.MilPenCapTriangle); return (MIL_PEN_CAP)cap; } private MIL_PEN_JOIN GetInternalJoinType(PenLineJoin join) { Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Miter == MIL_PEN_JOIN.MilPenJoinMiter); Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Bevel == MIL_PEN_JOIN.MilPenJoinBevel); Debug.Assert((MIL_PEN_JOIN)PenLineJoin.Round == MIL_PEN_JOIN.MilPenJoinRound); return (MIL_PEN_JOIN)join; } ////// Returns a packed structure of non-animate pen values. If a property is animated, it /// uses the instantaneous value of the property. /// ////// Critical: has unsafe code blocks .Returning pen information is safe, the risk /// is in pointer handling /// [SecurityCritical] internal unsafe void GetBasicPenData(MIL_PEN_DATA* pData, out double[] dashArray) { dashArray = null; Invariant.Assert(pData!=null); unsafe { pData->Thickness = Thickness; pData->StartLineCap = GetInternalCapType(StartLineCap); pData->EndLineCap = GetInternalCapType(EndLineCap); pData->DashCap = GetInternalCapType(DashCap); pData->LineJoin = GetInternalJoinType(LineJoin); pData->MiterLimit = MiterLimit; } if (DashStyle != null) { DashStyle.GetDashData(pData, out dashArray); } } internal bool DoesNotContainGaps { get { DashStyle style = DashStyle; if (style != null) { DoubleCollection dashes = style.Dashes; if ((dashes != null) && (dashes.Count > 0)) { return false; } } return true; } } internal static bool ContributesToBounds( Pen pen) { return (pen != null) && (pen.Brush != null); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NetworkAddressChange.cs
- Timer.cs
- ButtonBaseAutomationPeer.cs
- SettingsProviderCollection.cs
- DisableDpiAwarenessAttribute.cs
- TypeBuilder.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- AnnotationHighlightLayer.cs
- BuilderElements.cs
- BitmapDecoder.cs
- DetailsViewUpdateEventArgs.cs
- Policy.cs
- SessionStateItemCollection.cs
- EraserBehavior.cs
- WorkflowQueue.cs
- SoapExtensionImporter.cs
- MaterialGroup.cs
- GregorianCalendarHelper.cs
- assemblycache.cs
- LogicalMethodInfo.cs
- XpsDocumentEvent.cs
- WSDualHttpBindingCollectionElement.cs
- PropertyChangeTracker.cs
- EnumerableCollectionView.cs
- SetterBase.cs
- ClaimSet.cs
- TcpChannelFactory.cs
- RelativeSource.cs
- DataGridViewIntLinkedList.cs
- FormViewDeletedEventArgs.cs
- GPRECT.cs
- EmptyStringExpandableObjectConverter.cs
- PeerNearMe.cs
- OleStrCAMarshaler.cs
- BufferBuilder.cs
- DbProviderFactoriesConfigurationHandler.cs
- _CacheStreams.cs
- EdmEntityTypeAttribute.cs
- HMAC.cs
- HandleValueEditor.cs
- PromptEventArgs.cs
- WebPartsSection.cs
- TextMarkerSource.cs
- Stackframe.cs
- PostBackTrigger.cs
- _NtlmClient.cs
- ObjectListCommandEventArgs.cs
- METAHEADER.cs
- Validator.cs
- TypeInitializationException.cs
- StateItem.cs
- SoapEnumAttribute.cs
- XmlSerializerSection.cs
- AuthenticationService.cs
- MatrixConverter.cs
- EncoderBestFitFallback.cs
- PropertyPushdownHelper.cs
- ButtonFlatAdapter.cs
- LoginView.cs
- FeatureSupport.cs
- TextServicesHost.cs
- WindowsToolbarItemAsMenuItem.cs
- BamlResourceSerializer.cs
- RoutedEventConverter.cs
- XmlSchemaValidator.cs
- ZoneButton.cs
- SmiSettersStream.cs
- TextServicesManager.cs
- GeometryCombineModeValidation.cs
- HttpCapabilitiesSectionHandler.cs
- SignHashRequest.cs
- PreservationFileWriter.cs
- TableParagraph.cs
- RegistryKey.cs
- AsyncDataRequest.cs
- GridPatternIdentifiers.cs
- __Filters.cs
- ErrorHandlerModule.cs
- CryptoHandle.cs
- DisplayNameAttribute.cs
- WinEventQueueItem.cs
- CodeChecksumPragma.cs
- MSHTMLHostUtil.cs
- Point3DCollection.cs
- HealthMonitoringSectionHelper.cs
- UIPermission.cs
- GroupBoxRenderer.cs
- FactoryGenerator.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- HttpRawResponse.cs
- SizeConverter.cs
- ValidationEventArgs.cs
- FormattedTextSymbols.cs
- AppSettingsExpressionBuilder.cs
- DebugView.cs
- DependencyPropertyConverter.cs
- NegationPusher.cs
- ToggleButton.cs
- CaseCqlBlock.cs
- RelatedView.cs