| File: MS\Internal\Annotations\Component\IAnnotationComponent.cs | Web Access |
| Project: src\wpf\src\Microsoft.DotNet.Wpf\src\PresentationFramework\PresentationFramework.csproj (PresentationFramework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // Description: // IAnnotationComponent // using System.Collections; using System.Windows; using System.Windows.Media; namespace MS.Internal.Annotations.Component { /// <summary> /// Interface that all annotation components that are to be instantiated by the framework must implement. /// It provides the minimal control the Annotation framework needs in order to interact with annotation components. /// </summary> internal interface IAnnotationComponent { #region Public Properties /// <summary> /// Return a copy of the list of IAttachedAnnotations held by this component /// </summary> IList AttachedAnnotations { get; } /// <summary> /// Sets and gets the context this annotation component is hosted in. /// </summary> /// <value>Context this annotation component is hosted in</value> PresentationContext PresentationContext { get; set; } /// <summary> /// Gets and sets the Z-order of this component among all components /// with the same z-level /// </summary> int ZOrder { get; set; } /// <summary> /// If the AnnotatedElement's content changes the annotation might need to update its /// visual characteristics. This flag is set to false when the AnnotatedElement content changes /// and back to false when the component is updated. /// </summary> bool IsDirty { get; set; } #endregion Public Properties #region Public Methods /// <summary> /// The transformation for an annotation component can be different from the transformation applied /// to the UIElement they annotate. For example comments might be places in the margin, vertically aligned /// with the anchor point in the UI element. Scaling of a pin on a map might not be desired when scaling the /// annotated map. This method takes the transform applied to the annotated element as an argument and gives the annotation /// component developer a chance to return the desired transform for the annotation component itself. /// Typically, the implementor of this method will add the anchor point within the annotated element to the transform received. /// This method will be called whenever layout changes. /// </summary> /// <param name="transform">Transform to the AnnotatedElement.</param> /// <returns>Transform to the annotation component</returns> GeneralTransform GetDesiredTransform(GeneralTransform transform); /// <summary> /// Returns the one element the annotation component is attached to. /// </summary> /// <value></value> UIElement AnnotatedElement { get; } /// <summary> /// Add an attached annotation to the component /// </summary> /// <param name="attachedAnnotation">The attached annotation to be added to the component</param> void AddAttachedAnnotation(IAttachedAnnotation attachedAnnotation); /// <summary> /// Remove an attached annotation from the component /// </summary> /// <param name="attachedAnnotation">The attached annotation to be removed from the component</param> void RemoveAttachedAnnotation(IAttachedAnnotation attachedAnnotation); /// <summary> /// Modify an attached annotation that is held by the component /// </summary> /// <param name="attachedAnnotation">The attached annotation after modification</param> /// <param name="previousAttachedAnchor">The attached anchor previously associated with the attached annotation.</param> /// <param name="previousAttachmentLevel">The previous attachment level of the attached annotation.</param> void ModifyAttachedAnnotation(IAttachedAnnotation attachedAnnotation, object previousAttachedAnchor, AttachmentLevel previousAttachmentLevel); #endregion Public Methods } }