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
- UpdateTracker.cs
- ChannelManager.cs
- ContentFilePart.cs
- SoapObjectWriter.cs
- AssemblyNameProxy.cs
- xdrvalidator.cs
- Attachment.cs
- WCFModelStrings.Designer.cs
- documentsequencetextview.cs
- CountAggregationOperator.cs
- SafeHandles.cs
- HttpBrowserCapabilitiesWrapper.cs
- CreatingCookieEventArgs.cs
- GeometryModel3D.cs
- DoubleAnimationClockResource.cs
- ExpressionBindingsDialog.cs
- InProcStateClientManager.cs
- DefaultAssemblyResolver.cs
- XmlSerializationReader.cs
- OleDbErrorCollection.cs
- AlignmentYValidation.cs
- SequentialUshortCollection.cs
- CellParaClient.cs
- TagPrefixInfo.cs
- TextFindEngine.cs
- PrintControllerWithStatusDialog.cs
- MenuItem.cs
- MatrixCamera.cs
- _Events.cs
- ToolStripLocationCancelEventArgs.cs
- ControlPaint.cs
- MarkupCompilePass1.cs
- EntityCollection.cs
- Form.cs
- WSHttpBindingElement.cs
- ProcessHostFactoryHelper.cs
- DetailsViewRowCollection.cs
- PackagePartCollection.cs
- SubqueryRules.cs
- TypedTableBase.cs
- RawStylusInputCustomData.cs
- MailWriter.cs
- ADMembershipUser.cs
- MatrixCamera.cs
- ArgumentsParser.cs
- DesignTimeSiteMapProvider.cs
- Events.cs
- EventBuilder.cs
- ExceptionHandler.cs
- ToolboxItem.cs
- DataGridViewTopRowAccessibleObject.cs
- BindStream.cs
- DataStorage.cs
- ServicesSection.cs
- LabelEditEvent.cs
- _Events.cs
- DrawingDrawingContext.cs
- RootBuilder.cs
- EventLogRecord.cs
- VisualStyleRenderer.cs
- DataGridViewRowHeaderCell.cs
- AbstractExpressions.cs
- MeshGeometry3D.cs
- ImageFormat.cs
- XNodeSchemaApplier.cs
- XmlSchemas.cs
- ArithmeticLiteral.cs
- AtomicFile.cs
- WebPartExportVerb.cs
- Point3DKeyFrameCollection.cs
- StatusBarItemAutomationPeer.cs
- EventRouteFactory.cs
- DEREncoding.cs
- ElasticEase.cs
- NodeInfo.cs
- SimpleType.cs
- OdbcReferenceCollection.cs
- HashCryptoHandle.cs
- ReceiveCompletedEventArgs.cs
- ExeConfigurationFileMap.cs
- FamilyMapCollection.cs
- CompiledAction.cs
- PropertyManager.cs
- MasterPageParser.cs
- CodeDelegateCreateExpression.cs
- VirtualDirectoryMappingCollection.cs
- AsyncPostBackTrigger.cs
- KeyValueConfigurationCollection.cs
- DoubleLink.cs
- ConfigurationManagerInternal.cs
- IdentityManager.cs
- SystemIPv4InterfaceProperties.cs
- WindowsScroll.cs
- Substitution.cs
- Equal.cs
- ValueChangedEventManager.cs
- WinEventQueueItem.cs
- XamlUtilities.cs
- StreamResourceInfo.cs
- NopReturnReader.cs