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
- ConstraintConverter.cs
- CodeVariableDeclarationStatement.cs
- DropDownList.cs
- ListenerConstants.cs
- ContourSegment.cs
- ParallelTimeline.cs
- HtmlButton.cs
- EdmValidator.cs
- WizardStepBase.cs
- ObjectFullSpanRewriter.cs
- ArrayElementGridEntry.cs
- Util.cs
- Utility.cs
- ChannelAcceptor.cs
- XmlMemberMapping.cs
- MsmqIntegrationChannelListener.cs
- ListControlConvertEventArgs.cs
- PersonalizationAdministration.cs
- DescendantOverDescendantQuery.cs
- Quaternion.cs
- ExpressionPrinter.cs
- StringUtil.cs
- DecoratedNameAttribute.cs
- StreamReader.cs
- CacheEntry.cs
- AutomationElementCollection.cs
- WindowsListViewItemCheckBox.cs
- InputBindingCollection.cs
- PixelShader.cs
- WebRequestModulesSection.cs
- DataKeyCollection.cs
- ValidatedControlConverter.cs
- panel.cs
- DivideByZeroException.cs
- LineVisual.cs
- RemotingAttributes.cs
- userdatakeys.cs
- XmlSiteMapProvider.cs
- WebPartRestoreVerb.cs
- Calendar.cs
- QilTypeChecker.cs
- DefaultValidator.cs
- DiscreteKeyFrames.cs
- HyperLinkStyle.cs
- SourceCollection.cs
- Profiler.cs
- SafeUserTokenHandle.cs
- Helpers.cs
- FixedSOMTableRow.cs
- X509SubjectKeyIdentifierClause.cs
- CommandID.cs
- MetadataCacheItem.cs
- SlipBehavior.cs
- ProfileProvider.cs
- SafePipeHandle.cs
- AppDomainProtocolHandler.cs
- SqlFacetAttribute.cs
- PointLight.cs
- AllMembershipCondition.cs
- CompiledRegexRunnerFactory.cs
- WebBrowserEvent.cs
- PackWebResponse.cs
- FunctionDescription.cs
- BitmapSizeOptions.cs
- TiffBitmapDecoder.cs
- CodeDOMUtility.cs
- DeflateEmulationStream.cs
- EmptyWithCancelationCheckWorkItem.cs
- ImmutableAssemblyCacheEntry.cs
- DiscoveryVersionConverter.cs
- COM2IDispatchConverter.cs
- SqlNode.cs
- EntityDataSourceEntityTypeFilterItem.cs
- EventLogPermissionHolder.cs
- ClientSettingsSection.cs
- DynamicResourceExtension.cs
- ServicePoint.cs
- Latin1Encoding.cs
- ObjectAssociationEndMapping.cs
- FixedBufferAttribute.cs
- XPathDocumentNavigator.cs
- DataServiceExpressionVisitor.cs
- Process.cs
- Debug.cs
- BindingListCollectionView.cs
- ObjectDataSourceEventArgs.cs
- QilSortKey.cs
- BitmapMetadataBlob.cs
- WindowsIdentity.cs
- OletxDependentTransaction.cs
- Trace.cs
- FollowerQueueCreator.cs
- RegexInterpreter.cs
- BitmapSource.cs
- SystemException.cs
- SHA1.cs
- SplitterEvent.cs
- SocketInformation.cs
- EntityRecordInfo.cs
- SqlDependencyListener.cs