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 / 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
- AppSecurityManager.cs
- FunctionNode.cs
- CalendarSelectionChangedEventArgs.cs
- FileDialogPermission.cs
- MergeLocalizationDirectives.cs
- FastEncoderWindow.cs
- DataDocumentXPathNavigator.cs
- CodeMethodInvokeExpression.cs
- NavigateEvent.cs
- HttpPostProtocolImporter.cs
- ThreadInterruptedException.cs
- URLMembershipCondition.cs
- Error.cs
- DataGridViewColumnHeaderCell.cs
- HealthMonitoringSection.cs
- X509CertificateValidator.cs
- CalloutQueueItem.cs
- AttachmentCollection.cs
- ConfigurationSectionGroup.cs
- SystemInfo.cs
- ZipPackage.cs
- QilExpression.cs
- AuthenticatedStream.cs
- XPathDocumentBuilder.cs
- OperationFormatStyle.cs
- ObjectDataSource.cs
- OutputCacheSettings.cs
- EventBuilder.cs
- SqlTransaction.cs
- _AutoWebProxyScriptHelper.cs
- DateTime.cs
- QilPatternVisitor.cs
- DynamicILGenerator.cs
- StorageBasedPackageProperties.cs
- CutCopyPasteHelper.cs
- CmsInterop.cs
- ListViewItem.cs
- CoTaskMemHandle.cs
- ObjectListCommandCollection.cs
- HtmlUtf8RawTextWriter.cs
- DataListItemCollection.cs
- ArrayMergeHelper.cs
- DataGridViewImageColumn.cs
- SecurityException.cs
- TextModifier.cs
- XmlMembersMapping.cs
- ListenerAdaptersInstallComponent.cs
- SafeIUnknown.cs
- ObjectHandle.cs
- BlobPersonalizationState.cs
- ArraySubsetEnumerator.cs
- DesignTimeTemplateParser.cs
- RemotingServices.cs
- ControlCachePolicy.cs
- ZipIOExtraFieldZip64Element.cs
- XamlSerializerUtil.cs
- CompilerScopeManager.cs
- TextPatternIdentifiers.cs
- TypePropertyEditor.cs
- ListDictionaryInternal.cs
- WebBrowserUriTypeConverter.cs
- DbModificationCommandTree.cs
- MeasureItemEvent.cs
- XmlParserContext.cs
- DomNameTable.cs
- CodeVariableDeclarationStatement.cs
- FlowDocumentView.cs
- ImageList.cs
- PolicyException.cs
- LinqDataSourceDisposeEventArgs.cs
- NodeFunctions.cs
- DataTemplate.cs
- UriTemplate.cs
- AttributedMetaModel.cs
- XmlWriterSettings.cs
- ListViewItemEventArgs.cs
- SourceItem.cs
- SafeMarshalContext.cs
- ParsedAttributeCollection.cs
- ListViewGroupCollectionEditor.cs
- QueryOutputWriter.cs
- SQLGuid.cs
- RoleManagerEventArgs.cs
- DataGridTextBoxColumn.cs
- DiscardableAttribute.cs
- DuplicateWaitObjectException.cs
- ErrorsHelper.cs
- ScriptManagerProxy.cs
- WizardForm.cs
- EntityKey.cs
- parserscommon.cs
- FieldTemplateUserControl.cs
- DeviceContext2.cs
- XmlSchemaComplexType.cs
- CompressEmulationStream.cs
- ListBox.cs
- WindowsListViewScroll.cs
- SmtpSection.cs
- UnauthorizedWebPart.cs
- StringAnimationUsingKeyFrames.cs