Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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 : [....] - 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
- WindowsContainer.cs
- ListViewPagedDataSource.cs
- GreenMethods.cs
- RegionInfo.cs
- SByte.cs
- HttpResponseHeader.cs
- FieldAccessException.cs
- ScanQueryOperator.cs
- LocationSectionRecord.cs
- FocusWithinProperty.cs
- SqlInternalConnectionTds.cs
- MultilineStringConverter.cs
- ProjectionCamera.cs
- Attributes.cs
- CollectionConverter.cs
- PropVariant.cs
- NotSupportedException.cs
- MethodToken.cs
- SchemaTypeEmitter.cs
- WebMessageEncodingBindingElement.cs
- BitmapScalingModeValidation.cs
- FixedHighlight.cs
- ObjectQueryExecutionPlan.cs
- VSWCFServiceContractGenerator.cs
- SubpageParaClient.cs
- IProvider.cs
- UMPAttributes.cs
- LoadedOrUnloadedOperation.cs
- CodeIndexerExpression.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- OdbcRowUpdatingEvent.cs
- SqlParameter.cs
- MaterialCollection.cs
- ItemsPresenter.cs
- SymLanguageType.cs
- EventLogHandle.cs
- RoleGroupCollection.cs
- PropertyDescriptorGridEntry.cs
- BuildProvidersCompiler.cs
- ProcessDesigner.cs
- ListViewInsertEventArgs.cs
- IisTraceWebEventProvider.cs
- SqlDataSourceEnumerator.cs
- MemberHolder.cs
- TextServicesProperty.cs
- EditorServiceContext.cs
- FlowNode.cs
- TypeConstant.cs
- SingleStorage.cs
- SynchronizingStream.cs
- InstanceKeyCollisionException.cs
- AnchoredBlock.cs
- X509CertificateChain.cs
- Receive.cs
- SizeIndependentAnimationStorage.cs
- OrCondition.cs
- ExpressionVisitor.cs
- MasterPage.cs
- FilterRepeater.cs
- ThreadStateException.cs
- mactripleDES.cs
- StylusButtonEventArgs.cs
- Stream.cs
- WpfPayload.cs
- Group.cs
- XmlSiteMapProvider.cs
- AttachedPropertyBrowsableAttribute.cs
- KeyValuePair.cs
- PasswordPropertyTextAttribute.cs
- XmlNullResolver.cs
- Psha1DerivedKeyGenerator.cs
- LinqDataSourceValidationException.cs
- future.cs
- SqlCaseSimplifier.cs
- HttpAsyncResult.cs
- StackBuilderSink.cs
- dataSvcMapFileLoader.cs
- CalendarButton.cs
- AnnouncementClient.cs
- ToolStripMenuItem.cs
- HtmlDocument.cs
- SchemaType.cs
- ReversePositionQuery.cs
- ConfigurationSchemaErrors.cs
- XmlSerializerNamespaces.cs
- PropertyValueEditor.cs
- DockPanel.cs
- SafeTimerHandle.cs
- PageContentCollection.cs
- PieceDirectory.cs
- HashCodeCombiner.cs
- ToolstripProfessionalRenderer.cs
- _LazyAsyncResult.cs
- AlgoModule.cs
- DynamicEndpoint.cs
- XmlAnyElementAttribute.cs
- SettingsPropertyCollection.cs
- ParagraphVisual.cs
- figurelength.cs
- TextTreeExtractElementUndoUnit.cs