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
- SaveFileDialog.cs
- AppearanceEditorPart.cs
- JpegBitmapDecoder.cs
- HostProtectionException.cs
- SegmentInfo.cs
- CommandDevice.cs
- TargetException.cs
- XmlDataSourceNodeDescriptor.cs
- PrimitiveDataContract.cs
- InterleavedZipPartStream.cs
- StringConcat.cs
- SoapElementAttribute.cs
- ServiceBehaviorAttribute.cs
- TreeBuilder.cs
- AnnotationHighlightLayer.cs
- DataGridViewCellFormattingEventArgs.cs
- DataServiceClientException.cs
- ScrollBarAutomationPeer.cs
- DragDeltaEventArgs.cs
- RpcResponse.cs
- MutexSecurity.cs
- SmiMetaData.cs
- HtmlHead.cs
- Authorization.cs
- ConfigXmlAttribute.cs
- BitmapEffectGroup.cs
- ScriptRegistrationManager.cs
- ToolStripRenderer.cs
- ValidationError.cs
- ArraySortHelper.cs
- StrongNameUtility.cs
- Soap.cs
- StackSpiller.cs
- TableItemStyle.cs
- MimeTypeMapper.cs
- XamlSerializer.cs
- ApplicationInterop.cs
- ByteFacetDescriptionElement.cs
- PropertyGeneratedEventArgs.cs
- ContractCodeDomInfo.cs
- MemberInfoSerializationHolder.cs
- ImageIndexConverter.cs
- TypeViewSchema.cs
- XmlJsonReader.cs
- AutomationPropertyInfo.cs
- SerializationAttributes.cs
- SafeNativeMethods.cs
- BufferManager.cs
- QuadraticBezierSegment.cs
- TextCompositionManager.cs
- XmlEnumAttribute.cs
- SessionSwitchEventArgs.cs
- TraceListeners.cs
- HandlerBase.cs
- WindowsSysHeader.cs
- XmlCharCheckingReader.cs
- SchemaEntity.cs
- VerticalAlignConverter.cs
- DefaultParameterValueAttribute.cs
- ToolZone.cs
- ReceiveActivity.cs
- BaseCodePageEncoding.cs
- CodeCastExpression.cs
- SQLStringStorage.cs
- FormViewAutoFormat.cs
- XmlCustomFormatter.cs
- ContractsBCL.cs
- AsyncResult.cs
- LayoutTable.cs
- ToolStripLocationCancelEventArgs.cs
- TargetException.cs
- AncillaryOps.cs
- EnumerableRowCollection.cs
- AssociationSetMetadata.cs
- QueryPageSettingsEventArgs.cs
- XmlSerializerAssemblyAttribute.cs
- StrokeSerializer.cs
- DataSourceHelper.cs
- FormConverter.cs
- LinkConverter.cs
- CacheRequest.cs
- WMIGenerator.cs
- SHA384Managed.cs
- EventWaitHandleSecurity.cs
- TypeDescriptor.cs
- EntityViewGenerationAttribute.cs
- RegexGroupCollection.cs
- WebPartDescriptionCollection.cs
- RewritingPass.cs
- ListViewContainer.cs
- StringFreezingAttribute.cs
- TaiwanCalendar.cs
- WindowsToolbarAsMenu.cs
- processwaithandle.cs
- Parameter.cs
- DataGridItemCollection.cs
- XPathDocument.cs
- CommonRemoteMemoryBlock.cs
- propertyentry.cs
- MultiBindingExpression.cs