Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media3D / GeneralTransform3DTo2D.cs / 1 / GeneralTransform3DTo2D.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Declaration of the GeneralTransform3DTo2D class.
//
//---------------------------------------------------------------------------
using System.Windows.Media;
using System.Windows.Media.Animation;
using SR = MS.Internal.PresentationCore.SR;
using SRID = MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Media3D
{
///
/// GeneralTransform3DTo2D class provides services to transform points and rects in 3D to 2D
///
public class GeneralTransform3DTo2D : Freezable
{
internal GeneralTransform3DTo2D()
{
_transformBetween2D = null;
}
internal GeneralTransform3DTo2D(Matrix3D projectionTransform, GeneralTransform transformBetween2D)
{
_projectionTransform = projectionTransform;
_transformBetween2D = (GeneralTransform)transformBetween2D.GetAsFrozen();
}
///
/// Transform a point
///
/// Input point
/// Output point
/// True if the point was transformed successfuly, false otherwise
public bool TryTransform(Point3D inPoint, out Point result)
{
bool success = false;
result = new Point();
// project the point
if (_projectionTransform != null)
{
Point3D projectedPoint = _projectionTransform.Transform(inPoint);
if (_transformBetween2D != null)
{
result = _transformBetween2D.Transform(new Point(projectedPoint.X, projectedPoint.Y));
success = true;
}
}
return success;
}
///
/// Transform a point from 3D in to 2D
///
/// If the transformation does not succeed, this will throw an InvalidOperationException.
/// If you don't want to try/catch, call TryTransform instead and check the boolean it
/// returns.
///
///
/// Input point
/// The transformed point
public Point Transform(Point3D point)
{
Point transformedPoint;
if (!TryTransform(point, out transformedPoint))
{
throw new InvalidOperationException(SR.Get(SRID.GeneralTransform_TransformFailed, null));
}
return transformedPoint;
}
///
/// Transform a Rect3D to a Rect. If this transformation cannot be completed Rect.Empty is returned.
///
/// Input 3D bounding box
/// The 2D bounding box of the projection of these points
public Rect TransformBounds(Rect3D rect3D)
{
if (_transformBetween2D != null)
{
return _transformBetween2D.TransformBounds(MILUtilities.ProjectBounds(ref _projectionTransform, ref rect3D));
}
else
{
return Rect.Empty;
}
}
///
/// Implementation of Freezable.CreateInstanceCore .
///
/// The new Freezable.
protected override Freezable CreateInstanceCore()
{
return new GeneralTransform3DTo2D();
}
///
/// Implementation of Freezable.CloneCore .
///
///
protected override void CloneCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.CloneCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.CloneCurrentValueCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.GetAsFrozenCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.GetCurrentValueAsFrozenCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Clones values that do not have corresponding DPs
///
///
private void CopyCommon(GeneralTransform3DTo2D transform)
{
_projectionTransform = transform._projectionTransform;
_transformBetween2D = transform._transformBetween2D;
}
private Matrix3D _projectionTransform;
private GeneralTransform _transformBetween2D;
}
}
// 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.
//
//
//
// Description: Declaration of the GeneralTransform3DTo2D class.
//
//---------------------------------------------------------------------------
using System.Windows.Media;
using System.Windows.Media.Animation;
using SR = MS.Internal.PresentationCore.SR;
using SRID = MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Media3D
{
///
/// GeneralTransform3DTo2D class provides services to transform points and rects in 3D to 2D
///
public class GeneralTransform3DTo2D : Freezable
{
internal GeneralTransform3DTo2D()
{
_transformBetween2D = null;
}
internal GeneralTransform3DTo2D(Matrix3D projectionTransform, GeneralTransform transformBetween2D)
{
_projectionTransform = projectionTransform;
_transformBetween2D = (GeneralTransform)transformBetween2D.GetAsFrozen();
}
///
/// Transform a point
///
/// Input point
/// Output point
/// True if the point was transformed successfuly, false otherwise
public bool TryTransform(Point3D inPoint, out Point result)
{
bool success = false;
result = new Point();
// project the point
if (_projectionTransform != null)
{
Point3D projectedPoint = _projectionTransform.Transform(inPoint);
if (_transformBetween2D != null)
{
result = _transformBetween2D.Transform(new Point(projectedPoint.X, projectedPoint.Y));
success = true;
}
}
return success;
}
///
/// Transform a point from 3D in to 2D
///
/// If the transformation does not succeed, this will throw an InvalidOperationException.
/// If you don't want to try/catch, call TryTransform instead and check the boolean it
/// returns.
///
///
/// Input point
/// The transformed point
public Point Transform(Point3D point)
{
Point transformedPoint;
if (!TryTransform(point, out transformedPoint))
{
throw new InvalidOperationException(SR.Get(SRID.GeneralTransform_TransformFailed, null));
}
return transformedPoint;
}
///
/// Transform a Rect3D to a Rect. If this transformation cannot be completed Rect.Empty is returned.
///
/// Input 3D bounding box
/// The 2D bounding box of the projection of these points
public Rect TransformBounds(Rect3D rect3D)
{
if (_transformBetween2D != null)
{
return _transformBetween2D.TransformBounds(MILUtilities.ProjectBounds(ref _projectionTransform, ref rect3D));
}
else
{
return Rect.Empty;
}
}
///
/// Implementation of Freezable.CreateInstanceCore .
///
/// The new Freezable.
protected override Freezable CreateInstanceCore()
{
return new GeneralTransform3DTo2D();
}
///
/// Implementation of Freezable.CloneCore .
///
///
protected override void CloneCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.CloneCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.CloneCurrentValueCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.GetAsFrozenCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
GeneralTransform3DTo2D transform = (GeneralTransform3DTo2D)sourceFreezable;
base.GetCurrentValueAsFrozenCore(sourceFreezable);
CopyCommon(transform);
}
///
/// Clones values that do not have corresponding DPs
///
///
private void CopyCommon(GeneralTransform3DTo2D transform)
{
_projectionTransform = transform._projectionTransform;
_transformBetween2D = transform._transformBetween2D;
}
private Matrix3D _projectionTransform;
private GeneralTransform _transformBetween2D;
}
}
// 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
- DefaultProxySection.cs
- SortExpressionBuilder.cs
- XmlSchemaImporter.cs
- ScriptModule.cs
- MimeParameter.cs
- DeploymentSectionCache.cs
- NoneExcludedImageIndexConverter.cs
- Transform3D.cs
- EntityClassGenerator.cs
- BinaryObjectInfo.cs
- BuildResultCache.cs
- BindingExpressionBase.cs
- SafeEventLogReadHandle.cs
- PkcsUtils.cs
- ThicknessAnimationUsingKeyFrames.cs
- FileIOPermission.cs
- CalendarDesigner.cs
- ScrollChrome.cs
- ObsoleteAttribute.cs
- SmuggledIUnknown.cs
- coordinatorscratchpad.cs
- ScriptResourceInfo.cs
- MenuEventArgs.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- NullableLongMinMaxAggregationOperator.cs
- TdsParserStateObject.cs
- BuilderInfo.cs
- ToolStrip.cs
- ElementAction.cs
- StickyNoteAnnotations.cs
- Graphics.cs
- XmlSerializer.cs
- ContainerUtilities.cs
- ThicknessKeyFrameCollection.cs
- StandardOleMarshalObject.cs
- ClientTargetSection.cs
- UnsafeNativeMethods.cs
- HttpFileCollection.cs
- TextWriterEngine.cs
- PropertyNames.cs
- PagesSection.cs
- WebPartEventArgs.cs
- ReceiveContextCollection.cs
- CombinedGeometry.cs
- DataObjectAttribute.cs
- ConfigurationStrings.cs
- ShaderRenderModeValidation.cs
- SharedPersonalizationStateInfo.cs
- GetFileNameResult.cs
- PlainXmlSerializer.cs
- ByteRangeDownloader.cs
- TransactionFlowBindingElement.cs
- CustomAttributeBuilder.cs
- LOSFormatter.cs
- ConsoleEntryPoint.cs
- TypePropertyEditor.cs
- FamilyMapCollection.cs
- SolidBrush.cs
- messageonlyhwndwrapper.cs
- PageCatalogPart.cs
- HttpPostedFileBase.cs
- WebPartActionVerb.cs
- TypefaceMap.cs
- TextLineResult.cs
- WebControl.cs
- ListMarkerSourceInfo.cs
- CodeRemoveEventStatement.cs
- StateChangeEvent.cs
- XXXInfos.cs
- SerializableTypeCodeDomSerializer.cs
- ForwardPositionQuery.cs
- RelatedEnd.cs
- AutoCompleteStringCollection.cs
- _AutoWebProxyScriptHelper.cs
- SessionStateSection.cs
- IPPacketInformation.cs
- Size3D.cs
- HttpClientCertificate.cs
- SettingsPropertyValueCollection.cs
- PointAnimation.cs
- LocalizableAttribute.cs
- ReferenceEqualityComparer.cs
- Control.cs
- CodeExpressionCollection.cs
- ImageButton.cs
- AggregateException.cs
- WebPageTraceListener.cs
- DesignerTransactionCloseEvent.cs
- RowType.cs
- DocumentGridContextMenu.cs
- PasswordBoxAutomationPeer.cs
- peernodeimplementation.cs
- VBCodeProvider.cs
- XmlSignatureManifest.cs
- ReadOnlyObservableCollection.cs
- HttpException.cs
- ExternalCalls.cs
- ServiceHostingEnvironmentSection.cs
- FrameworkElementFactory.cs
- XslTransform.cs