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
- PenThreadPool.cs
- TreeNodeBinding.cs
- XmlName.cs
- XNodeNavigator.cs
- EntityClassGenerator.cs
- CustomErrorsSection.cs
- GatewayIPAddressInformationCollection.cs
- PasswordBoxAutomationPeer.cs
- NestPullup.cs
- WebPartManagerInternals.cs
- TrackingWorkflowEventArgs.cs
- ComboBoxAutomationPeer.cs
- HttpRawResponse.cs
- VerticalAlignConverter.cs
- DataGridViewBindingCompleteEventArgs.cs
- AutoResetEvent.cs
- FlowLayoutPanelDesigner.cs
- NestPullup.cs
- Decorator.cs
- DataTableClearEvent.cs
- BorderGapMaskConverter.cs
- DateTimeConstantAttribute.cs
- ProcessHostMapPath.cs
- EntityCollection.cs
- IsolatedStoragePermission.cs
- UnlockInstanceCommand.cs
- CodeTypeDeclaration.cs
- EndOfStreamException.cs
- GridLength.cs
- DataPagerCommandEventArgs.cs
- TextDpi.cs
- TypeSystem.cs
- OrderPreservingSpoolingTask.cs
- UnicodeEncoding.cs
- ToolStripContentPanelRenderEventArgs.cs
- ObjectDataSourceView.cs
- Module.cs
- _Connection.cs
- PriorityQueue.cs
- ActivityDesignerAccessibleObject.cs
- VersionConverter.cs
- WebPartDisplayModeEventArgs.cs
- RepeaterItemCollection.cs
- ProbeMatchesApril2005.cs
- DashStyles.cs
- XmlSchemaDocumentation.cs
- CommonObjectSecurity.cs
- ComplexLine.cs
- TypeEnumerableViewSchema.cs
- ImportCatalogPart.cs
- ISessionStateStore.cs
- QueryContinueDragEventArgs.cs
- TreeIterator.cs
- SqlDelegatedTransaction.cs
- XslAst.cs
- GlyphRunDrawing.cs
- BreakRecordTable.cs
- InvalidEnumArgumentException.cs
- AttributeProviderAttribute.cs
- NotifyCollectionChangedEventArgs.cs
- RuntimeComponentFilter.cs
- SystemEvents.cs
- DoubleAverageAggregationOperator.cs
- XmlCollation.cs
- FunctionNode.cs
- ProcessStartInfo.cs
- InputProcessorProfilesLoader.cs
- TimeZoneInfo.cs
- Aggregates.cs
- MetadataItemEmitter.cs
- ContextMenu.cs
- NamespaceInfo.cs
- ContractMethodParameterInfo.cs
- HyperLinkStyle.cs
- SoapExtensionStream.cs
- StorageConditionPropertyMapping.cs
- StringBuilder.cs
- _Semaphore.cs
- ToolStripItemCollection.cs
- DesignerOptionService.cs
- QueryExpr.cs
- QueryParameter.cs
- ToolStripDropDown.cs
- TextureBrush.cs
- ToolStripScrollButton.cs
- MessageAction.cs
- MenuBase.cs
- XPathDocumentIterator.cs
- ControlLocalizer.cs
- HttpSocketManager.cs
- CustomErrorsSection.cs
- TextViewSelectionProcessor.cs
- AuthenticatingEventArgs.cs
- login.cs
- ChangesetResponse.cs
- CodeConditionStatement.cs
- MethodAccessException.cs
- BitVector32.cs
- LongValidatorAttribute.cs
- EdmSchemaError.cs