FixedSOMImage.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / FixedSOMImage.cs / 1305600 / FixedSOMImage.cs

                            /*++ 

    File: FixedSOMImage.cs

    Copyright (C) 2005 Microsoft Corporation. All rights reserved. 

    Description: 
        SOM object that wraps an image on the page. The corresponding markup element can be either an image or 
        a Path with an ImageBrush
 
    History:
       05/17/2005: agurcan - Created

--*/ 

namespace System.Windows.Documents 
{ 
    using System.Windows.Automation;
    using System.Windows.Controls; 
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    using System.Globalization; 
    using System.Diagnostics;
 
    internal sealed class FixedSOMImage : FixedSOMElement 
    {
        //-------------------------------------------------------------------- 
        //
        // Constructors
        //
        //--------------------------------------------------------------------- 

        #region Constructors 
        private FixedSOMImage(Rect imageRect, GeneralTransform trans, Uri sourceUri, FixedNode node, DependencyObject o) : base(node, trans) 
        {
            _boundingRect = trans.TransformBounds(imageRect); 
            _source = sourceUri;
            _startIndex = 0;
            _endIndex = 1;
            _name = AutomationProperties.GetName(o); 
            _helpText = AutomationProperties.GetHelpText(o);
        } 
        #endregion Constructors 

        //------------------------------------------------------------------- 
        //
        // Public Methods
        //
        //--------------------------------------------------------------------- 

        #region Public Methods 
 
        public static FixedSOMImage Create(FixedPage page, Image image, FixedNode fixedNode)
        { 
            Uri imageUri = null;
            if (image.Source is BitmapImage)
            {
                BitmapImage imageSource = image.Source as BitmapImage; 
                imageUri = imageSource.UriSource;
            } 
            else if (image.Source is BitmapFrame) 
            {
                BitmapFrame imageSource = image.Source as BitmapFrame; 
                imageUri = new Uri(imageSource.ToString(), UriKind.RelativeOrAbsolute);
            }
            Rect sourceRect = new Rect(image.RenderSize);
 
            GeneralTransform transform = image.TransformToAncestor(page);
            return new FixedSOMImage(sourceRect, transform, imageUri, fixedNode, image); 
        } 

        public static FixedSOMImage Create(FixedPage page, Path path, FixedNode fixedNode) 
        {
            Debug.Assert(path.Fill is ImageBrush);
            ImageSource source = ((ImageBrush)(path.Fill)).ImageSource;
            Uri imageUri = null; 
            if (source is BitmapImage)
            { 
                BitmapImage imageSource = source as BitmapImage; 
                imageUri = imageSource.UriSource;
            } 
            else if (source is BitmapFrame)
            {
                BitmapFrame imageSource = source as BitmapFrame;
                imageUri = new Uri(imageSource.ToString(), UriKind.RelativeOrAbsolute); 
            }
 
            Rect sourceRect = path.Data.Bounds; 
            GeneralTransform trans = path.TransformToAncestor(page);
            return new FixedSOMImage(sourceRect, trans, imageUri, fixedNode, path); 
        }

#if DEBUG
 
        public override void Render(DrawingContext dc, string label, DrawDebugVisual debugVisual)
        { 
            Pen pen = new Pen(Brushes.Yellow, 1); 
            Rect rect = _boundingRect;
            rect.Inflate(5,5); 
            dc.DrawRectangle(null, pen , rect);

            if (label != null && debugVisual == DrawDebugVisual.Paragraphs)
            { 
                base.RenderLabel(dc, label);
            } 
        } 
#endif
 
        #endregion Public Methods

        //--------------------------------------------------------------------
        // 
        // Internal Properties
        // 
        //--------------------------------------------------------------------- 

        #region Internal Properties 
        internal Uri Source
        {
            get { return _source; }
        } 

        internal String Name 
        { 
            get { return _name; }
        } 

        internal String HelpText
        {
            get { return _helpText; } 
        }
        #endregion Internal Properties 
 
        //--------------------------------------------------------------------
        // 
        // Private Fields
        //
        //----------------------------------------------------------------------
 
        #region Private Fields
        private Uri _source; 
        private String _name; 
        private String _helpText;
        #endregion Interanl Fields 

    }
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK