Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / Text / SimpleLine.cs / 1 / SimpleLine.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: SimpleLine.cs // // Description: Text line formatter. // // History: // 09/10/2003 : grzegorz - created. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Globalization; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.TextFormatting; namespace MS.Internal.Text { // --------------------------------------------------------------------- // Text line formatter. // --------------------------------------------------------------------- internal sealed class SimpleLine : Line { // ------------------------------------------------------------------ // // TextSource Implementation // // ----------------------------------------------------------------- #region TextSource Implementation // ------------------------------------------------------------------ // Get a text run at specified text source position. // ------------------------------------------------------------------ public override TextRun GetTextRun(int dcp) { Debug.Assert(dcp >= 0, "Character index must be non-negative."); TextRun run; // There is only one run of text. if (dcp < _content.Length) { // LineLayout may ask for dcp != 0. This case may only happen during partial // validation of TextRunCache. // Example: // 1) TextRunCache and LineMetrics array were created during measure process. // 2) Before OnRender is called somebody invalidates render only property. // This invalidates TextRunCache. // 3) Before OnRender is called InputHitTest is invoked. Because LineMetrics // array is valid, we don't have to recreate all lines. There is only // need to recreate the N-th line (line that has been hit). // During line recreation LineLayout will not refetch all runs from the // beginning of TextBlock control - it will ask for the run at the beginning // of the current line. // For this reason set 'offsetToFirstChar' to 'dcp' value. run = new TextCharacters(_content, dcp, _content.Length - dcp, _textProps); } else { run = new TextEndOfParagraph(_syntheticCharacterLength); } return run; } // ----------------------------------------------------------------- // Get text immediately before specified text source position. // ------------------------------------------------------------------ public override TextSpanGetPrecedingText(int dcp) { Debug.Assert(dcp >= 0, "Character index must be non-negative."); CharacterBufferRange charString = CharacterBufferRange.Empty; CultureInfo culture = null; if (dcp > 0) { charString = new CharacterBufferRange( _content, 0, Math.Min(dcp, _content.Length) ); culture = _textProps.CultureInfo; } return new TextSpan ( dcp, new CultureSpecificCharacterBufferRange(culture, charString) ); } /// /// TextFormatter to map a text source character index to a text effect character index /// /// text source character index ///the text effect index corresponding to the text effect character index public override int GetTextEffectCharacterIndexFromTextSourceCharacterIndex( int textSourceCharacterIndex ) { return textSourceCharacterIndex; } #endregion TextSource Implementation //------------------------------------------------------------------- // // Internal Methods // //------------------------------------------------------------------- #region Internal Methods // ----------------------------------------------------------------- // Constructor. // // owner - owner of the line. // ------------------------------------------------------------------ internal SimpleLine(System.Windows.Controls.TextBlock owner, string content, TextRunProperties textProps) : base(owner) { Debug.Assert(content != null); _content = content; _textProps = textProps; } #endregion Internal Methods //------------------------------------------------------------------- // // Private Fields // //-------------------------------------------------------------------- #region Private Fields // ------------------------------------------------------------------ // Content of the line. // ----------------------------------------------------------------- private readonly string _content; // ------------------------------------------------------------------ // Text properties. // ----------------------------------------------------------------- private readonly TextRunProperties _textProps; #endregion Private Fields } } // 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: SimpleLine.cs // // Description: Text line formatter. // // History: // 09/10/2003 : grzegorz - created. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Globalization; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.TextFormatting; namespace MS.Internal.Text { // --------------------------------------------------------------------- // Text line formatter. // --------------------------------------------------------------------- internal sealed class SimpleLine : Line { // ------------------------------------------------------------------ // // TextSource Implementation // // ----------------------------------------------------------------- #region TextSource Implementation // ------------------------------------------------------------------ // Get a text run at specified text source position. // ------------------------------------------------------------------ public override TextRun GetTextRun(int dcp) { Debug.Assert(dcp >= 0, "Character index must be non-negative."); TextRun run; // There is only one run of text. if (dcp < _content.Length) { // LineLayout may ask for dcp != 0. This case may only happen during partial // validation of TextRunCache. // Example: // 1) TextRunCache and LineMetrics array were created during measure process. // 2) Before OnRender is called somebody invalidates render only property. // This invalidates TextRunCache. // 3) Before OnRender is called InputHitTest is invoked. Because LineMetrics // array is valid, we don't have to recreate all lines. There is only // need to recreate the N-th line (line that has been hit). // During line recreation LineLayout will not refetch all runs from the // beginning of TextBlock control - it will ask for the run at the beginning // of the current line. // For this reason set 'offsetToFirstChar' to 'dcp' value. run = new TextCharacters(_content, dcp, _content.Length - dcp, _textProps); } else { run = new TextEndOfParagraph(_syntheticCharacterLength); } return run; } // ----------------------------------------------------------------- // Get text immediately before specified text source position. // ------------------------------------------------------------------ public override TextSpanGetPrecedingText(int dcp) { Debug.Assert(dcp >= 0, "Character index must be non-negative."); CharacterBufferRange charString = CharacterBufferRange.Empty; CultureInfo culture = null; if (dcp > 0) { charString = new CharacterBufferRange( _content, 0, Math.Min(dcp, _content.Length) ); culture = _textProps.CultureInfo; } return new TextSpan ( dcp, new CultureSpecificCharacterBufferRange(culture, charString) ); } /// /// TextFormatter to map a text source character index to a text effect character index /// /// text source character index ///the text effect index corresponding to the text effect character index public override int GetTextEffectCharacterIndexFromTextSourceCharacterIndex( int textSourceCharacterIndex ) { return textSourceCharacterIndex; } #endregion TextSource Implementation //------------------------------------------------------------------- // // Internal Methods // //------------------------------------------------------------------- #region Internal Methods // ----------------------------------------------------------------- // Constructor. // // owner - owner of the line. // ------------------------------------------------------------------ internal SimpleLine(System.Windows.Controls.TextBlock owner, string content, TextRunProperties textProps) : base(owner) { Debug.Assert(content != null); _content = content; _textProps = textProps; } #endregion Internal Methods //------------------------------------------------------------------- // // Private Fields // //-------------------------------------------------------------------- #region Private Fields // ------------------------------------------------------------------ // Content of the line. // ----------------------------------------------------------------- private readonly string _content; // ------------------------------------------------------------------ // Text properties. // ----------------------------------------------------------------- private readonly TextRunProperties _textProps; #endregion Private Fields } } // 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
- NullRuntimeConfig.cs
- CollectionViewProxy.cs
- WindowsListViewGroup.cs
- Events.cs
- XmlCollation.cs
- DefaultEvaluationContext.cs
- XPathNavigatorReader.cs
- PrimitiveType.cs
- MsmqDiagnostics.cs
- WebEventTraceProvider.cs
- CheckBox.cs
- HttpModuleAction.cs
- Base64Encoder.cs
- LinqDataSource.cs
- DataGridViewCellMouseEventArgs.cs
- FontSourceCollection.cs
- TemplatedMailWebEventProvider.cs
- Win32MouseDevice.cs
- ToolStripItemEventArgs.cs
- FullTextBreakpoint.cs
- SmtpClient.cs
- FieldNameLookup.cs
- DockProviderWrapper.cs
- AutomationAttributeInfo.cs
- CachedTypeface.cs
- StatusBarDrawItemEvent.cs
- CompatibleComparer.cs
- XmlIncludeAttribute.cs
- EncodingTable.cs
- ArrayListCollectionBase.cs
- FrameworkElementFactoryMarkupObject.cs
- DoubleLink.cs
- EnlistmentState.cs
- CompleteWizardStep.cs
- VisualProxy.cs
- XmlAutoDetectWriter.cs
- UnauthorizedWebPart.cs
- ApplicationFileCodeDomTreeGenerator.cs
- TypeAccessException.cs
- WebPartHeaderCloseVerb.cs
- Rectangle.cs
- UrlParameterReader.cs
- HostedBindingBehavior.cs
- FilterQuery.cs
- SafeBitVector32.cs
- NavigateEvent.cs
- Control.cs
- HttpHandlerAction.cs
- ConstructorExpr.cs
- InvalidOleVariantTypeException.cs
- DataControlFieldCell.cs
- PrintPageEvent.cs
- XmlCharCheckingWriter.cs
- commandenforcer.cs
- RequestDescription.cs
- WindowsIdentity.cs
- NativeMethods.cs
- DrawingGroupDrawingContext.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- _SpnDictionary.cs
- OperandQuery.cs
- IncomingWebRequestContext.cs
- TextEditorDragDrop.cs
- DrawingBrush.cs
- GridViewHeaderRowPresenter.cs
- XmlSchemaObjectTable.cs
- IncrementalReadDecoders.cs
- EpmAttributeNameBuilder.cs
- ResourceDisplayNameAttribute.cs
- Size.cs
- EmbossBitmapEffect.cs
- ToolStripMenuItemDesigner.cs
- Translator.cs
- D3DImage.cs
- GenericRootAutomationPeer.cs
- AuthorizationSection.cs
- ObjectItemCollection.cs
- HttpFileCollection.cs
- WinInet.cs
- MarkupCompilePass1.cs
- TrackingServices.cs
- WebPartVerbsEventArgs.cs
- SetIndexBinder.cs
- TemplatePropertyEntry.cs
- Model3DCollection.cs
- AdPostCacheSubstitution.cs
- ConstructorBuilder.cs
- FlatButtonAppearance.cs
- DbConnectionPoolOptions.cs
- AxImporter.cs
- XPathNodeList.cs
- ToolboxComponentsCreatingEventArgs.cs
- ArrayWithOffset.cs
- HierarchicalDataBoundControl.cs
- MetadataPropertyvalue.cs
- SoapParser.cs
- SoapTypeAttribute.cs
- IfAction.cs
- PrintPageEvent.cs
- UpdateException.cs