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
- ObjectQuery_EntitySqlExtensions.cs
- DesignerHost.cs
- CollectionDataContract.cs
- ReflectTypeDescriptionProvider.cs
- PageCodeDomTreeGenerator.cs
- InheritanceContextChangedEventManager.cs
- ContentType.cs
- CatalogPartCollection.cs
- SamlAuthorizationDecisionStatement.cs
- SystemResourceKey.cs
- XsdSchemaFileEditor.cs
- InvokeMemberBinder.cs
- ISO2022Encoding.cs
- WindowsScrollBarBits.cs
- TypeHelper.cs
- RoamingStoreFile.cs
- MenuScrollingVisibilityConverter.cs
- XmlSchemaIdentityConstraint.cs
- QuaternionConverter.cs
- CustomAttributeBuilder.cs
- SolidColorBrush.cs
- Lazy.cs
- UnmanagedMarshal.cs
- HttpInputStream.cs
- XamlWriter.cs
- WebPartCollection.cs
- Thickness.cs
- FeatureManager.cs
- SettingsBase.cs
- LambdaCompiler.cs
- MruCache.cs
- CategoryGridEntry.cs
- CqlParser.cs
- DispatcherOperation.cs
- LogLogRecordEnumerator.cs
- ConstructorNeedsTagAttribute.cs
- MdiWindowListStrip.cs
- Int16AnimationBase.cs
- XmlnsPrefixAttribute.cs
- CounterCreationDataConverter.cs
- Html32TextWriter.cs
- SQLRoleProvider.cs
- DataGridViewCell.cs
- DeclarationUpdate.cs
- HwndHostAutomationPeer.cs
- TextTrailingWordEllipsis.cs
- HashMembershipCondition.cs
- CopyOfAction.cs
- Pens.cs
- HttpConfigurationSystem.cs
- SafeWaitHandle.cs
- TextEndOfLine.cs
- ConfigPathUtility.cs
- RequestTimeoutManager.cs
- ImageBrush.cs
- WebPartMinimizeVerb.cs
- ConnectionPointCookie.cs
- ConfigXmlElement.cs
- CorruptingExceptionCommon.cs
- DictionaryEntry.cs
- Quaternion.cs
- AutoGeneratedField.cs
- InstanceNormalEvent.cs
- ExpressionBinding.cs
- SchemaCollectionPreprocessor.cs
- PagesSection.cs
- WebHttpElement.cs
- DataGridViewColumnTypePicker.cs
- MetadataFile.cs
- ConnectionProviderAttribute.cs
- SafeEventLogWriteHandle.cs
- EventWaitHandleSecurity.cs
- SortKey.cs
- TrackingProfileCache.cs
- IUnknownConstantAttribute.cs
- HttpContext.cs
- SeekableReadStream.cs
- GeometryGroup.cs
- Type.cs
- ObjectReaderCompiler.cs
- EventListener.cs
- GPPOINT.cs
- HtmlLink.cs
- FileInfo.cs
- CodeRegionDirective.cs
- ConfigUtil.cs
- FramingChannels.cs
- LineProperties.cs
- ModulesEntry.cs
- CollectionChange.cs
- WinEventTracker.cs
- EntityTypeBase.cs
- _HelperAsyncResults.cs
- TextEffect.cs
- UnsafeNativeMethods.cs
- TypeConverterAttribute.cs
- TypeDescriptionProvider.cs
- CmsUtils.cs
- ToolStripSeparatorRenderEventArgs.cs
- TemplateBindingExtensionConverter.cs