Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media3D / GeneralTransform3DGroup.cs / 1 / 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
- EnumConverter.cs
- TextServicesContext.cs
- FileDialogCustomPlace.cs
- DecimalConstantAttribute.cs
- PathFigureCollectionValueSerializer.cs
- Literal.cs
- DataGridPagerStyle.cs
- StylusDevice.cs
- DockingAttribute.cs
- WindowsListViewSubItem.cs
- WriteFileContext.cs
- CryptoKeySecurity.cs
- SpecularMaterial.cs
- AccessibleObject.cs
- ThaiBuddhistCalendar.cs
- MetaColumn.cs
- RsaSecurityTokenAuthenticator.cs
- XmlSchemaSequence.cs
- DataGridHeaderBorder.cs
- ActivitySurrogateSelector.cs
- iisPickupDirectory.cs
- InkPresenterAutomationPeer.cs
- DataAdapter.cs
- CroppedBitmap.cs
- QuaternionAnimation.cs
- COAUTHIDENTITY.cs
- CompositeActivityDesigner.cs
- DataGridViewRowPrePaintEventArgs.cs
- Serializer.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- ExpandableObjectConverter.cs
- ResourceAttributes.cs
- WindowsListViewGroupSubsetLink.cs
- SerializationSectionGroup.cs
- HandleRef.cs
- XmlSerializerImportOptions.cs
- IndexingContentUnit.cs
- LookupTables.cs
- PropertyEmitter.cs
- StreamingContext.cs
- ApplicationManager.cs
- RecognizerStateChangedEventArgs.cs
- RoutingTable.cs
- ValueUtilsSmi.cs
- EditorAttribute.cs
- Rights.cs
- ObjectSpanRewriter.cs
- ReferenceTypeElement.cs
- HtmlCommandAdapter.cs
- PropertyPathConverter.cs
- OSEnvironmentHelper.cs
- filewebresponse.cs
- CheckBoxDesigner.cs
- FontDifferentiator.cs
- TableRow.cs
- InternalBase.cs
- DebuggerAttributes.cs
- Point.cs
- FilterException.cs
- XPathScanner.cs
- DesignerContextDescriptor.cs
- QueryPrefixOp.cs
- HttpWebResponse.cs
- SpellerInterop.cs
- CodeConstructor.cs
- EntitySetDataBindingList.cs
- MetabaseSettings.cs
- SetStateDesigner.cs
- SafeSystemMetrics.cs
- SafeCryptHandles.cs
- mongolianshape.cs
- UserControlAutomationPeer.cs
- JoinCqlBlock.cs
- ProcessHostFactoryHelper.cs
- TableRow.cs
- FixedSOMImage.cs
- TreeNodeEventArgs.cs
- MethodImplAttribute.cs
- _SingleItemRequestCache.cs
- VScrollProperties.cs
- Serializer.cs
- OleDbReferenceCollection.cs
- AutomationElementCollection.cs
- ToolStripSplitStackLayout.cs
- ConstraintManager.cs
- OrderablePartitioner.cs
- ObjectItemConventionAssemblyLoader.cs
- NamespaceQuery.cs
- CacheSection.cs
- FactoryMaker.cs
- LambdaCompiler.Generated.cs
- ChannelManager.cs
- UrlPropertyAttribute.cs
- IndexedEnumerable.cs
- StateChangeEvent.cs
- X509CertificateCollection.cs
- InternalConfirm.cs
- CompositionTarget.cs
- ProcessModelInfo.cs
- DataGridColumnHeaderItemAutomationPeer.cs