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
- CompensationParticipant.cs
- CommandField.cs
- DeviceContext.cs
- XslNumber.cs
- AutomationIdentifierGuids.cs
- WindowsEditBox.cs
- TreeNodeStyleCollectionEditor.cs
- RawUIStateInputReport.cs
- CurrentChangingEventArgs.cs
- ValidationSummary.cs
- ToolboxItem.cs
- ConfigurationManagerHelper.cs
- HashHelper.cs
- ContainerActivationHelper.cs
- FormViewRow.cs
- QfeChecker.cs
- XPathDocumentIterator.cs
- StrongNameMembershipCondition.cs
- ScheduleChanges.cs
- UnsafeNativeMethodsTablet.cs
- CompoundFileStreamReference.cs
- CheckBox.cs
- WindowsNonControl.cs
- QueryOutputWriter.cs
- EntityProviderFactory.cs
- LedgerEntryCollection.cs
- FileRecordSequenceCompletedAsyncResult.cs
- ForceCopyBuildProvider.cs
- DictionaryBase.cs
- CompoundFileStorageReference.cs
- CollectionViewSource.cs
- QueryOptionExpression.cs
- EncodingTable.cs
- __FastResourceComparer.cs
- ValidationError.cs
- XmlSecureResolver.cs
- Registry.cs
- ControlCachePolicy.cs
- Binding.cs
- BounceEase.cs
- Size3DValueSerializer.cs
- DebuggerAttributes.cs
- PrintPreviewGraphics.cs
- WebDescriptionAttribute.cs
- ToolboxItemAttribute.cs
- MultiDataTrigger.cs
- BamlBinaryReader.cs
- UnsafeNativeMethodsCLR.cs
- AssemblyBuilder.cs
- DtrList.cs
- DeploymentSection.cs
- JobStaple.cs
- VersionedStream.cs
- ConfigXmlSignificantWhitespace.cs
- InheritanceUI.cs
- PixelFormatConverter.cs
- ApplicationFileParser.cs
- TemplateContainer.cs
- OperationAbortedException.cs
- TextTreeFixupNode.cs
- DoubleLink.cs
- XPathNodeList.cs
- TextClipboardData.cs
- DataGridPagerStyle.cs
- ClientScriptManagerWrapper.cs
- Message.cs
- CompiledQueryCacheKey.cs
- FileLevelControlBuilderAttribute.cs
- remotingproxy.cs
- ZipFileInfo.cs
- MenuAutomationPeer.cs
- Vector3D.cs
- LZCodec.cs
- MappingException.cs
- ManipulationStartingEventArgs.cs
- XmlDataContract.cs
- Vector3DAnimation.cs
- KeyConverter.cs
- MILUtilities.cs
- x509store.cs
- Repeater.cs
- PerSessionInstanceContextProvider.cs
- SapiGrammar.cs
- DynamicRouteExpression.cs
- SchemaNamespaceManager.cs
- PathGeometry.cs
- PngBitmapEncoder.cs
- OracleCommandBuilder.cs
- DbQueryCommandTree.cs
- XslException.cs
- TextRangeProviderWrapper.cs
- IIS7UserPrincipal.cs
- XhtmlBasicCalendarAdapter.cs
- HuffmanTree.cs
- ChannelFactory.cs
- DataTemplate.cs
- RuleRefElement.cs
- CodeParameterDeclarationExpression.cs
- CommunicationObjectAbortedException.cs
- EdmValidator.cs