Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / TextFormatting / LexicalChunk.cs / 1305600 / LexicalChunk.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation // // File: LexicalChunk.cs // // Contents: Lexical chunk represents the character analysis of a piece of raw character string. // // Created: 6-13-2005 Worachai Chaoweeraprasit (wchao) // //----------------------------------------------------------------------- using System; using System.Windows.Media.TextFormatting; using MS.Internal.Generic; namespace MS.Internal.TextFormatting { ////// Lexical chunk represents the character analysis of a piece of raw character string. /// It contains the analyzing result of the string by the lexical services component i.e. /// word-breaker or hyphenator or both. /// /// The number of character indices represented by a chunk may not map exactly to the same number /// of LSCP in the LS character position space. This is because two adjacent character indices in /// a chunk may be mapped by two non-adjacent LSCP in the LS positions. Between two LSRun could /// exist a hidden-run which occupies real LSCP but represents no actual displayable character. /// /// The mapping between the character offsets and the offsets to the correspondent LSCP is retained /// in a span vector that is indexed by the character offsets. /// internal struct LexicalChunk { private TextLexicalBreaks _breaks; // lexical breaks of chunk characters private SpanVector_ichVector; // spans of offsets to the ich-correspondence LSCP internal TextLexicalBreaks Breaks { get { return _breaks; } } /// /// Boolean value indicates whether this chunk contains no valid break info /// internal bool IsNoBreak { get { return _breaks == null; } } ////// Contruct lexical chunk from character analysis /// internal LexicalChunk( TextLexicalBreaks breaks, SpanVectorichVector ) { Invariant.Assert(breaks != null); _breaks = breaks; _ichVector = ichVector; } /// /// Convert the specified LSCP to character index /// internal int LSCPToCharacterIndex(int lsdcp) { if (_ichVector.Count > 0) { int ich = 0; int cchLast = 0; int lsdcpLast = 0; for (int i = 0; i < _ichVector.Count; i++) { Spanspan = _ichVector[i]; int lsdcpCurrent = span.Value; if (lsdcpCurrent > lsdcp) { return ich - cchLast + Math.Min(cchLast, lsdcp - lsdcpLast); } ich += span.Length; cchLast = span.Length; lsdcpLast = lsdcpCurrent; } return ich - cchLast + Math.Min(cchLast, lsdcp - lsdcpLast); } return lsdcp; } /// /// Convert the specified character index to LSCP /// internal int CharacterIndexToLSCP(int ich) { if (_ichVector.Count > 0) { SpanRiderichRider = new SpanRider (_ichVector); ichRider.At(ich); return ichRider.CurrentValue + ich - ichRider.CurrentSpanStart; } return ich; } } } // 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
- OleTxTransactionInfo.cs
- NavigatorInput.cs
- TextRunCache.cs
- SimpleRecyclingCache.cs
- DiscoveryDocument.cs
- XmlElementAttribute.cs
- CatalogZoneBase.cs
- XmlMtomWriter.cs
- PixelShader.cs
- FreezableCollection.cs
- ScrollBar.cs
- XamlSerializationHelper.cs
- DoubleLinkListEnumerator.cs
- InputReportEventArgs.cs
- CodeAttributeDeclarationCollection.cs
- JpegBitmapEncoder.cs
- OutputCache.cs
- DataGridViewCell.cs
- _SingleItemRequestCache.cs
- ObjectToken.cs
- Types.cs
- OutputCacheSection.cs
- ProfileSettings.cs
- SetterBase.cs
- CommandLibraryHelper.cs
- TaskHelper.cs
- CqlLexerHelpers.cs
- BitmapEncoder.cs
- SessionStateItemCollection.cs
- PeerToPeerException.cs
- WorkflowQueueInfo.cs
- Interfaces.cs
- UpdateEventArgs.cs
- TraceEventCache.cs
- DefaultAsyncDataDispatcher.cs
- LazyInitializer.cs
- BaseTemplateParser.cs
- HttpDebugHandler.cs
- SqlRowUpdatingEvent.cs
- CompilationSection.cs
- PartialList.cs
- AnimationLayer.cs
- sqlpipe.cs
- SimpleTypeResolver.cs
- Separator.cs
- TextEditorTables.cs
- StringConverter.cs
- Run.cs
- DriveInfo.cs
- RandomDelayQueuedSendsAsyncResult.cs
- DataTemplateSelector.cs
- CmsInterop.cs
- DragCompletedEventArgs.cs
- PageCodeDomTreeGenerator.cs
- ReferentialConstraint.cs
- CheckoutException.cs
- COM2ExtendedBrowsingHandler.cs
- SeekStoryboard.cs
- TypeConverterValueSerializer.cs
- LocationUpdates.cs
- UnmanagedMarshal.cs
- SegmentInfo.cs
- BamlRecordWriter.cs
- WindowsFont.cs
- CodeEntryPointMethod.cs
- UriSection.cs
- FormsAuthenticationModule.cs
- IntellisenseTextBox.designer.cs
- SqlConnectionHelper.cs
- CodeTypeParameterCollection.cs
- CheckPair.cs
- ContentValidator.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- TreeViewCancelEvent.cs
- Gdiplus.cs
- ContextStaticAttribute.cs
- ITextView.cs
- QuadTree.cs
- ColumnResizeUndoUnit.cs
- NullRuntimeConfig.cs
- AsyncResult.cs
- ConnectionOrientedTransportManager.cs
- TableLayoutSettings.cs
- Soap11ServerProtocol.cs
- DragEvent.cs
- OptimalTextSource.cs
- BitmapScalingModeValidation.cs
- CloudCollection.cs
- BamlLocalizableResource.cs
- CorrelationQuery.cs
- DataGridViewIntLinkedList.cs
- RowSpanVector.cs
- Condition.cs
- ZoneLinkButton.cs
- ConditionValidator.cs
- NavigateUrlConverter.cs
- FontSizeConverter.cs
- Message.cs
- Timer.cs
- CodeDomDecompiler.cs