Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / GeneralTransform3DGroup.cs / 1305600 / GeneralTransform3DGroup.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GeneralTransform3DGroup.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.Media3D
{
///
/// GeneralTransform3D group
///
[ContentProperty("Children")]
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)]
public sealed partial class GeneralTransform3DGroup : GeneralTransform3D
{
#region Constructors
///
/// Default Constructor
///
public GeneralTransform3DGroup() { }
#endregion
///
/// Transform a point
///
/// input point
/// output point
/// True if the point is transformed successfully
public override bool TryTransform(Point3D inPoint, out Point3D result)
{
result = inPoint;
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return false;
}
bool pointTransformed = true;
// transform the point through each of the transforms
for (int i = 0, count = children.Count; i < count; i++)
{
if (children._collection[i].TryTransform(inPoint, out result) == false)
{
pointTransformed = false;
break;
}
inPoint = result;
}
return pointTransformed;
}
///
/// 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 Rect3D TransformBounds(Rect3D rect)
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return rect;
}
Rect3D result = rect;
for (int i = 0, count = children.Count; i < count; i++)
{
result = children._collection[i].TransformBounds(result);
}
return result;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform3D Inverse
{
get
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return null;
}
GeneralTransform3DGroup group = new GeneralTransform3DGroup();
for (int i = children.Count - 1; i >= 0; i--)
{
GeneralTransform3D g = children._collection[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 Transform3D AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return null;
}
Matrix3D matrix = Matrix3D.Identity;
for (int i = 0, count = children.Count; i < count; i++)
{
Transform3D t = children._collection[i].AffineTransform;
t.Append(ref matrix);
}
return new MatrixTransform3D(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: GeneralTransform3DGroup.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.Media3D
{
///
/// GeneralTransform3D group
///
[ContentProperty("Children")]
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)]
public sealed partial class GeneralTransform3DGroup : GeneralTransform3D
{
#region Constructors
///
/// Default Constructor
///
public GeneralTransform3DGroup() { }
#endregion
///
/// Transform a point
///
/// input point
/// output point
/// True if the point is transformed successfully
public override bool TryTransform(Point3D inPoint, out Point3D result)
{
result = inPoint;
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return false;
}
bool pointTransformed = true;
// transform the point through each of the transforms
for (int i = 0, count = children.Count; i < count; i++)
{
if (children._collection[i].TryTransform(inPoint, out result) == false)
{
pointTransformed = false;
break;
}
inPoint = result;
}
return pointTransformed;
}
///
/// 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 Rect3D TransformBounds(Rect3D rect)
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return rect;
}
Rect3D result = rect;
for (int i = 0, count = children.Count; i < count; i++)
{
result = children._collection[i].TransformBounds(result);
}
return result;
}
///
/// Returns the inverse transform if it has an inverse, null otherwise
///
public override GeneralTransform3D Inverse
{
get
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return null;
}
GeneralTransform3DGroup group = new GeneralTransform3DGroup();
for (int i = children.Count - 1; i >= 0; i--)
{
GeneralTransform3D g = children._collection[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 Transform3D AffineTransform
{
[FriendAccessAllowed] // Built into Core, also used by Framework.
get
{
// cache the children to avoid a repeated DP access
GeneralTransform3DCollection children = Children;
if ((children == null) || (children.Count == 0))
{
return null;
}
Matrix3D matrix = Matrix3D.Identity;
for (int i = 0, count = children.Count; i < count; i++)
{
Transform3D t = children._collection[i].AffineTransform;
t.Append(ref matrix);
}
return new MatrixTransform3D(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
- DiscreteKeyFrames.cs
- TreeViewItem.cs
- WeakEventManager.cs
- EntitySet.cs
- TextCharacters.cs
- WorkflowExecutor.cs
- ConfigsHelper.cs
- ObjectQueryExecutionPlan.cs
- xsdvalidator.cs
- SrgsElementList.cs
- WebScriptMetadataMessageEncoderFactory.cs
- SharedPerformanceCounter.cs
- UntrustedRecipientException.cs
- FixUp.cs
- JournalEntry.cs
- ProviderConnectionPoint.cs
- _SecureChannel.cs
- LocalizableResourceBuilder.cs
- GradientStop.cs
- BordersPage.cs
- NamespaceInfo.cs
- ContainerAction.cs
- PerformanceCounterPermissionEntry.cs
- SqlGenerator.cs
- RemoteDebugger.cs
- TypeResolvingOptions.cs
- MbpInfo.cs
- TypeValidationEventArgs.cs
- PropertyEmitterBase.cs
- FileLevelControlBuilderAttribute.cs
- BufferModeSettings.cs
- MetadataCollection.cs
- reliableinputsessionchannel.cs
- Rules.cs
- ColorConvertedBitmap.cs
- HttpStreamXmlDictionaryReader.cs
- QualificationDataAttribute.cs
- WebPartManagerInternals.cs
- ObjectContextServiceProvider.cs
- LoginView.cs
- QueryableFilterRepeater.cs
- ElementUtil.cs
- AssociationEndMember.cs
- SqlConnection.cs
- BitmapCodecInfoInternal.cs
- CommentEmitter.cs
- ActiveXSite.cs
- ContentElement.cs
- SQLBinary.cs
- WindowsFormsHostPropertyMap.cs
- XmlTextReaderImpl.cs
- TextDpi.cs
- ControlCollection.cs
- UserInitiatedNavigationPermission.cs
- DmlSqlGenerator.cs
- OleDbDataAdapter.cs
- IsolatedStorageFilePermission.cs
- StreamHelper.cs
- SqlDataSourceCache.cs
- ObjectHandle.cs
- ContentPlaceHolder.cs
- RequestQueryParser.cs
- CalloutQueueItem.cs
- StaticSiteMapProvider.cs
- SchemaMerger.cs
- StrongNamePublicKeyBlob.cs
- ConfigurationElement.cs
- EpmTargetTree.cs
- TreeNodeMouseHoverEvent.cs
- TextCompositionManager.cs
- QueryCacheKey.cs
- ExportOptions.cs
- ServiceModelSecurityTokenRequirement.cs
- CryptoApi.cs
- EdmItemCollection.cs
- FromRequest.cs
- XmlFormatReaderGenerator.cs
- activationcontext.cs
- DocumentReferenceCollection.cs
- ListControlDataBindingHandler.cs
- ToolboxItemWrapper.cs
- NativeBuffer.cs
- SocketPermission.cs
- LinqDataSourceContextEventArgs.cs
- IdnMapping.cs
- RegexCompiler.cs
- ConvertersCollection.cs
- XmlWrappingReader.cs
- MulticastDelegate.cs
- PagePropertiesChangingEventArgs.cs
- XmlSchemaCollection.cs
- WebHttpBinding.cs
- SqlDataSourceSummaryPanel.cs
- CodeTypeMemberCollection.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ParseElement.cs
- Figure.cs
- AuthenticationConfig.cs
- EncoderNLS.cs
- DefaultAsyncDataDispatcher.cs