Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / textformatting / TextEmbeddedObject.cs / 1 / TextEmbeddedObject.cs
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2004
//
// File: TextEmbeddedObject.cs
//
// Contents: Definition of text embedded object
//
// Spec: http://avalon/text/DesignDocsAndSpecs/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
{
///
/// Provide definition for a kind of text content in which measuring, hittesting
/// and drawing of the entire content is done in whole. Example of that kind of
/// content is a button in the middle of the line.
///
public abstract class TextEmbeddedObject : TextRun
{
///
/// Line break condition before text object
///
public abstract LineBreakCondition BreakBefore
{ get; }
///
/// Line break condition after text object
///
public abstract LineBreakCondition BreakAfter
{ get; }
///
/// Flag indicates whether text object has fixed size regardless of where
/// it is placed within a line
///
public abstract bool HasFixedSize
{ get; }
///
/// Get text object measurement metrics that will fit within the specified
/// remaining width of the paragraph
///
/// remaining paragraph width
/// text object metrics
public abstract TextEmbeddedObjectMetrics Format(
double remainingParagraphWidth
);
///
/// Get computed bounding box of text object
///
/// run is drawn from right to left
/// run is drawn with its side parallel to baseline
/// computed bounding box size of text object
public abstract Rect ComputeBoundingBox(
bool rightToLeft,
bool sideways
);
///
/// Draw text object
///
/// drawing context
/// origin where the object is drawn
/// run is drawn from right to left
/// run is drawn with its side parallel to baseline
public abstract void Draw(
DrawingContext drawingContext,
Point origin,
bool rightToLeft,
bool sideways
);
}
///
/// Text object properties
///
public class TextEmbeddedObjectMetrics
{
private double _width;
private double _height;
private double _baseline;
///
/// Construct a text object size
///
/// object width
/// object height
/// object baseline in ratio relative to run height
public TextEmbeddedObjectMetrics(
double width,
double height,
double baseline
)
{
_width = width;
_height = height;
_baseline = baseline;
}
///
/// Object width
///
public double Width
{
get { return _width; }
}
///
/// Object height
///
///
public double Height
{
get { return _height; }
}
///
/// Object baseline in ratio relative to run height
///
public double Baseline
{
get { return _baseline; }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2004
//
// File: TextEmbeddedObject.cs
//
// Contents: Definition of text embedded object
//
// Spec: http://avalon/text/DesignDocsAndSpecs/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
{
///
/// Provide definition for a kind of text content in which measuring, hittesting
/// and drawing of the entire content is done in whole. Example of that kind of
/// content is a button in the middle of the line.
///
public abstract class TextEmbeddedObject : TextRun
{
///
/// Line break condition before text object
///
public abstract LineBreakCondition BreakBefore
{ get; }
///
/// Line break condition after text object
///
public abstract LineBreakCondition BreakAfter
{ get; }
///
/// Flag indicates whether text object has fixed size regardless of where
/// it is placed within a line
///
public abstract bool HasFixedSize
{ get; }
///
/// Get text object measurement metrics that will fit within the specified
/// remaining width of the paragraph
///
/// remaining paragraph width
/// text object metrics
public abstract TextEmbeddedObjectMetrics Format(
double remainingParagraphWidth
);
///
/// Get computed bounding box of text object
///
/// run is drawn from right to left
/// run is drawn with its side parallel to baseline
/// computed bounding box size of text object
public abstract Rect ComputeBoundingBox(
bool rightToLeft,
bool sideways
);
///
/// Draw text object
///
/// drawing context
/// origin where the object is drawn
/// run is drawn from right to left
/// run is drawn with its side parallel to baseline
public abstract void Draw(
DrawingContext drawingContext,
Point origin,
bool rightToLeft,
bool sideways
);
}
///
/// Text object properties
///
public class TextEmbeddedObjectMetrics
{
private double _width;
private double _height;
private double _baseline;
///
/// Construct a text object size
///
/// object width
/// object height
/// object baseline in ratio relative to run height
public TextEmbeddedObjectMetrics(
double width,
double height,
double baseline
)
{
_width = width;
_height = height;
_baseline = baseline;
}
///
/// Object width
///
public double Width
{
get { return _width; }
}
///
/// Object height
///
///
public double Height
{
get { return _height; }
}
///
/// Object baseline in ratio relative to run height
///
public double Baseline
{
get { return _baseline; }
}
}
}
// 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
- LongTypeConverter.cs
- ScrollEventArgs.cs
- VolatileEnlistmentState.cs
- XmlNamespaceManager.cs
- DesignTimeType.cs
- HttpListenerException.cs
- CodeArrayIndexerExpression.cs
- CfgParser.cs
- WindowsEditBoxRange.cs
- RawStylusInputCustomData.cs
- ControlBuilder.cs
- XmlSchemaSimpleContent.cs
- CompareValidator.cs
- EntityDataSourceQueryBuilder.cs
- SocketAddress.cs
- SchemaImporter.cs
- AsymmetricCryptoHandle.cs
- ListBoxChrome.cs
- SizeFConverter.cs
- BindingCollection.cs
- GeometryConverter.cs
- CompilerState.cs
- ErasingStroke.cs
- DataGridItemEventArgs.cs
- CardSpacePolicyElement.cs
- Calendar.cs
- RawAppCommandInputReport.cs
- RequestValidator.cs
- ClientRoleProvider.cs
- PrivacyNoticeBindingElementImporter.cs
- File.cs
- LineUtil.cs
- COM2TypeInfoProcessor.cs
- XamlWriter.cs
- AttributeCallbackBuilder.cs
- LayoutTableCell.cs
- ClientRoleProvider.cs
- PointCollection.cs
- CardSpaceShim.cs
- HttpAsyncResult.cs
- Control.cs
- ObjectListSelectEventArgs.cs
- TransactionValidationBehavior.cs
- FileLevelControlBuilderAttribute.cs
- LabelExpression.cs
- filewebresponse.cs
- ConfigXmlCDataSection.cs
- HtmlCommandAdapter.cs
- XmlDeclaration.cs
- LateBoundBitmapDecoder.cs
- PropertyItem.cs
- System.Data_BID.cs
- XmlDeclaration.cs
- FormsIdentity.cs
- DataTablePropertyDescriptor.cs
- InternalCache.cs
- HtmlWindow.cs
- ClientEventManager.cs
- XmlBinaryReader.cs
- HeaderedContentControl.cs
- AnnotationAuthorChangedEventArgs.cs
- OnOperation.cs
- HtmlTableRowCollection.cs
- SelectorItemAutomationPeer.cs
- StartFileNameEditor.cs
- PermissionToken.cs
- SqlMethodTransformer.cs
- TextEvent.cs
- DecoderFallback.cs
- StorageAssociationSetMapping.cs
- GridViewDeletedEventArgs.cs
- PerfService.cs
- WebPartConnectionsConfigureVerb.cs
- HtmlUtf8RawTextWriter.cs
- Context.cs
- Version.cs
- NamespaceMapping.cs
- DrawingBrush.cs
- Camera.cs
- StringValueSerializer.cs
- WhitespaceRuleLookup.cs
- AlternateView.cs
- EventsTab.cs
- CAGDesigner.cs
- Margins.cs
- XomlCompilerError.cs
- TextModifier.cs
- NetStream.cs
- ToolStripMenuItemDesigner.cs
- EntityTypeBase.cs
- webclient.cs
- SimpleBitVector32.cs
- FixedPage.cs
- XamlTreeBuilderBamlRecordWriter.cs
- BaseResourcesBuildProvider.cs
- SynchronizedRandom.cs
- _SslState.cs
- Listbox.cs
- ConfigurationPropertyAttribute.cs
- ProfileModule.cs