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
- Thread.cs
- XmlQueryContext.cs
- RightsManagementEncryptedStream.cs
- _ConnectOverlappedAsyncResult.cs
- DataGridParentRows.cs
- SqlDataSourceQueryConverter.cs
- RelatedImageListAttribute.cs
- WebService.cs
- BindingCollection.cs
- BitStack.cs
- DBConnection.cs
- DataService.cs
- MailAddressParser.cs
- ImmutableObjectAttribute.cs
- ReferenceConverter.cs
- XmlSchemaSet.cs
- unsafeIndexingFilterStream.cs
- XmlSchemaComplexContent.cs
- LinearKeyFrames.cs
- Button.cs
- LockCookie.cs
- MissingManifestResourceException.cs
- AcceleratedTokenProvider.cs
- TextParagraphView.cs
- RootBuilder.cs
- ProfileGroupSettingsCollection.cs
- UnicodeEncoding.cs
- SplineQuaternionKeyFrame.cs
- GeometryGroup.cs
- GridView.cs
- ExtendedPropertyCollection.cs
- TraceSource.cs
- SqlException.cs
- HealthMonitoringSectionHelper.cs
- ArgumentOutOfRangeException.cs
- BindingWorker.cs
- Gdiplus.cs
- SqlProcedureAttribute.cs
- LineProperties.cs
- PropertyPathWorker.cs
- RuntimeConfig.cs
- ReachPageContentCollectionSerializer.cs
- XamlFigureLengthSerializer.cs
- TagPrefixAttribute.cs
- BasePattern.cs
- ToolStripPanelSelectionGlyph.cs
- CryptoHelper.cs
- ProfileGroupSettingsCollection.cs
- Span.cs
- LogLogRecordEnumerator.cs
- DataGridViewTopRowAccessibleObject.cs
- InvalidDataContractException.cs
- Encoder.cs
- CommandDesigner.cs
- PagedDataSource.cs
- BuildProviderAppliesToAttribute.cs
- DnsEndPoint.cs
- XmlSchemaAnnotated.cs
- Crc32.cs
- QilInvoke.cs
- DataRecordInfo.cs
- InputProcessorProfiles.cs
- ObjectIDGenerator.cs
- Update.cs
- QilBinary.cs
- TimeStampChecker.cs
- HttpHandlerActionCollection.cs
- FlatButtonAppearance.cs
- CompletedAsyncResult.cs
- UdpDiscoveryMessageFilter.cs
- mediaeventargs.cs
- _CacheStreams.cs
- IChannel.cs
- Baml2006Reader.cs
- DrawingDrawingContext.cs
- HashAlgorithm.cs
- HtmlInputSubmit.cs
- DebugTracing.cs
- BrowserCapabilitiesCodeGenerator.cs
- ArgumentsParser.cs
- BuildProvidersCompiler.cs
- GridViewAutomationPeer.cs
- WpfPayload.cs
- XmlNamespaceDeclarationsAttribute.cs
- WorkflowViewService.cs
- HttpListenerResponse.cs
- Base64Encoder.cs
- XmlStreamStore.cs
- TimeoutHelper.cs
- DbProviderServices.cs
- sortedlist.cs
- CompiledQueryCacheEntry.cs
- SplitContainer.cs
- ViewManager.cs
- TypeRestriction.cs
- SocketElement.cs
- Keywords.cs
- SerializationAttributes.cs
- SoapIgnoreAttribute.cs
- SyndicationDeserializer.cs