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
- ArithmeticException.cs
- Substitution.cs
- BaseDataBoundControlDesigner.cs
- ServiceRoute.cs
- XmlHelper.cs
- XmlSchemaObject.cs
- VectorValueSerializer.cs
- Rotation3DAnimation.cs
- MailHeaderInfo.cs
- GridViewUpdatedEventArgs.cs
- TreeViewCancelEvent.cs
- ChildDocumentBlock.cs
- NumberSubstitution.cs
- MutexSecurity.cs
- ConvertersCollection.cs
- MultipleViewPattern.cs
- SeekableReadStream.cs
- PageOutputQuality.cs
- SqlDependency.cs
- ProcessHostConfigUtils.cs
- WSMessageEncoding.cs
- TargetConverter.cs
- TypeLibraryHelper.cs
- TextMessageEncodingElement.cs
- UserControl.cs
- Enum.cs
- RightsManagementPermission.cs
- ChannelDispatcherBase.cs
- Animatable.cs
- MemberRestriction.cs
- _StreamFramer.cs
- XPathDescendantIterator.cs
- RealProxy.cs
- CollectionEditVerbManager.cs
- ExtendedProtectionPolicy.cs
- LabelAutomationPeer.cs
- ErrorEventArgs.cs
- PeerTransportListenAddressValidatorAttribute.cs
- ProfilePropertySettings.cs
- NonParentingControl.cs
- PixelFormatConverter.cs
- CapabilitiesUse.cs
- SingleAnimation.cs
- PeerNameResolver.cs
- RecognitionResult.cs
- WebFormsRootDesigner.cs
- Aes.cs
- PageAsyncTaskManager.cs
- TextServicesDisplayAttribute.cs
- RootBuilder.cs
- DBCommand.cs
- Focus.cs
- CalendarDay.cs
- ImageCodecInfo.cs
- SpecularMaterial.cs
- TypedTableBaseExtensions.cs
- ProfileService.cs
- PermissionToken.cs
- BindingCompleteEventArgs.cs
- ListControl.cs
- PopupRootAutomationPeer.cs
- ReadWriteObjectLock.cs
- FixedSOMElement.cs
- ContractMapping.cs
- UserPreferenceChangingEventArgs.cs
- AttributeAction.cs
- XmlLoader.cs
- ToolboxComponentsCreatingEventArgs.cs
- TextEncodedRawTextWriter.cs
- QuestionEventArgs.cs
- OdbcHandle.cs
- AttachedAnnotation.cs
- TextDocumentView.cs
- RadioButton.cs
- DemultiplexingClientMessageFormatter.cs
- StylusSystemGestureEventArgs.cs
- ByeMessageApril2005.cs
- SrgsDocumentParser.cs
- RegisteredHiddenField.cs
- DebugTraceHelper.cs
- Identity.cs
- EventArgs.cs
- ColorAnimation.cs
- WizardStepCollectionEditor.cs
- mactripleDES.cs
- Console.cs
- Pen.cs
- RenamedEventArgs.cs
- IpcManager.cs
- SimplePropertyEntry.cs
- DataGridViewTopRowAccessibleObject.cs
- StylusPointProperty.cs
- _AcceptOverlappedAsyncResult.cs
- QueryOperator.cs
- RoleManagerModule.cs
- Model3DCollection.cs
- BroadcastEventHelper.cs
- ValidatingPropertiesEventArgs.cs
- ControlBuilderAttribute.cs
- WebBrowserEvent.cs