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
- TheQuery.cs
- Command.cs
- IgnorePropertiesAttribute.cs
- ImportDesigner.xaml.cs
- EntityWithChangeTrackerStrategy.cs
- GeometryModel3D.cs
- ISAPIWorkerRequest.cs
- RedistVersionInfo.cs
- CharacterBufferReference.cs
- GraphicsContext.cs
- SerialPort.cs
- DictionaryGlobals.cs
- MimeXmlImporter.cs
- XmlResolver.cs
- WinEventHandler.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- HtmlControl.cs
- IconConverter.cs
- LinqDataSourceContextEventArgs.cs
- RepeatInfo.cs
- RuleInfoComparer.cs
- ScriptServiceAttribute.cs
- MenuEventArgs.cs
- OraclePermissionAttribute.cs
- StreamUpgradeBindingElement.cs
- StorageScalarPropertyMapping.cs
- Select.cs
- SynchronizedCollection.cs
- validationstate.cs
- ComboBox.cs
- ObjectPropertyMapping.cs
- NumericPagerField.cs
- AspNetSynchronizationContext.cs
- PasswordBox.cs
- Win32.cs
- ColumnHeader.cs
- HttpResponse.cs
- WebServiceTypeData.cs
- mda.cs
- WorkItem.cs
- ProfileSettings.cs
- XpsPartBase.cs
- XmlCompatibilityReader.cs
- WebScriptEnablingElement.cs
- CharacterString.cs
- ToolStripSeparatorRenderEventArgs.cs
- AstNode.cs
- ExecutionContext.cs
- PrimitiveXmlSerializers.cs
- XmlArrayAttribute.cs
- WindowsSpinner.cs
- ColumnHeaderConverter.cs
- EffectiveValueEntry.cs
- MenuScrollingVisibilityConverter.cs
- ObjectStateFormatter.cs
- EditorPart.cs
- PerformanceCounterPermissionEntryCollection.cs
- xamlnodes.cs
- MetadataExchangeClient.cs
- CategoryAttribute.cs
- Transform.cs
- DbParameterCollectionHelper.cs
- MemberHolder.cs
- SystemTcpStatistics.cs
- Tokenizer.cs
- SystemWebExtensionsSectionGroup.cs
- UnsafeNativeMethods.cs
- HttpCapabilitiesEvaluator.cs
- UriScheme.cs
- ComponentResourceManager.cs
- CaseCqlBlock.cs
- LinkArea.cs
- XmlnsCache.cs
- MbpInfo.cs
- mongolianshape.cs
- DesignTimeParseData.cs
- TextTreeExtractElementUndoUnit.cs
- FormViewPagerRow.cs
- ToolStripMenuItem.cs
- ExpressionEditor.cs
- ExtentKey.cs
- WindowsGraphics2.cs
- SamlAudienceRestrictionCondition.cs
- RelationshipEnd.cs
- TextStore.cs
- LayoutEngine.cs
- RootBrowserWindow.cs
- BitHelper.cs
- UntrustedRecipientException.cs
- XMLUtil.cs
- loginstatus.cs
- DataGridTableCollection.cs
- Logging.cs
- CompareValidator.cs
- SafeArrayRankMismatchException.cs
- DesignerTransactionCloseEvent.cs
- ClientSettings.cs
- StylusPointPropertyInfoDefaults.cs
- regiisutil.cs
- AutoFocusStyle.xaml.cs