Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / DrawingServices.cs / 1305600 / DrawingServices.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: Implements services for Drawings including walking, bounding, // and hit-testing. // // History: // // 2004/11/19 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; using System.Windows.Media.Animation; namespace System.Windows.Media { ////// Implements services for Drawings including walking, bounding, and /// hit-testing. /// internal static class DrawingServices { ////// Determines whether or not a point exists in a Drawing /// /// Drawing to hit-test /// Point to hit-test for ////// 'true' if the point exists within the drawing, 'false' otherwise /// internal static bool HitTestPoint(Drawing drawing, Point point) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithPointDrawingContextWalker(point); drawing.WalkCurrentValue(ctx); return ctx.IsHit; } else { return false; } } ////// Hit-tests a Drawing against a PathGeometry /// /// The drawing to hit test against /// The geometry (in local coordinate space) to hit test. ////// IntersectionDetail that describes the hit result /// internal static IntersectionDetail HitTestGeometry(Drawing drawing, PathGeometry geometry) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithGeometryDrawingContextWalker(geometry); drawing.WalkCurrentValue(ctx); return ctx.IntersectionDetail; } else { return IntersectionDetail.Empty; } } ////// Converts a RenderData content representation into a DrawingGroup /// content representation. /// /// The RenderData to convert ////// A new DrawingGroup representation that is functionally equivalent to the /// passed-in RenderData. /// internal static DrawingGroup DrawingGroupFromRenderData(RenderData renderData) { // // Create & open a new DrawingGroup // DrawingGroup drawingGroup = new DrawingGroup(); DrawingContext dc = drawingGroup.Open(); // // Create a DrawingGroup from the RenderData by walking // the RenderData & having it forward it's base value's // and animations to DrawingGroup // // // The Drawing tree we're about to produce should not be an inheritance context, // since that would place all mutable Freezables in the render data into shared // state, which would in turn case them to lose their inheritance context entirely. // This is controlled by setting "CanBeInheritanceContext" to false on the // DrawingContext which will then be applied to all new objects it creates. // DrawingDrawingContext ddc = dc as DrawingDrawingContext; if (ddc != null) { ddc.CanBeInheritanceContext = false; } DrawingContextDrawingContextWalker walker = new DrawingContextDrawingContextWalker(dc); renderData.BaseValueDrawingContextWalk(walker); // // Close the DrawingContext & return the new DrawingGroup // dc.Close(); return drawingGroup; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: Implements services for Drawings including walking, bounding, // and hit-testing. // // History: // // 2004/11/19 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; using System.Windows.Media.Animation; namespace System.Windows.Media { ////// Implements services for Drawings including walking, bounding, and /// hit-testing. /// internal static class DrawingServices { ////// Determines whether or not a point exists in a Drawing /// /// Drawing to hit-test /// Point to hit-test for ////// 'true' if the point exists within the drawing, 'false' otherwise /// internal static bool HitTestPoint(Drawing drawing, Point point) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithPointDrawingContextWalker(point); drawing.WalkCurrentValue(ctx); return ctx.IsHit; } else { return false; } } ////// Hit-tests a Drawing against a PathGeometry /// /// The drawing to hit test against /// The geometry (in local coordinate space) to hit test. ////// IntersectionDetail that describes the hit result /// internal static IntersectionDetail HitTestGeometry(Drawing drawing, PathGeometry geometry) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithGeometryDrawingContextWalker(geometry); drawing.WalkCurrentValue(ctx); return ctx.IntersectionDetail; } else { return IntersectionDetail.Empty; } } ////// Converts a RenderData content representation into a DrawingGroup /// content representation. /// /// The RenderData to convert ////// A new DrawingGroup representation that is functionally equivalent to the /// passed-in RenderData. /// internal static DrawingGroup DrawingGroupFromRenderData(RenderData renderData) { // // Create & open a new DrawingGroup // DrawingGroup drawingGroup = new DrawingGroup(); DrawingContext dc = drawingGroup.Open(); // // Create a DrawingGroup from the RenderData by walking // the RenderData & having it forward it's base value's // and animations to DrawingGroup // // // The Drawing tree we're about to produce should not be an inheritance context, // since that would place all mutable Freezables in the render data into shared // state, which would in turn case them to lose their inheritance context entirely. // This is controlled by setting "CanBeInheritanceContext" to false on the // DrawingContext which will then be applied to all new objects it creates. // DrawingDrawingContext ddc = dc as DrawingDrawingContext; if (ddc != null) { ddc.CanBeInheritanceContext = false; } DrawingContextDrawingContextWalker walker = new DrawingContextDrawingContextWalker(dc); renderData.BaseValueDrawingContextWalk(walker); // // Close the DrawingContext & return the new DrawingGroup // dc.Close(); return drawingGroup; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SaveFileDialog.cs
- Typeface.cs
- WebConfigurationFileMap.cs
- ListViewSelectEventArgs.cs
- StickyNoteAnnotations.cs
- SessionStateSection.cs
- HierarchicalDataTemplate.cs
- XamlInt32CollectionSerializer.cs
- ObjectListTitleAttribute.cs
- CssTextWriter.cs
- XmlAnyElementAttributes.cs
- ControlIdConverter.cs
- SchemaImporterExtensionElement.cs
- RoleGroupCollection.cs
- BinaryMethodMessage.cs
- embossbitmapeffect.cs
- ForwardPositionQuery.cs
- OdbcException.cs
- LinqDataSourceHelper.cs
- StylusTip.cs
- EditorZone.cs
- Pair.cs
- AdPostCacheSubstitution.cs
- ThicknessAnimationBase.cs
- TimeIntervalCollection.cs
- StringUtil.cs
- HttpHeaderCollection.cs
- PersistenceMetadataNamespace.cs
- HwndAppCommandInputProvider.cs
- WindowsStatic.cs
- SystemKeyConverter.cs
- Figure.cs
- mda.cs
- CanonicalFormWriter.cs
- XslCompiledTransform.cs
- ContentPlaceHolderDesigner.cs
- TableRow.cs
- ContractSearchPattern.cs
- EasingFunctionBase.cs
- ControlEvent.cs
- TabControl.cs
- SqlProfileProvider.cs
- ResXResourceWriter.cs
- DNS.cs
- FixedElement.cs
- QueryStringParameter.cs
- SerializationInfoEnumerator.cs
- DelayedRegex.cs
- DelegatingConfigHost.cs
- RankException.cs
- ActionItem.cs
- PixelShader.cs
- AuthorizationPolicyTypeElement.cs
- MaterialGroup.cs
- TextServicesLoader.cs
- ItemDragEvent.cs
- ExpressionServices.cs
- MembershipAdapter.cs
- NetworkInformationException.cs
- SqlUserDefinedAggregateAttribute.cs
- CodeTypeDeclarationCollection.cs
- XmlSiteMapProvider.cs
- ECDsaCng.cs
- VectorCollection.cs
- TabControlAutomationPeer.cs
- UpdateRecord.cs
- TypeUtil.cs
- RemotingConfigParser.cs
- WindowsTooltip.cs
- Parser.cs
- PathFigureCollection.cs
- OutputCacheModule.cs
- FSWPathEditor.cs
- ForEachDesigner.xaml.cs
- validationstate.cs
- DeploymentExceptionMapper.cs
- UnknownBitmapEncoder.cs
- xdrvalidator.cs
- FormClosedEvent.cs
- PngBitmapEncoder.cs
- SafeHandle.cs
- TraceContextEventArgs.cs
- Mapping.cs
- TypedDatasetGenerator.cs
- RawStylusInputCustomData.cs
- Point4DConverter.cs
- SplineQuaternionKeyFrame.cs
- ProxyFragment.cs
- VectorCollection.cs
- MaskedTextProvider.cs
- RemoveFromCollection.cs
- TargetInvocationException.cs
- BaseResourcesBuildProvider.cs
- NativeObjectSecurity.cs
- EmptyEnumerator.cs
- CacheAxisQuery.cs
- StringFunctions.cs
- Message.cs
- InputProviderSite.cs
- Recipient.cs