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 / Media / GeneralTransformGroup.cs / 1 / GeneralTransformGroup.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GeneralTransformGroup.cs
//-----------------------------------------------------------------------------
using System;
using System.Windows;
using System.Windows.Media;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using MS.Internal;
using System.Windows.Media.Animation;
using System.Globalization;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Markup;
using System.Windows.Media.Composition;
using System.Diagnostics;
using MS.Internal.PresentationCore;
using SR = MS.Internal.PresentationCore.SR;
using SRID = MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media
{
///
/// GeneralTrasnform group
///
[ContentProperty("Children")]
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)]
public sealed partial class GeneralTransformGroup : GeneralTransform
{
#region Constructors
///
/// Default Constructor
///
public GeneralTransformGroup() { }
#endregion
///
/// Transform a point
///
/// input point
/// output point
/// True if the point is transformed successfully
public override bool TryTransform(Point inPoint, out Point result)
{
result = inPoint;
if ((Children == null) || (Children.Count == 0))
{
return false;
}
Point inP = inPoint;
bool fPointTransformed = true;
// transform the point through each of the transforms
for (int i = 0; i < Children.Count; i++)
{
if (Children.Internal_GetItem(i).TryTransform(inPoint, out result) == false)
{
fPointTransformed = false;
}
inPoint = result;
}
return fPointTransformed;
}
///
/// Transforms the bounding box to the smallest axis aligned bounding box
/// that contains all the points in the original bounding box
///
/// Input bounding rect
/// Transformed bounding rect
public override Rect TransformBounds(Rect rect)
{
if ((Children == null) || (Children.Count == 0))
{
return rect;
}
Rect result = rect;
for (int i = 0; i < Children.Count; i++)
{
result = Children.Internal_GetItem(i).TransformBounds(result);
}
return result;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform Inverse
{
get
{
ReadPreamble();
if ((Children == null) || (Children.Count == 0))
{
return null;
}
GeneralTransformGroup group = new GeneralTransformGroup();
for (int i = Children.Count - 1; i >= 0; i--)
{
GeneralTransform g = Children.Internal_GetItem(i).Inverse;
// if any of the transforms does not have an inverse,
// then the entire group does not have one
if (g == null)
return null;
group.Children.Add(g);
}
return group;
}
}
///
/// Returns a best effort affine transform
///
internal override Transform AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
if ((Children == null) || (Children.Count == 0))
{
return null;
}
Matrix matrix = Matrix.Identity;
foreach (GeneralTransform gt in Children)
{
Transform t = gt.AffineTransform;
if (t != null)
{
matrix *= t.Value;
}
}
return new MatrixTransform(matrix);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GeneralTransformGroup.cs
//-----------------------------------------------------------------------------
using System;
using System.Windows;
using System.Windows.Media;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using MS.Internal;
using System.Windows.Media.Animation;
using System.Globalization;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Markup;
using System.Windows.Media.Composition;
using System.Diagnostics;
using MS.Internal.PresentationCore;
using SR = MS.Internal.PresentationCore.SR;
using SRID = MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media
{
///
/// GeneralTrasnform group
///
[ContentProperty("Children")]
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)]
public sealed partial class GeneralTransformGroup : GeneralTransform
{
#region Constructors
///
/// Default Constructor
///
public GeneralTransformGroup() { }
#endregion
///
/// Transform a point
///
/// input point
/// output point
/// True if the point is transformed successfully
public override bool TryTransform(Point inPoint, out Point result)
{
result = inPoint;
if ((Children == null) || (Children.Count == 0))
{
return false;
}
Point inP = inPoint;
bool fPointTransformed = true;
// transform the point through each of the transforms
for (int i = 0; i < Children.Count; i++)
{
if (Children.Internal_GetItem(i).TryTransform(inPoint, out result) == false)
{
fPointTransformed = false;
}
inPoint = result;
}
return fPointTransformed;
}
///
/// Transforms the bounding box to the smallest axis aligned bounding box
/// that contains all the points in the original bounding box
///
/// Input bounding rect
/// Transformed bounding rect
public override Rect TransformBounds(Rect rect)
{
if ((Children == null) || (Children.Count == 0))
{
return rect;
}
Rect result = rect;
for (int i = 0; i < Children.Count; i++)
{
result = Children.Internal_GetItem(i).TransformBounds(result);
}
return result;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform Inverse
{
get
{
ReadPreamble();
if ((Children == null) || (Children.Count == 0))
{
return null;
}
GeneralTransformGroup group = new GeneralTransformGroup();
for (int i = Children.Count - 1; i >= 0; i--)
{
GeneralTransform g = Children.Internal_GetItem(i).Inverse;
// if any of the transforms does not have an inverse,
// then the entire group does not have one
if (g == null)
return null;
group.Children.Add(g);
}
return group;
}
}
///
/// Returns a best effort affine transform
///
internal override Transform AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
if ((Children == null) || (Children.Count == 0))
{
return null;
}
Matrix matrix = Matrix.Identity;
foreach (GeneralTransform gt in Children)
{
Transform t = gt.AffineTransform;
if (t != null)
{
matrix *= t.Value;
}
}
return new MatrixTransform(matrix);
}
}
}
}
// 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
- ConfigsHelper.cs
- DescendantOverDescendantQuery.cs
- ResourceSetExpression.cs
- infer.cs
- StorageSetMapping.cs
- EventSourceCreationData.cs
- DataContractSerializerMessageContractImporter.cs
- TraceContextEventArgs.cs
- ReachFixedDocumentSerializerAsync.cs
- Point3DConverter.cs
- ElementsClipboardData.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- ErrorEventArgs.cs
- Part.cs
- DataControlField.cs
- SingleConverter.cs
- ControlHelper.cs
- SecurityHelper.cs
- KeyToListMap.cs
- PresentationSource.cs
- SrgsToken.cs
- SoapElementAttribute.cs
- DesignTimeVisibleAttribute.cs
- SiteMapDataSource.cs
- ForceCopyBuildProvider.cs
- SpecialFolderEnumConverter.cs
- FloatMinMaxAggregationOperator.cs
- EntityDataSourceContainerNameItem.cs
- basevalidator.cs
- CustomTypeDescriptor.cs
- DelimitedListTraceListener.cs
- SamlSecurityTokenAuthenticator.cs
- RevocationPoint.cs
- ImageSourceConverter.cs
- SqlDataReaderSmi.cs
- Membership.cs
- C14NUtil.cs
- WindowsSecurityToken.cs
- RootBuilder.cs
- GridViewHeaderRowPresenter.cs
- FactoryRecord.cs
- DaylightTime.cs
- ReflectPropertyDescriptor.cs
- TextSimpleMarkerProperties.cs
- DnsElement.cs
- Blend.cs
- NavigatorInput.cs
- XamlHostingSection.cs
- TextAutomationPeer.cs
- DomNameTable.cs
- OdbcTransaction.cs
- Typeface.cs
- SafeMemoryMappedFileHandle.cs
- VisualProxy.cs
- InheritanceAttribute.cs
- NullableConverter.cs
- ExpressionBuilderCollection.cs
- DoubleMinMaxAggregationOperator.cs
- BoundPropertyEntry.cs
- PropertyTabAttribute.cs
- WindowHelperService.cs
- NameSpaceEvent.cs
- WebServiceTypeData.cs
- _ChunkParse.cs
- SchemaTypeEmitter.cs
- SettingsSavedEventArgs.cs
- Comparer.cs
- DesignerForm.cs
- XmlText.cs
- PointHitTestResult.cs
- ServiceBusyException.cs
- DocumentSequence.cs
- Style.cs
- EmptyEnumerator.cs
- OracleLob.cs
- ColumnPropertiesGroup.cs
- Input.cs
- SystemTcpConnection.cs
- XmlSchemaIdentityConstraint.cs
- Label.cs
- AccessDataSourceView.cs
- RoleExceptions.cs
- RunClient.cs
- GeneratedView.cs
- MessageQueueInstaller.cs
- CounterSampleCalculator.cs
- ConfigPathUtility.cs
- WeakHashtable.cs
- ActivityWithResult.cs
- MsmqInputMessage.cs
- DeleteMemberBinder.cs
- ExpressionBuilder.cs
- HttpResponseInternalWrapper.cs
- StyleModeStack.cs
- DataListItemEventArgs.cs
- ConditionalAttribute.cs
- AlignmentXValidation.cs
- CodeIdentifier.cs
- SrgsDocument.cs
- TypeUnloadedException.cs