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
- FlowDocumentFormatter.cs
- TextBox.cs
- NetworkCredential.cs
- DesignerActionItem.cs
- ProviderConnectionPoint.cs
- XmlEncodedRawTextWriter.cs
- AdPostCacheSubstitution.cs
- DecimalFormatter.cs
- ImagingCache.cs
- Line.cs
- ChangePassword.cs
- WebResourceAttribute.cs
- ViewCellRelation.cs
- arc.cs
- EpmAttributeNameBuilder.cs
- XhtmlCssHandler.cs
- ResourceLoader.cs
- DynamicScriptObject.cs
- TextSelection.cs
- OperationAbortedException.cs
- DrawingBrush.cs
- XmlNodeChangedEventArgs.cs
- CaseInsensitiveOrdinalStringComparer.cs
- Funcletizer.cs
- StateMachineTimers.cs
- HttpStreamXmlDictionaryReader.cs
- RealProxy.cs
- ContentDisposition.cs
- MimePart.cs
- GetCertificateRequest.cs
- CompilerLocalReference.cs
- Visual3D.cs
- TypeDescriptor.cs
- ContainerSelectorGlyph.cs
- GeneralTransform.cs
- OptimalBreakSession.cs
- DES.cs
- DocumentXPathNavigator.cs
- ManualWorkflowSchedulerService.cs
- ReachPrintTicketSerializer.cs
- MenuItemBinding.cs
- SecurityTokenAuthenticator.cs
- SizeAnimationClockResource.cs
- TrackingConditionCollection.cs
- UnmanagedMemoryStream.cs
- ToolBarTray.cs
- PerfCounters.cs
- WhitespaceRuleReader.cs
- SyndicationDeserializer.cs
- RegionData.cs
- EventLogPermissionEntryCollection.cs
- FormsAuthentication.cs
- DataViewManagerListItemTypeDescriptor.cs
- Pts.cs
- ScrollItemPattern.cs
- SafeNativeMethods.cs
- QilVisitor.cs
- FilterElement.cs
- Triplet.cs
- ProcessModule.cs
- WindowsGraphicsCacheManager.cs
- Int64KeyFrameCollection.cs
- CultureInfo.cs
- AnimationLayer.cs
- EventHandlerList.cs
- WebScriptMetadataMessageEncoderFactory.cs
- ObjectMemberMapping.cs
- BindingMAnagerBase.cs
- ConsoleTraceListener.cs
- ProviderCommandInfoUtils.cs
- StreamInfo.cs
- FontResourceCache.cs
- ListViewPagedDataSource.cs
- ThreadInterruptedException.cs
- ObjectManager.cs
- ObjectAnimationBase.cs
- DataAccessor.cs
- ThousandthOfEmRealPoints.cs
- DesignerCategoryAttribute.cs
- _ChunkParse.cs
- ItemsChangedEventArgs.cs
- FormViewUpdatedEventArgs.cs
- ServicesUtilities.cs
- ParserStreamGeometryContext.cs
- MeasurementDCInfo.cs
- DownloadProgressEventArgs.cs
- OdbcDataAdapter.cs
- Send.cs
- References.cs
- PropertySet.cs
- GuidConverter.cs
- ElementAction.cs
- SequentialOutput.cs
- TraceUtils.cs
- Int16Storage.cs
- BaseUriHelper.cs
- WebPartExportVerb.cs
- ProgressBarRenderer.cs
- DispatcherObject.cs
- FakeModelPropertyImpl.cs