Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / TextFormatting / LexicalChunk.cs / 1 / 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 [....] ([....]) // //----------------------------------------------------------------------- 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
- FunctionImportMapping.cs
- CodeTypeDeclarationCollection.cs
- DataGridHeaderBorder.cs
- QilInvokeLateBound.cs
- SyndicationContent.cs
- ConfigXmlCDataSection.cs
- SID.cs
- GridViewCancelEditEventArgs.cs
- QilStrConcat.cs
- HashAlgorithm.cs
- EntityTypeEmitter.cs
- DynamicDataRoute.cs
- DisposableCollectionWrapper.cs
- MetaColumn.cs
- Registry.cs
- SRGSCompiler.cs
- HttpHandlerAction.cs
- GenericTypeParameterBuilder.cs
- TextUtf8RawTextWriter.cs
- ErasingStroke.cs
- CompleteWizardStep.cs
- ButtonAutomationPeer.cs
- HttpCookiesSection.cs
- GenerateScriptTypeAttribute.cs
- QueueProcessor.cs
- CultureSpecificCharacterBufferRange.cs
- LeafCellTreeNode.cs
- StorageConditionPropertyMapping.cs
- GridViewCommandEventArgs.cs
- SpeakInfo.cs
- FileDataSourceCache.cs
- ConfigurationElementProperty.cs
- EditorZoneAutoFormat.cs
- EntitySetBase.cs
- ADConnectionHelper.cs
- HebrewNumber.cs
- ToolboxDataAttribute.cs
- Membership.cs
- Point3DConverter.cs
- SmiEventSink.cs
- SetIndexBinder.cs
- NumericPagerField.cs
- SizeConverter.cs
- Track.cs
- DataViewSettingCollection.cs
- DataSourceView.cs
- WindowsImpersonationContext.cs
- IgnoreSectionHandler.cs
- TextElement.cs
- DesignerAutoFormatStyle.cs
- StandardToolWindows.cs
- FusionWrap.cs
- UrlMapping.cs
- Trigger.cs
- CapabilitiesRule.cs
- HeaderCollection.cs
- PersonalizationProviderHelper.cs
- WebEventCodes.cs
- ReceiveActivityValidator.cs
- PeerApplicationLaunchInfo.cs
- GridSplitterAutomationPeer.cs
- ContactManager.cs
- RegexNode.cs
- CssTextWriter.cs
- BrowserCapabilitiesFactoryBase.cs
- RC2CryptoServiceProvider.cs
- Int32AnimationBase.cs
- SqlReferenceCollection.cs
- UITypeEditor.cs
- ObjectDataSourceFilteringEventArgs.cs
- StorageMappingItemLoader.cs
- FastEncoder.cs
- IgnoreDeviceFilterElementCollection.cs
- ListItem.cs
- CompositeDataBoundControl.cs
- TypeInitializationException.cs
- ToolStripItemEventArgs.cs
- BitmapPalette.cs
- Menu.cs
- ColorEditor.cs
- WebControlToolBoxItem.cs
- MonthCalendar.cs
- OleDbConnection.cs
- HttpChannelBindingToken.cs
- ExecutionContext.cs
- QuerySelectOp.cs
- _AutoWebProxyScriptHelper.cs
- ConstraintEnumerator.cs
- Image.cs
- XsltContext.cs
- LabelEditEvent.cs
- mediaclock.cs
- SourceFileBuildProvider.cs
- SqlStatistics.cs
- MetadataCollection.cs
- MediaScriptCommandRoutedEventArgs.cs
- SoapHeaderAttribute.cs
- CodeTypeReferenceCollection.cs
- RewritingProcessor.cs
- DataGridTemplateColumn.cs