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
- Deflater.cs
- EncryptedData.cs
- SystemWebSectionGroup.cs
- Subtree.cs
- ResumeStoryboard.cs
- XmlSchemaSimpleTypeUnion.cs
- RadioButton.cs
- HScrollProperties.cs
- OracleSqlParser.cs
- FocusTracker.cs
- PersonalizationStateInfoCollection.cs
- HttpCapabilitiesSectionHandler.cs
- Token.cs
- CalendarAutoFormatDialog.cs
- SourceFileBuildProvider.cs
- MatrixCamera.cs
- DataServiceKeyAttribute.cs
- BypassElement.cs
- IDQuery.cs
- FontFamily.cs
- _DomainName.cs
- FixedElement.cs
- UInt32.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- ExpressionVisitorHelpers.cs
- streamingZipPartStream.cs
- SoapFormatterSinks.cs
- _SSPISessionCache.cs
- PrinterResolution.cs
- CodePageUtils.cs
- CheckoutException.cs
- util.cs
- Simplifier.cs
- UIElementAutomationPeer.cs
- SafeReadContext.cs
- TemplateInstanceAttribute.cs
- GenericRootAutomationPeer.cs
- FontFamilyConverter.cs
- KeyMatchBuilder.cs
- AnnotationDocumentPaginator.cs
- NumberAction.cs
- PrimitiveType.cs
- BrowserCapabilitiesFactoryBase.cs
- ContentType.cs
- StringBlob.cs
- KeyboardNavigation.cs
- MatrixCamera.cs
- XmlFormatWriterGenerator.cs
- HttpWriter.cs
- ActivityExecutionContext.cs
- DrawingGroup.cs
- ConnectionAcceptor.cs
- Int16Storage.cs
- ScaleTransform3D.cs
- LabelDesigner.cs
- COM2TypeInfoProcessor.cs
- HttpHeaderCollection.cs
- HtmlTextBoxAdapter.cs
- RegexStringValidatorAttribute.cs
- HandlerBase.cs
- Pkcs7Signer.cs
- ServiceDescriptionData.cs
- RegionInfo.cs
- Persist.cs
- XmlDocumentSchema.cs
- DbQueryCommandTree.cs
- Exceptions.cs
- LogEntryHeaderv1Deserializer.cs
- IntSecurity.cs
- DefaultEventAttribute.cs
- StateItem.cs
- TdsParserHelperClasses.cs
- MenuStrip.cs
- Preprocessor.cs
- SemanticValue.cs
- BaseValidatorDesigner.cs
- DbBuffer.cs
- CollectionMarkupSerializer.cs
- PresentationAppDomainManager.cs
- SerialErrors.cs
- hresults.cs
- SafeBitVector32.cs
- NonBatchDirectoryCompiler.cs
- MessagePartDescriptionCollection.cs
- SchemaType.cs
- DefaultMemberAttribute.cs
- KeyboardDevice.cs
- SettingsProviderCollection.cs
- IPEndPoint.cs
- Evidence.cs
- CharacterHit.cs
- TypeDelegator.cs
- TypeUnloadedException.cs
- SoapAttributes.cs
- SolidColorBrush.cs
- Shape.cs
- WebPartConnectionCollection.cs
- EnumBuilder.cs
- PageThemeCodeDomTreeGenerator.cs
- AudioFormatConverter.cs