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
- RSAPKCS1KeyExchangeDeformatter.cs
- FunctionOverloadResolver.cs
- HeaderLabel.cs
- EmissiveMaterial.cs
- ComponentFactoryHelpers.cs
- ChooseAction.cs
- BuildDependencySet.cs
- ImageButton.cs
- CloudCollection.cs
- TypeUtil.cs
- TextProviderWrapper.cs
- HasCopySemanticsAttribute.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- TypedServiceChannelBuilder.cs
- XamlGridLengthSerializer.cs
- ResourcePermissionBaseEntry.cs
- Int16AnimationBase.cs
- ObjectQueryProvider.cs
- NativeMethods.cs
- LicenseException.cs
- EventToken.cs
- ConfigXmlSignificantWhitespace.cs
- DbParameterCollection.cs
- DefaultExpression.cs
- HMACMD5.cs
- TypeListConverter.cs
- ProtectedConfigurationSection.cs
- DefaultTraceListener.cs
- ExpressionBuilder.cs
- CollectionsUtil.cs
- Compilation.cs
- String.cs
- WebPartVerb.cs
- RuleSettingsCollection.cs
- MetabaseServerConfig.cs
- WithParamAction.cs
- UIPropertyMetadata.cs
- dataobject.cs
- Reference.cs
- MailWriter.cs
- ContractMapping.cs
- IArgumentProvider.cs
- Int32AnimationBase.cs
- ButtonColumn.cs
- ConfigViewGenerator.cs
- CheckBox.cs
- EmbeddedMailObject.cs
- ColorMatrix.cs
- ConnectionModeReader.cs
- RbTree.cs
- ToolStripItemImageRenderEventArgs.cs
- InputMethodStateTypeInfo.cs
- LoginName.cs
- TextContainerChangeEventArgs.cs
- ZipIOCentralDirectoryBlock.cs
- Menu.cs
- XmlNullResolver.cs
- base64Transforms.cs
- SafeRightsManagementSessionHandle.cs
- Int32Animation.cs
- FileSecurity.cs
- GridView.cs
- XhtmlTextWriter.cs
- StringPropertyBuilder.cs
- HttpDebugHandler.cs
- ExpandSegment.cs
- KeyGestureValueSerializer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- AssertSection.cs
- AttachedAnnotationChangedEventArgs.cs
- SqlBooleanMismatchVisitor.cs
- IdentityValidationException.cs
- JournalEntryStack.cs
- Base64Encoding.cs
- ExtendedProtectionPolicyElement.cs
- XmlWrappingWriter.cs
- DbProviderFactory.cs
- GeneralTransformGroup.cs
- OpenTypeLayout.cs
- SortedDictionary.cs
- OdbcConnectionStringbuilder.cs
- AuthorizationRuleCollection.cs
- remotingproxy.cs
- InputElement.cs
- baseshape.cs
- PageEventArgs.cs
- EventWaitHandle.cs
- SqlDesignerDataSourceView.cs
- FullTextBreakpoint.cs
- PeerConnector.cs
- TableSectionStyle.cs
- OutOfProcStateClientManager.cs
- PropertyGridEditorPart.cs
- XmlNodeWriter.cs
- ResolvedKeyFrameEntry.cs
- ResXBuildProvider.cs
- Glyph.cs
- EmissiveMaterial.cs
- OSFeature.cs
- VariableReference.cs