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
- ArgIterator.cs
- SafeBitVector32.cs
- TransformConverter.cs
- XmlWriterTraceListener.cs
- DrawingVisual.cs
- TextEditorCopyPaste.cs
- TypeTypeConverter.cs
- ClientSettingsProvider.cs
- StorageModelBuildProvider.cs
- XmlAttributeAttribute.cs
- ProfilePropertySettingsCollection.cs
- ExitEventArgs.cs
- TypeUnloadedException.cs
- TypeDescriptor.cs
- DispatcherFrame.cs
- Assert.cs
- SerializationInfo.cs
- COM2Enum.cs
- XPathAxisIterator.cs
- ObjectDataSourceWizardForm.cs
- ProxyAttribute.cs
- SamlSerializer.cs
- Rotation3DAnimation.cs
- TimeSpanMinutesConverter.cs
- SequentialWorkflowHeaderFooter.cs
- EditorPartDesigner.cs
- DataTableMappingCollection.cs
- MatrixCamera.cs
- XmlAttributeProperties.cs
- TransformValueSerializer.cs
- XmlCharCheckingWriter.cs
- RequestQueue.cs
- WebContext.cs
- TabletCollection.cs
- TextBox.cs
- MenuItem.cs
- AffineTransform3D.cs
- ComponentResourceManager.cs
- TableStyle.cs
- ClosureBinding.cs
- SerialPinChanges.cs
- TextWriterTraceListener.cs
- SQLInt64Storage.cs
- QueryPrefixOp.cs
- SecurityChannelFaultConverter.cs
- UnauthorizedAccessException.cs
- BindingManagerDataErrorEventArgs.cs
- PropertyValueUIItem.cs
- EntityDesignerBuildProvider.cs
- PersonalizationEntry.cs
- Icon.cs
- StylusSystemGestureEventArgs.cs
- StateDesigner.CommentLayoutGlyph.cs
- OleDbSchemaGuid.cs
- BitmapEffectDrawingContextState.cs
- SiteMapHierarchicalDataSourceView.cs
- SerializerProvider.cs
- EntityViewGenerationConstants.cs
- EnumerableCollectionView.cs
- TextInfo.cs
- DataGridViewCellCollection.cs
- MenuItemCollectionEditorDialog.cs
- IISUnsafeMethods.cs
- PasswordRecovery.cs
- DesignerVerbToolStripMenuItem.cs
- ConsumerConnectionPointCollection.cs
- ContextProperty.cs
- CalloutQueueItem.cs
- SystemEvents.cs
- EditingContext.cs
- ExpressionConverter.cs
- FileNotFoundException.cs
- EntityProviderFactory.cs
- GeneralTransform.cs
- CancellationToken.cs
- ProtocolsConfigurationHandler.cs
- ExpressionParser.cs
- MetadataItem.cs
- SHA256.cs
- SessionEndingCancelEventArgs.cs
- ObjectTag.cs
- PropertiesTab.cs
- FrugalList.cs
- TextBoxBase.cs
- WorkflowWebService.cs
- HitTestParameters.cs
- DateTime.cs
- EmptyControlCollection.cs
- FixUpCollection.cs
- DynamicPropertyReader.cs
- RelationshipConstraintValidator.cs
- ClearTypeHintValidation.cs
- VirtualPath.cs
- IPCCacheManager.cs
- SourceItem.cs
- COM2PropertyDescriptor.cs
- ReadWriteObjectLock.cs
- LOSFormatter.cs
- XmlSchemaComplexType.cs
- ChannelPoolSettingsElement.cs