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
- PersonalizationEntry.cs
- XmlIgnoreAttribute.cs
- StylusButtonEventArgs.cs
- WorkflowTerminatedException.cs
- SymbolResolver.cs
- ProvideValueServiceProvider.cs
- XsdCachingReader.cs
- StyleBamlTreeBuilder.cs
- Timer.cs
- HtmlLinkAdapter.cs
- MimeBasePart.cs
- RequiredFieldValidator.cs
- RegionData.cs
- CodeAttributeArgumentCollection.cs
- VerificationAttribute.cs
- PeerNameResolver.cs
- AsyncResult.cs
- DataGridViewComboBoxColumnDesigner.cs
- EmbossBitmapEffect.cs
- GreenMethods.cs
- Style.cs
- Trigger.cs
- WebBrowser.cs
- Tag.cs
- LayoutManager.cs
- OdbcConnectionOpen.cs
- SendMailErrorEventArgs.cs
- Point3DCollectionValueSerializer.cs
- DispatcherHookEventArgs.cs
- LinearGradientBrush.cs
- Image.cs
- COMException.cs
- BinHexDecoder.cs
- RowToParametersTransformer.cs
- HwndHostAutomationPeer.cs
- FormatSettings.cs
- WindowsGraphicsCacheManager.cs
- SqlEnums.cs
- ProtocolsConfigurationHandler.cs
- MethodBody.cs
- AbsoluteQuery.cs
- ServiceHostingEnvironment.cs
- UIElementHelper.cs
- ReadOnlyCollectionBuilder.cs
- StringSorter.cs
- ConnectionStringsExpressionBuilder.cs
- DataGridViewSortCompareEventArgs.cs
- PagedDataSource.cs
- CodeGroup.cs
- SettingsPropertyCollection.cs
- SemanticResolver.cs
- BinHexEncoder.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- TextureBrush.cs
- XmlResolver.cs
- FileDocument.cs
- Monitor.cs
- VirtualPathProvider.cs
- TypeContext.cs
- ComponentEditorForm.cs
- FrameworkEventSource.cs
- IconConverter.cs
- Point3DKeyFrameCollection.cs
- TrackingMemoryStreamFactory.cs
- SqlTypeSystemProvider.cs
- FormsAuthentication.cs
- PieceDirectory.cs
- ReadWriteSpinLock.cs
- Ops.cs
- EntityWrapperFactory.cs
- Compensate.cs
- UnsafeNativeMethods.cs
- Storyboard.cs
- Range.cs
- ToolStripItemClickedEventArgs.cs
- PropertyManager.cs
- CursorConverter.cs
- AutomationElementIdentifiers.cs
- DesignerActionList.cs
- HyperlinkAutomationPeer.cs
- GeneralTransform3DTo2DTo3D.cs
- ActivityCodeGenerator.cs
- HttpWebResponse.cs
- SspiWrapper.cs
- EventDescriptor.cs
- DocumentAutomationPeer.cs
- DictionaryBase.cs
- SynchronizationContextHelper.cs
- MetadataCollection.cs
- InertiaRotationBehavior.cs
- AnimatedTypeHelpers.cs
- NavigatorOutput.cs
- AssociationTypeEmitter.cs
- PrintControllerWithStatusDialog.cs
- ErrorTableItemStyle.cs
- LineInfo.cs
- ListView.cs
- IssuerInformation.cs
- UIElementCollection.cs
- Helpers.cs