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
- SendMailErrorEventArgs.cs
- EntityConnection.cs
- MatchAttribute.cs
- QuadraticBezierSegment.cs
- ShaderRenderModeValidation.cs
- StateManagedCollection.cs
- HandledEventArgs.cs
- SettingsSection.cs
- ObjectTag.cs
- ValuePatternIdentifiers.cs
- ErrorFormatter.cs
- Visitor.cs
- HTMLTextWriter.cs
- DispatchWrapper.cs
- ScriptMethodAttribute.cs
- SerializationSectionGroup.cs
- DesignerEditorPartChrome.cs
- XmlSerializerVersionAttribute.cs
- PropertyValueUIItem.cs
- DataGrid.cs
- TaiwanCalendar.cs
- WebRequestModuleElement.cs
- ValidationRuleCollection.cs
- ImageMetadata.cs
- URL.cs
- Win32KeyboardDevice.cs
- DataGridViewBindingCompleteEventArgs.cs
- ViewEvent.cs
- ClosableStream.cs
- MessageEventSubscriptionService.cs
- GiveFeedbackEvent.cs
- MeasurementDCInfo.cs
- followingsibling.cs
- GACIdentityPermission.cs
- dataobject.cs
- XmlAtomicValue.cs
- VectorConverter.cs
- MediaCommands.cs
- BamlBinaryWriter.cs
- FormViewDeletedEventArgs.cs
- CodeSnippetStatement.cs
- EntityContainerRelationshipSetEnd.cs
- MetadataArtifactLoaderCompositeFile.cs
- GridViewDesigner.cs
- ShapeTypeface.cs
- SiteMapSection.cs
- StatusBarDrawItemEvent.cs
- SpeakProgressEventArgs.cs
- XmlSchemaAttribute.cs
- PreviewPageInfo.cs
- Literal.cs
- HandleCollector.cs
- DbgUtil.cs
- ComPlusThreadInitializer.cs
- EventArgs.cs
- Transform.cs
- PageClientProxyGenerator.cs
- DataGridViewBand.cs
- ReadWriteControlDesigner.cs
- ClientScriptManagerWrapper.cs
- TaskHelper.cs
- TraceHandlerErrorFormatter.cs
- SerializationStore.cs
- TableLayoutPanelBehavior.cs
- UnsafeNativeMethods.cs
- ComponentCommands.cs
- SplitterPanel.cs
- BulletChrome.cs
- ObjectParameterCollection.cs
- BufferModesCollection.cs
- ConfigXmlCDataSection.cs
- PermissionToken.cs
- PropertyPathWorker.cs
- CompositeCollectionView.cs
- DbProviderFactories.cs
- Enum.cs
- GridViewUpdateEventArgs.cs
- CodeThrowExceptionStatement.cs
- GridItemProviderWrapper.cs
- DBAsyncResult.cs
- HandlerFactoryCache.cs
- CanonicalFormWriter.cs
- AppDomain.cs
- Pair.cs
- WorkflowRuntimeServiceElementCollection.cs
- PropertyEmitter.cs
- EventLog.cs
- _DisconnectOverlappedAsyncResult.cs
- TextTreeInsertElementUndoUnit.cs
- XmlSchemaNotation.cs
- SplineKeyFrames.cs
- WebPartManager.cs
- TextBox.cs
- StyleSheetDesigner.cs
- XmlSerializerSection.cs
- StateChangeEvent.cs
- KoreanLunisolarCalendar.cs
- DataGridViewAccessibleObject.cs
- CatalogZone.cs
- CmsInterop.cs