Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / DrawingServices.cs / 1 / 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
- DynamicDataRoute.cs
- Point3DValueSerializer.cs
- FocusTracker.cs
- Base64Encoder.cs
- QueryResponse.cs
- PrintDocument.cs
- ScrollPattern.cs
- PerformanceCounterPermissionAttribute.cs
- CheckBoxField.cs
- MessageHeaderException.cs
- SvcMapFileLoader.cs
- TypeUtils.cs
- InputProcessorProfilesLoader.cs
- DataKey.cs
- SimpleTableProvider.cs
- LogicalTreeHelper.cs
- TaskSchedulerException.cs
- TraceHandlerErrorFormatter.cs
- Automation.cs
- RemotingServices.cs
- ScalarRestriction.cs
- NetPipeSectionData.cs
- TracingConnectionListener.cs
- Vector3D.cs
- StatusBarDrawItemEvent.cs
- SecurityDocument.cs
- MULTI_QI.cs
- LessThan.cs
- CryptoApi.cs
- GeneralTransform.cs
- PreviewPrintController.cs
- HideDisabledControlAdapter.cs
- Encoder.cs
- Size3DConverter.cs
- XComponentModel.cs
- EasingFunctionBase.cs
- Rotation3DAnimationBase.cs
- TypeUsage.cs
- LoginDesigner.cs
- Binding.cs
- ImageField.cs
- TableItemProviderWrapper.cs
- TransformGroup.cs
- Object.cs
- MessageParameterAttribute.cs
- cryptoapiTransform.cs
- InstanceLockedException.cs
- StandardCommands.cs
- OdbcConnectionHandle.cs
- HierarchicalDataSourceControl.cs
- CodeDomConfigurationHandler.cs
- SiteMapNode.cs
- UnsafeNativeMethodsMilCoreApi.cs
- CodeCastExpression.cs
- ReachBasicContext.cs
- DesignerCapabilities.cs
- PublishLicense.cs
- NameValueCache.cs
- StickyNoteAnnotations.cs
- ConfigurationCollectionAttribute.cs
- GenericXmlSecurityTokenAuthenticator.cs
- ManipulationDeltaEventArgs.cs
- EntityViewGenerator.cs
- Sorting.cs
- UInt64Storage.cs
- SyncMethodInvoker.cs
- PersistChildrenAttribute.cs
- UIPropertyMetadata.cs
- MetaModel.cs
- SqlProfileProvider.cs
- MessagePropertyDescriptionCollection.cs
- ListParaClient.cs
- WorkflowRuntimeElement.cs
- ValidationHelpers.cs
- FontInfo.cs
- WebPartEditVerb.cs
- WebBrowser.cs
- TextServicesCompartment.cs
- TreeNodeBindingCollection.cs
- IpcServerChannel.cs
- BitmapFrameEncode.cs
- LocatorManager.cs
- NonParentingControl.cs
- MediaElementAutomationPeer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- LoginCancelEventArgs.cs
- DataSysAttribute.cs
- FixedSOMFixedBlock.cs
- ModuleConfigurationInfo.cs
- RenderData.cs
- System.Data_BID.cs
- CodeValidator.cs
- SerializationUtility.cs
- MemoryMappedFileSecurity.cs
- MemberHolder.cs
- ExpressionCopier.cs
- TextTreeInsertElementUndoUnit.cs
- ObjectComplexPropertyMapping.cs
- DynamicValidatorEventArgs.cs
- WebScriptEnablingBehavior.cs