Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewUtilities.cs
- PageStatePersister.cs
- DataPagerFieldItem.cs
- AddInBase.cs
- BindingManagerDataErrorEventArgs.cs
- AppSettingsReader.cs
- KeyValueConfigurationCollection.cs
- InputProviderSite.cs
- XmlSchemaSequence.cs
- StaticContext.cs
- FixedDSBuilder.cs
- VisualStateManager.cs
- ExpressionReplacer.cs
- Method.cs
- NumberFormatInfo.cs
- MulticastIPAddressInformationCollection.cs
- XmlDictionaryString.cs
- ArgumentOutOfRangeException.cs
- DateTimeFormatInfoScanner.cs
- CodeMemberMethod.cs
- HostedHttpTransportManager.cs
- FilterableAttribute.cs
- SqlDataSourceFilteringEventArgs.cs
- Mappings.cs
- IIS7WorkerRequest.cs
- PriorityBinding.cs
- RoleGroupCollection.cs
- XmlNamespaceDeclarationsAttribute.cs
- Socket.cs
- DetailsViewPagerRow.cs
- InvalidComObjectException.cs
- StringOutput.cs
- CngKey.cs
- PermissionRequestEvidence.cs
- DbReferenceCollection.cs
- DataGridCaption.cs
- DefaultPrintController.cs
- ConnectionsZoneDesigner.cs
- Invariant.cs
- XmlAttributeHolder.cs
- ComplexBindingPropertiesAttribute.cs
- EnvelopedSignatureTransform.cs
- ProviderCommandInfoUtils.cs
- FontConverter.cs
- TiffBitmapEncoder.cs
- DataGridColumnHeader.cs
- MsmqSecureHashAlgorithm.cs
- ParallelEnumerable.cs
- CacheRequest.cs
- UInt64.cs
- Comparer.cs
- CircleHotSpot.cs
- SimpleRecyclingCache.cs
- SqlTransaction.cs
- ContentPlaceHolder.cs
- XmlSchemaValidator.cs
- UndoEngine.cs
- EffectiveValueEntry.cs
- BorderSidesEditor.cs
- TextSimpleMarkerProperties.cs
- MergeExecutor.cs
- CompiledQuery.cs
- CompensatableTransactionScopeActivity.cs
- BitmapEffectInput.cs
- KnownColorTable.cs
- BaseValidatorDesigner.cs
- MessagingDescriptionAttribute.cs
- ChannelServices.cs
- TransformerInfo.cs
- InternalConfigHost.cs
- ExternalCalls.cs
- backend.cs
- MeasurementDCInfo.cs
- XmlDigitalSignatureProcessor.cs
- WebPartDescriptionCollection.cs
- ExceptionTranslationTable.cs
- XMLDiffLoader.cs
- DateTimeParse.cs
- PreservationFileWriter.cs
- IdentityManager.cs
- XmlnsPrefixAttribute.cs
- XsltArgumentList.cs
- DecimalAnimationUsingKeyFrames.cs
- XsdValidatingReader.cs
- AssemblyUtil.cs
- TargetParameterCountException.cs
- ClientApiGenerator.cs
- ScaleTransform.cs
- CapabilitiesState.cs
- CharacterBufferReference.cs
- ListViewTableRow.cs
- BitmapFrameDecode.cs
- WebPartTransformer.cs
- XmlUtilWriter.cs
- CoreSwitches.cs
- FlowLayoutSettings.cs
- ControlPropertyNameConverter.cs
- TextRangeEditTables.cs
- WebPageTraceListener.cs
- BuilderElements.cs