File: src\Framework\MS\Internal\Text\MarkerProperties.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation.  All rights reserved.
// 
// File: MarkerProperties.cs
//
// Description: Marker properties. 
//
// History:  
//  06/06/2003 : Microsoft - created.
//  07/18/2003 : Microsoft - converted to new Property Engine.
//
//---------------------------------------------------------------------------
 
using System;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media.TextFormatting;
using MS.Internal.PtsHost.UnsafeNativeMethods; // Relative line height from PTS
namespace MS.Internal.Text
{
    // ----------------------------------------------------------------------
    // Marker properties.
    // ----------------------------------------------------------------------
    internal sealed class MarkerProperties
    {
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <remarks>
        /// The listWidth parameter gives the width of the list element, and is used to clip the MarkerOffset value
        /// </remarks>
        internal MarkerProperties(List list, int index)
        {
            _offset = list.MarkerOffset;
            // Negative value for offset because it is required by TextFormatter line box model.
            // If offset is NaN - default value - set it as 0.5 * line height
            if (Double.IsNaN(_offset))
            {
                // Obtain list's line height to set defualt marker offsert
                double lineHeight = DynamicPropertyReader.GetLineHeightValue(list);
                _offset = - 0.5 * lineHeight;
            }
            else
            {
                _offset = -_offset;
            }
 
            _style = list.MarkerStyle;
            _index = index;
        }
 
        // ------------------------------------------------------------------
        // GetTextMarkerProperties
        // ------------------------------------------------------------------
        internal TextMarkerProperties GetTextMarkerProperties(TextParagraphProperties textParaProps)
        {
            return new TextSimpleMarkerProperties(_style, _offset, _index, textParaProps);
        }
 
        // ------------------------------------------------------------------
        // Marker style
        // ------------------------------------------------------------------
        private TextMarkerStyle _style;
 
        // ------------------------------------------------------------------
        // Distance from line start to the end of the marker symbol.
        // ------------------------------------------------------------------
        private double _offset;
 
        // ------------------------------------------------------------------
        // Autonumbering counter of counter-style marker.
        // ------------------------------------------------------------------
        private int _index;
}
}