Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / GeneralTransformGroup.cs / 1305600 / 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
- PauseStoryboard.cs
- StylusTip.cs
- AutomationPatternInfo.cs
- PointCollection.cs
- PagedDataSource.cs
- CustomErrorsSectionWrapper.cs
- UmAlQuraCalendar.cs
- DataTableMappingCollection.cs
- XamlBuildTaskServices.cs
- OutputScope.cs
- Effect.cs
- TypeValidationEventArgs.cs
- AuditLog.cs
- JournalEntry.cs
- HostExecutionContextManager.cs
- BindingCompleteEventArgs.cs
- TextServicesLoader.cs
- XmlNodeComparer.cs
- TriggerActionCollection.cs
- bidPrivateBase.cs
- ProfileGroupSettings.cs
- PocoEntityKeyStrategy.cs
- TemplateColumn.cs
- Assert.cs
- Int32AnimationUsingKeyFrames.cs
- State.cs
- Literal.cs
- TraceHwndHost.cs
- OutputScopeManager.cs
- BindValidationContext.cs
- TreeViewEvent.cs
- PreviewPageInfo.cs
- OracleBFile.cs
- DataServiceQueryOfT.cs
- COM2TypeInfoProcessor.cs
- TemplateXamlTreeBuilder.cs
- AxHost.cs
- ViewManager.cs
- BitmapEffectCollection.cs
- ActivationArguments.cs
- CompModSwitches.cs
- DataRelation.cs
- LayoutManager.cs
- ContentValidator.cs
- ConfigXmlDocument.cs
- HtmlLink.cs
- PartialCachingControl.cs
- LicenseContext.cs
- OdbcConnectionStringbuilder.cs
- TextRunCache.cs
- ClientRuntimeConfig.cs
- Container.cs
- DictionarySectionHandler.cs
- StreamInfo.cs
- DesignerActionService.cs
- TypeSystem.cs
- EditorAttribute.cs
- CursorConverter.cs
- Attributes.cs
- DbDataAdapter.cs
- ReliableOutputConnection.cs
- EncoderParameters.cs
- XamlStackWriter.cs
- HttpCacheVaryByContentEncodings.cs
- AssociationTypeEmitter.cs
- SqlMethodTransformer.cs
- PanelContainerDesigner.cs
- LineMetrics.cs
- ComponentEditorForm.cs
- GenericEnumConverter.cs
- Point3DCollection.cs
- KeySplineConverter.cs
- RecommendedAsConfigurableAttribute.cs
- CommandEventArgs.cs
- DesignerValidatorAdapter.cs
- ContainerUIElement3D.cs
- DesignerListAdapter.cs
- StrongNameMembershipCondition.cs
- SqlConnectionString.cs
- SequentialOutput.cs
- BaseCAMarshaler.cs
- GridViewSortEventArgs.cs
- SqlInternalConnection.cs
- Thickness.cs
- GridViewColumnHeader.cs
- COAUTHIDENTITY.cs
- KeyGestureValueSerializer.cs
- ThreadAbortException.cs
- Utilities.cs
- ClientOperation.cs
- SelectionUIHandler.cs
- XmlAttributes.cs
- FontEditor.cs
- MetadataItemEmitter.cs
- GroupItemAutomationPeer.cs
- SelectionRange.cs
- HiddenFieldPageStatePersister.cs
- InkCanvasInnerCanvas.cs
- HuffmanTree.cs
- BamlVersionHeader.cs