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
- ObjectQueryExecutionPlan.cs
- RequestDescription.cs
- XmlSchema.cs
- CounterSample.cs
- MouseOverProperty.cs
- CmsInterop.cs
- DataGridToolTip.cs
- HMAC.cs
- HttpCachePolicy.cs
- NameSpaceEvent.cs
- Thickness.cs
- DropTarget.cs
- WebPartConnectionCollection.cs
- Menu.cs
- PerformanceCounterPermissionEntryCollection.cs
- FixedFlowMap.cs
- ProcessHostConfigUtils.cs
- BindingsCollection.cs
- StandardToolWindows.cs
- MatrixValueSerializer.cs
- PageStatePersister.cs
- TemplateLookupAction.cs
- BinaryFormatter.cs
- TypeUsage.cs
- WebColorConverter.cs
- CallSiteHelpers.cs
- RequestNavigateEventArgs.cs
- RegexBoyerMoore.cs
- SimplePropertyEntry.cs
- OleDbConnection.cs
- InvalidAsynchronousStateException.cs
- NumericExpr.cs
- XmlTypeMapping.cs
- SqlError.cs
- TraceFilter.cs
- SqlClientWrapperSmiStream.cs
- KeyboardDevice.cs
- OracleDataAdapter.cs
- Stopwatch.cs
- MulticastNotSupportedException.cs
- XmlSchemaType.cs
- DataKey.cs
- ConvertTextFrag.cs
- Html32TextWriter.cs
- OutOfProcStateClientManager.cs
- FreezableCollection.cs
- RtfToXamlLexer.cs
- TableRow.cs
- TokenBasedSetEnumerator.cs
- KeyNotFoundException.cs
- ChannelManagerBase.cs
- Scripts.cs
- Expander.cs
- Rights.cs
- RuleInfoComparer.cs
- SimpleModelProvider.cs
- CodeTypeReference.cs
- TrustManager.cs
- ToolStripHighContrastRenderer.cs
- SamlAuthorityBinding.cs
- SmtpReplyReaderFactory.cs
- FunctionCommandText.cs
- CodeMethodReturnStatement.cs
- DrawingImage.cs
- SubclassTypeValidator.cs
- MenuItemCollection.cs
- ClickablePoint.cs
- SessionPageStatePersister.cs
- HMACSHA256.cs
- WpfWebRequestHelper.cs
- DependencyPropertyChangedEventArgs.cs
- CqlGenerator.cs
- SrgsRuleRef.cs
- KeyMatchBuilder.cs
- MultipartIdentifier.cs
- X509Utils.cs
- BaseAsyncResult.cs
- CompiledXpathExpr.cs
- HtmlInputText.cs
- EdmItemCollection.cs
- PrintEvent.cs
- PeerEndPoint.cs
- Automation.cs
- SpotLight.cs
- PropertyChangingEventArgs.cs
- RegexFCD.cs
- UrlMappingCollection.cs
- TimeSpanOrInfiniteValidator.cs
- DataTableReader.cs
- IsolatedStorageFileStream.cs
- FrameSecurityDescriptor.cs
- NullEntityWrapper.cs
- PixelFormatConverter.cs
- PropertyConverter.cs
- PrintControllerWithStatusDialog.cs
- XmlSerializationReader.cs
- Events.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- GrammarBuilderRuleRef.cs
- FormViewDeleteEventArgs.cs