Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / Transform.cs / 1 / Transform.cs
/****************************************************************************\
*
* File: Transform.cs
*
* Description:
* Transform.cs defines the "Transform" object, translate, rotate and scale.
*
* Copyright (C) 2002 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using MS.Internal;
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Windows.Markup;
using MS.Internal.Serialization;
using MS.Internal.PresentationCore;
namespace System.Windows.Media
{
#region Transform
///
/// Transform provides a base for all types of transformations, including matrix and list type.
///
[Localizability(LocalizationCategory.None, Readability=Readability.Unreadable)]
public abstract partial class Transform : GeneralTransform
{
internal Transform()
{
}
///
/// Identity transformation.
///
public static Transform Identity
{
get
{
return s_identity;
}
}
private static Transform MakeIdentityTransform()
{
Transform identity = new MatrixTransform(Matrix.Identity);
identity.Freeze();
return identity;
}
private static Transform s_identity = MakeIdentityTransform();
///
/// Return the current transformation value.
///
public abstract Matrix Value { get; }
///
/// Returns true if transformation if the transformation is definitely an identity. There are cases where it will
/// return false because of computational error or presence of animations (And we're interpolating through a
/// transient identity) -- this is intentional. This property is used internally only. If you need to check the
/// current matrix value for identity, use Transform.Value.Identity.
///
internal abstract bool IsIdentity {get;}
internal virtual bool CanSerializeToString() { return false; }
#region Perf Helpers
internal virtual void TransformRect(ref Rect rect)
{
Matrix matrix = Value;
MatrixUtil.TransformRect(ref rect, ref matrix);
}
///
/// MultiplyValueByMatrix - result is set equal to "this" * matrixToMultiplyBy.
///
/// The result is stored here.
/// The multiplicand.
internal virtual void MultiplyValueByMatrix(ref Matrix result, ref Matrix matrixToMultiplyBy)
{
result = Value;
MatrixUtil.MultiplyMatrix(ref result, ref matrixToMultiplyBy);
}
///
/// Critical -- references and writes out to memory addresses. The
/// caller is safe if the pointer points to a D3DMATRIX
/// value.
///
[SecurityCritical]
internal unsafe virtual void ConvertToD3DMATRIX(/* out */ D3DMATRIX* milMatrix)
{
Matrix matrix = Value;
MILUtilities.ConvertToD3DMATRIX(&matrix, milMatrix);
}
#endregion
///
/// Consolidates the common logic of obtain the value of a
/// Transform, after checking the transform for null.
///
/// Transform to obtain value of.
///
/// Current value of 'transform'. Matrix.Identity if
/// the 'transform' parameter is null.
///
internal static void GetTransformValue(
Transform transform,
out Matrix currentTransformValue
)
{
if (transform != null)
{
currentTransformValue = transform.Value;
}
else
{
currentTransformValue = Matrix.Identity;
}
}
///
/// Transforms a point
///
/// Input point
/// Output point
/// True if the point was successfully transformed
public override bool TryTransform(Point inPoint, out Point result)
{
Matrix m = Value;
result = m.Transform(inPoint);
return true;
}
///
/// Transforms the bounding box to the smallest axis aligned bounding box
/// that contains all the points in the original bounding box
///
/// Bounding box
/// The transformed bounding box
public override Rect TransformBounds(Rect rect)
{
TransformRect(ref rect);
return rect;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform Inverse
{
get
{
ReadPreamble();
Matrix matrix = Value;
if (!matrix.HasInverse)
{
return null;
}
matrix.Invert();
return new MatrixTransform(matrix);
}
}
///
/// Returns a best effort affine transform
///
internal override Transform AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
return this;
}
}
}
#endregion
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: Transform.cs
*
* Description:
* Transform.cs defines the "Transform" object, translate, rotate and scale.
*
* Copyright (C) 2002 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using MS.Internal;
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Windows.Markup;
using MS.Internal.Serialization;
using MS.Internal.PresentationCore;
namespace System.Windows.Media
{
#region Transform
///
/// Transform provides a base for all types of transformations, including matrix and list type.
///
[Localizability(LocalizationCategory.None, Readability=Readability.Unreadable)]
public abstract partial class Transform : GeneralTransform
{
internal Transform()
{
}
///
/// Identity transformation.
///
public static Transform Identity
{
get
{
return s_identity;
}
}
private static Transform MakeIdentityTransform()
{
Transform identity = new MatrixTransform(Matrix.Identity);
identity.Freeze();
return identity;
}
private static Transform s_identity = MakeIdentityTransform();
///
/// Return the current transformation value.
///
public abstract Matrix Value { get; }
///
/// Returns true if transformation if the transformation is definitely an identity. There are cases where it will
/// return false because of computational error or presence of animations (And we're interpolating through a
/// transient identity) -- this is intentional. This property is used internally only. If you need to check the
/// current matrix value for identity, use Transform.Value.Identity.
///
internal abstract bool IsIdentity {get;}
internal virtual bool CanSerializeToString() { return false; }
#region Perf Helpers
internal virtual void TransformRect(ref Rect rect)
{
Matrix matrix = Value;
MatrixUtil.TransformRect(ref rect, ref matrix);
}
///
/// MultiplyValueByMatrix - result is set equal to "this" * matrixToMultiplyBy.
///
/// The result is stored here.
/// The multiplicand.
internal virtual void MultiplyValueByMatrix(ref Matrix result, ref Matrix matrixToMultiplyBy)
{
result = Value;
MatrixUtil.MultiplyMatrix(ref result, ref matrixToMultiplyBy);
}
///
/// Critical -- references and writes out to memory addresses. The
/// caller is safe if the pointer points to a D3DMATRIX
/// value.
///
[SecurityCritical]
internal unsafe virtual void ConvertToD3DMATRIX(/* out */ D3DMATRIX* milMatrix)
{
Matrix matrix = Value;
MILUtilities.ConvertToD3DMATRIX(&matrix, milMatrix);
}
#endregion
///
/// Consolidates the common logic of obtain the value of a
/// Transform, after checking the transform for null.
///
/// Transform to obtain value of.
///
/// Current value of 'transform'. Matrix.Identity if
/// the 'transform' parameter is null.
///
internal static void GetTransformValue(
Transform transform,
out Matrix currentTransformValue
)
{
if (transform != null)
{
currentTransformValue = transform.Value;
}
else
{
currentTransformValue = Matrix.Identity;
}
}
///
/// Transforms a point
///
/// Input point
/// Output point
/// True if the point was successfully transformed
public override bool TryTransform(Point inPoint, out Point result)
{
Matrix m = Value;
result = m.Transform(inPoint);
return true;
}
///
/// Transforms the bounding box to the smallest axis aligned bounding box
/// that contains all the points in the original bounding box
///
/// Bounding box
/// The transformed bounding box
public override Rect TransformBounds(Rect rect)
{
TransformRect(ref rect);
return rect;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform Inverse
{
get
{
ReadPreamble();
Matrix matrix = Value;
if (!matrix.HasInverse)
{
return null;
}
matrix.Invert();
return new MatrixTransform(matrix);
}
}
///
/// Returns a best effort affine transform
///
internal override Transform AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
return this;
}
}
}
#endregion
}
// 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
- HierarchicalDataBoundControlAdapter.cs
- XPathAxisIterator.cs
- NonSerializedAttribute.cs
- EntityTypeBase.cs
- CustomCategoryAttribute.cs
- PenContext.cs
- CallbackValidatorAttribute.cs
- WrappedReader.cs
- EncodingTable.cs
- UnSafeCharBuffer.cs
- DesignerLoader.cs
- EntityClassGenerator.cs
- RtfToken.cs
- ColorInterpolationModeValidation.cs
- NamespaceMapping.cs
- ByteStreamGeometryContext.cs
- MailWriter.cs
- SaveFileDialog.cs
- Itemizer.cs
- SamlAdvice.cs
- Hex.cs
- TreeChangeInfo.cs
- TextFormatter.cs
- FixedSOMTextRun.cs
- CheckedListBox.cs
- LabelDesigner.cs
- Color.cs
- WinFormsSpinner.cs
- SyndicationFeedFormatter.cs
- WebReferencesBuildProvider.cs
- ExceptionHandlersDesigner.cs
- UserNameSecurityToken.cs
- CannotUnloadAppDomainException.cs
- ConfigurationValues.cs
- MultilineStringConverter.cs
- XamlDesignerSerializationManager.cs
- UICuesEvent.cs
- DropShadowBitmapEffect.cs
- ComEventsInfo.cs
- Parser.cs
- CodeDomSerializerBase.cs
- MsmqIntegrationOutputChannel.cs
- SmuggledIUnknown.cs
- InputBinding.cs
- DefaultPropertyAttribute.cs
- Camera.cs
- TreeNodeEventArgs.cs
- PathHelper.cs
- TextShapeableCharacters.cs
- TypeConstant.cs
- InfoCardKeyedHashAlgorithm.cs
- CommandEventArgs.cs
- Decoder.cs
- AddInBase.cs
- PtsCache.cs
- IxmlLineInfo.cs
- GiveFeedbackEventArgs.cs
- InlineCollection.cs
- ServiceContractDetailViewControl.cs
- BamlLocalizableResourceKey.cs
- DBDataPermission.cs
- HttpPostServerProtocol.cs
- HashStream.cs
- PersonalizableTypeEntry.cs
- DurationConverter.cs
- ToolStripSeparatorRenderEventArgs.cs
- AnonymousIdentificationSection.cs
- ObjectDisposedException.cs
- Polyline.cs
- _AuthenticationState.cs
- ByteStack.cs
- TransformPattern.cs
- ComboBoxAutomationPeer.cs
- XmlMapping.cs
- RegexCompiler.cs
- TextDpi.cs
- EntityDescriptor.cs
- BitArray.cs
- PropertyStore.cs
- MetafileHeaderWmf.cs
- WorkflowServiceNamespace.cs
- UnsafePeerToPeerMethods.cs
- CodeIdentifier.cs
- DataGrid.cs
- Base64Stream.cs
- ColumnHeaderConverter.cs
- XmlTextReaderImplHelpers.cs
- ReadOnlyTernaryTree.cs
- AsyncOperation.cs
- DBSchemaRow.cs
- PeerCustomResolverSettings.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- ArraySubsetEnumerator.cs
- IdleTimeoutMonitor.cs
- PathGeometry.cs
- WhitespaceReader.cs
- EndpointAddressMessageFilter.cs
- HttpListenerResponse.cs
- WebHttpBindingCollectionElement.cs
- SamlAdvice.cs