|
//-----------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2004
//
// File: TextRun.cs
//
// Contents: Definition of text run
//
// Spec: http://team/sites/Avalon/Specs/Text%20Formatting%20API.doc
//
// Created: 1-2-2004 Worachai Chaoweeraprasit (wchao)
//
//------------------------------------------------------------------------
using System;
using System.Collections;
using System.Windows;
using System.Windows.Media;
using MS.Internal.TextFormatting;
namespace System.Windows.Media.TextFormatting
{
/// <summary>
/// Root of the hierarchy. TextRun provides definition for a group of characters
/// sharing the same set of character properties.
/// </summary>
/// <remarks>
///
/// == TEXTRUN hierarchy ==
///
/// () denotes abstract class
/// [] denotes concrete class
/// ____ denotes "is-a" relationship
/// o--> denotes "contain" relationship
///
///
/// (TextRun)_____(TextEmbeddedObject)_______[MyInlineObject]
/// |
/// |____[TextCharacters]
/// | |
/// | o--->(TextShapeableSymbols)____[TextShapeableCharacters]
/// |
/// |__(TextShapeableSymbols)_______[TabletShapeableInk]
/// |
/// |__[TextEndOfLine]
/// | |
/// | |__[TextEndOfParagraph]
/// |
/// |__(TextModifier)______[TextDecorationsModifier]
/// |
/// |__[TextEndOfSegment]
///
///
/// Public abstract classes:
///
/// TextRun is the root abstraction where all kinds of run derive.
/// TextEmbeddedObject is object within text flow which is measured, drawn and hittest'd as a whole.
/// TextShapeableSymbols is collection of characters which are measured, drawn and hittest'd as a series of individual glyphs.
/// TextModifier is a text run that modifies properties of subsequent text runs in its scope.
///
///
/// Public built-in concrete classes:
///
/// TextCharacters is a specialized TextRun implemented by TextFormatter, containing a collection of TextShapeableSymbols.
/// TextShapeableCharacters is a specialized TextShapeableSymbols implemented by TextFormatter, characters are formatted thru specified typeface.
/// TextEndOfLine is a specialized TextRun implemented by TextFormatter to mark the end of line.
/// TextEndOfParagraph is a specialized TextLineBreak implemented by TextFormatter to mark the end of paragraph.
/// TextDefaultModifier is a specialized TextModifier implemented by TextFormatter.
/// TextEndOfSegment is a specialized TextRun implemented by TextFormatter that ends the scope of a TextModifier.
///
///
/// Client-implemented concrete classes:
///
/// MyInlineObject is a specialized TextEmbeddedObject implemented by TextFormatter's client for e.g. inline image, button etc.
/// TabletInkShape is a specialized TextShapeableSymbols implemented by Tablet team, characters are formatted thru Tablet's inking engine.
///
/// </remarks>
public abstract class TextRun
{
/// <summary>
/// Reference to character buffer
/// </summary>
public abstract CharacterBufferReference CharacterBufferReference
{ get; }
/// <summary>
/// Character length
/// </summary>
public abstract int Length
{ get; }
/// <summary>
/// A set of properties shared by every characters in the run
/// </summary>
public abstract TextRunProperties Properties
{ get; }
}
}
|