Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / MS / Internal / Text / InlineObject.cs / 1 / InlineObject.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: InlineObject.cs // // Description: Cached metrics of an inline objects. // // History: // 04/25/2003 : grzegorz - moving from Avalon branch. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.TextFormatting; using MS.Internal; namespace MS.Internal.Text { ////// Inline object representation as TextRun. /// internal sealed class InlineObject: TextEmbeddedObject { ////// Constructor. /// /// Text position of the inline object in the text array. /// Number of text position in the text array occupied by the inline object. /// UIElement representing the inline object. /// Text run properties for the inline object. /// TextBlock element - the host of the inline object. internal InlineObject(int dcp, int cch, UIElement element, TextRunProperties textProps, System.Windows.Controls.TextBlock host) { _dcp = dcp; _cch = cch; _element = element; _textProps = textProps; _host = host; } ////// Get inline object's measurement metrics. /// /// Remaining paragraph width. ///Inline object metrics. public override TextEmbeddedObjectMetrics Format(double remainingParagraphWidth) { Size desiredSize = _host.MeasureChild(this); // Make sure that LS/PTS limitations are not exceeded for object's size. TextDpi.EnsureValidObjSize(ref desiredSize); double baseline = desiredSize.Height; double baselineOffsetValue = (double) Element.GetValue(TextBlock.BaselineOffsetProperty); if(!DoubleUtil.IsNaN(baselineOffsetValue)) { baseline = baselineOffsetValue; } return new TextEmbeddedObjectMetrics(desiredSize.Width, desiredSize.Height, baseline); } ////// Get computed bounding box of the inline 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 override Rect ComputeBoundingBox(bool rightToLeft, bool sideways) { if (_element.IsArrangeValid) { // Initially assume that bounding box is the same as layout box. Size size = _element.DesiredSize; double baseline = !sideways ? size.Height : size.Width; double baselineOffsetValue = (double)Element.GetValue(TextBlock.BaselineOffsetProperty); if (!sideways && !DoubleUtil.IsNaN(baselineOffsetValue)) { baseline = (double)baselineOffsetValue; } return new Rect(0, -baseline, sideways ? size.Height : size.Width, sideways ? size.Width : size.Height); } else { return Rect.Empty; } } ////// Draw the inline 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 override void Draw(DrawingContext drawingContext, Point origin, bool rightToLeft, bool sideways) { // Inline object has its own visual and it is attached to a visual // tree during arrange process. // Do nothing here. } ////// Reference to character buffer. /// public override CharacterBufferReference CharacterBufferReference { get { return new CharacterBufferReference(String.Empty, 0); } } ////// Length of the inline object run. /// public override int Length { get { return _cch; } } ////// A set of properties shared by every characters in the run /// public override TextRunProperties Properties { get { return _textProps; } } ////// Line break condition before the inline object. /// public override LineBreakCondition BreakBefore { get { return LineBreakCondition.BreakDesired; } } ////// Line break condition after the inline object. /// public override LineBreakCondition BreakAfter { get { return LineBreakCondition.BreakDesired; } } ////// Flag indicates whether inline object has fixed size regardless of where /// it is placed within a line. /// public override bool HasFixedSize { get { // Size of inline object is not dependent on position in the line. return true; } } ////// Text position on the inline object in the text array. /// internal int Dcp { get { return _dcp; } } ////// UIElement representing the inline object. /// internal UIElement Element { get { return _element; } } ////// Text position on the inline object in the text array. /// private readonly int _dcp; ////// Number of text position in the text array occupied by the inline object. /// private readonly int _cch; ////// UIElement representing the inline object. /// private readonly UIElement _element; ////// Text run properties for the inline object. /// private readonly TextRunProperties _textProps; ////// Text element - the host of the inline object. /// private readonly System.Windows.Controls.TextBlock _host; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: InlineObject.cs // // Description: Cached metrics of an inline objects. // // History: // 04/25/2003 : grzegorz - moving from Avalon branch. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.TextFormatting; using MS.Internal; namespace MS.Internal.Text { ////// Inline object representation as TextRun. /// internal sealed class InlineObject: TextEmbeddedObject { ////// Constructor. /// /// Text position of the inline object in the text array. /// Number of text position in the text array occupied by the inline object. /// UIElement representing the inline object. /// Text run properties for the inline object. /// TextBlock element - the host of the inline object. internal InlineObject(int dcp, int cch, UIElement element, TextRunProperties textProps, System.Windows.Controls.TextBlock host) { _dcp = dcp; _cch = cch; _element = element; _textProps = textProps; _host = host; } ////// Get inline object's measurement metrics. /// /// Remaining paragraph width. ///Inline object metrics. public override TextEmbeddedObjectMetrics Format(double remainingParagraphWidth) { Size desiredSize = _host.MeasureChild(this); // Make sure that LS/PTS limitations are not exceeded for object's size. TextDpi.EnsureValidObjSize(ref desiredSize); double baseline = desiredSize.Height; double baselineOffsetValue = (double) Element.GetValue(TextBlock.BaselineOffsetProperty); if(!DoubleUtil.IsNaN(baselineOffsetValue)) { baseline = baselineOffsetValue; } return new TextEmbeddedObjectMetrics(desiredSize.Width, desiredSize.Height, baseline); } ////// Get computed bounding box of the inline 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 override Rect ComputeBoundingBox(bool rightToLeft, bool sideways) { if (_element.IsArrangeValid) { // Initially assume that bounding box is the same as layout box. Size size = _element.DesiredSize; double baseline = !sideways ? size.Height : size.Width; double baselineOffsetValue = (double)Element.GetValue(TextBlock.BaselineOffsetProperty); if (!sideways && !DoubleUtil.IsNaN(baselineOffsetValue)) { baseline = (double)baselineOffsetValue; } return new Rect(0, -baseline, sideways ? size.Height : size.Width, sideways ? size.Width : size.Height); } else { return Rect.Empty; } } ////// Draw the inline 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 override void Draw(DrawingContext drawingContext, Point origin, bool rightToLeft, bool sideways) { // Inline object has its own visual and it is attached to a visual // tree during arrange process. // Do nothing here. } ////// Reference to character buffer. /// public override CharacterBufferReference CharacterBufferReference { get { return new CharacterBufferReference(String.Empty, 0); } } ////// Length of the inline object run. /// public override int Length { get { return _cch; } } ////// A set of properties shared by every characters in the run /// public override TextRunProperties Properties { get { return _textProps; } } ////// Line break condition before the inline object. /// public override LineBreakCondition BreakBefore { get { return LineBreakCondition.BreakDesired; } } ////// Line break condition after the inline object. /// public override LineBreakCondition BreakAfter { get { return LineBreakCondition.BreakDesired; } } ////// Flag indicates whether inline object has fixed size regardless of where /// it is placed within a line. /// public override bool HasFixedSize { get { // Size of inline object is not dependent on position in the line. return true; } } ////// Text position on the inline object in the text array. /// internal int Dcp { get { return _dcp; } } ////// UIElement representing the inline object. /// internal UIElement Element { get { return _element; } } ////// Text position on the inline object in the text array. /// private readonly int _dcp; ////// Number of text position in the text array occupied by the inline object. /// private readonly int _cch; ////// UIElement representing the inline object. /// private readonly UIElement _element; ////// Text run properties for the inline object. /// private readonly TextRunProperties _textProps; ////// Text element - the host of the inline object. /// private readonly System.Windows.Controls.TextBlock _host; } } // 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
- Tuple.cs
- MailSettingsSection.cs
- NotifyCollectionChangedEventArgs.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- VsPropertyGrid.cs
- DataSourceExpression.cs
- assertwrapper.cs
- Panel.cs
- SHA1CryptoServiceProvider.cs
- RuleSetDialog.Designer.cs
- RuntimeEnvironment.cs
- WeakRefEnumerator.cs
- DataTableMapping.cs
- ItemsChangedEventArgs.cs
- XmlQuerySequence.cs
- BitmapVisualManager.cs
- CodeStatementCollection.cs
- nulltextnavigator.cs
- Page.cs
- KnownTypesProvider.cs
- Font.cs
- Keyboard.cs
- ScriptManagerProxy.cs
- ClientConfigurationHost.cs
- SchemaTableColumn.cs
- ObjectList.cs
- StackSpiller.Temps.cs
- ConditionBrowserDialog.cs
- StyleCollection.cs
- SingleBodyParameterMessageFormatter.cs
- ComplusEndpointConfigContainer.cs
- NumberFunctions.cs
- ExpressionBuilderContext.cs
- PtsHelper.cs
- LabelEditEvent.cs
- ReflectPropertyDescriptor.cs
- XmlRawWriter.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Compiler.cs
- GetPageCompletedEventArgs.cs
- RemoveStoryboard.cs
- TreeNode.cs
- Part.cs
- SourceInterpreter.cs
- TextContainerHelper.cs
- DoubleLinkListEnumerator.cs
- PasswordPropertyTextAttribute.cs
- Model3D.cs
- BulletDecorator.cs
- Material.cs
- DeflateEmulationStream.cs
- CodeGeneratorOptions.cs
- BatchStream.cs
- SqlBulkCopyColumnMappingCollection.cs
- DbConnectionPoolOptions.cs
- KeyboardDevice.cs
- DbProviderFactories.cs
- SecurityState.cs
- OleDbErrorCollection.cs
- XmlReader.cs
- NTAccount.cs
- PtsPage.cs
- CodePageUtils.cs
- TemplateControlCodeDomTreeGenerator.cs
- EditingCoordinator.cs
- DoubleLinkList.cs
- DataGridViewCell.cs
- FontClient.cs
- ScrollBar.cs
- View.cs
- WsatServiceAddress.cs
- PermissionSetEnumerator.cs
- OdbcHandle.cs
- ServiceEndpoint.cs
- DataBoundControlHelper.cs
- CodeTypeReferenceCollection.cs
- JoinSymbol.cs
- DesignerHelpers.cs
- VBIdentifierDesigner.xaml.cs
- MobileCapabilities.cs
- OracleRowUpdatingEventArgs.cs
- _NetworkingPerfCounters.cs
- ProcessHostFactoryHelper.cs
- DataSourceCacheDurationConverter.cs
- LogArchiveSnapshot.cs
- User.cs
- PTManager.cs
- PropertyDescriptor.cs
- SqlBuilder.cs
- OdbcConnectionFactory.cs
- XsdCachingReader.cs
- FlowDocumentScrollViewer.cs
- Unit.cs
- Visual.cs
- LineBreak.cs
- XmlBinaryReaderSession.cs
- AnimationLayer.cs
- HandleExceptionArgs.cs
- UnknownBitmapEncoder.cs
- TemplatingOptionsDialog.cs