Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Text / LineMetrics.cs / 1 / LineMetrics.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: LineMetrics.cs // // Description: Cached metrics of a text line. // // History: // 04/25/2003 : [....] - moving from Avalon branch. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows; using System.Windows.Media; using System.Windows.Media.TextFormatting; namespace MS.Internal.Text { // --------------------------------------------------------------------- // Storage for metrics of a formatted line. // --------------------------------------------------------------------- internal struct LineMetrics { // ------------------------------------------------------------------ // Constructor. // // wrappingWidth - wrapping width for the line // length - number or characters in the line // width - width of the line // height - height of the line // baseline - baseline of the line // hasInlineObjects - has inline objects? // ----------------------------------------------------------------- internal LineMetrics( #if DEBUG double wrappingWidth, #endif int length, double width, double height, double baseline, bool hasInlineObjects, TextLineBreak textLineBreak) { #if DEBUG _wrappingWidth = wrappingWidth; #endif _start = 0; _width = width; _height = height; _baseline = baseline; _textLineBreak = textLineBreak; _packedData = ((uint) length & LengthMask) | (hasInlineObjects ? HasInlineObjectsMask : 0); } internal LineMetrics(LineMetrics source, double start, double width) { #if DEBUG _wrappingWidth = source.WrappingWidth; #endif _start = start; _width = width; _height = source.Height; _baseline = source.Baseline; _textLineBreak = source.TextLineBreak; _packedData = source._packedData | HasBeenUpdatedMask; } ////// Disposes linebreak object /// internal LineMetrics Dispose(bool returnUpdatedMetrics) { if(_textLineBreak != null) { _textLineBreak.Dispose(); if (returnUpdatedMetrics) { return new LineMetrics( #if DEBUG _wrappingWidth, #endif Length, _width, _height, _baseline, HasInlineObjects, null); } } return this; } #if DEBUG // ------------------------------------------------------------------ // Wrapping width for the line. // ------------------------------------------------------------------ internal double WrappingWidth { get { return _wrappingWidth; } } private double _wrappingWidth; #endif // ----------------------------------------------------------------- // Number or characters in the line. // ------------------------------------------------------------------ internal int Length { get { return (int) (_packedData & LengthMask); } } private uint _packedData; // ----------------------------------------------------------------- // Width of the line. // ----------------------------------------------------------------- internal double Width { get { Debug.Assert((_packedData & HasBeenUpdatedMask) != 0); return _width; } } private double _width; // ----------------------------------------------------------------- // Height of the line. // ------------------------------------------------------------------ internal double Height { get { return _height; } } private double _height; // ----------------------------------------------------------------- // Start of the line. Distance from paragraph edge to line start. // ------------------------------------------------------------------ internal double Start { get { Debug.Assert((_packedData & HasBeenUpdatedMask) != 0); return _start; } } private double _start; // ------------------------------------------------------------------ // Baseline offset of the line. // ----------------------------------------------------------------- internal double Baseline { get { return _baseline; } } private double _baseline; // ------------------------------------------------------------------ // Has inline objects? // ----------------------------------------------------------------- internal bool HasInlineObjects { get { return (_packedData & HasInlineObjectsMask) != 0; } } // ----------------------------------------------------------------- // Line break for formatting. (Line Break In) // ----------------------------------------------------------------- internal TextLineBreak TextLineBreak { get { return _textLineBreak; } } private TextLineBreak _textLineBreak; private static readonly uint HasBeenUpdatedMask = 0x40000000; private static readonly uint LengthMask = 0x3FFFFFFF; private static readonly uint HasInlineObjectsMask = 0x80000000; } } // 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
- QueryResults.cs
- DuplexChannelFactory.cs
- ClrPerspective.cs
- DataPagerCommandEventArgs.cs
- RequestCacheManager.cs
- BindableTemplateBuilder.cs
- AspCompat.cs
- TextSelectionHighlightLayer.cs
- TypeUsage.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- XmlSerializer.cs
- SecurityException.cs
- HttpResponseWrapper.cs
- COM2ColorConverter.cs
- VerificationAttribute.cs
- WorkflowPrinting.cs
- QuaternionAnimation.cs
- MenuItem.cs
- ITextView.cs
- DataMemberConverter.cs
- DateTimeFormat.cs
- HostedBindingBehavior.cs
- FolderLevelBuildProviderCollection.cs
- MessageContractExporter.cs
- XmlTextReaderImplHelpers.cs
- Parameter.cs
- MemberInitExpression.cs
- NavigationPropertyEmitter.cs
- ToolStripItemCollection.cs
- DoubleAnimationUsingPath.cs
- IPipelineRuntime.cs
- _HTTPDateParse.cs
- Statements.cs
- EventMappingSettingsCollection.cs
- HwndSourceKeyboardInputSite.cs
- WindowsFormsHelpers.cs
- AliasGenerator.cs
- UserControlCodeDomTreeGenerator.cs
- IdentifierCollection.cs
- DrawListViewItemEventArgs.cs
- Regex.cs
- SafeNativeMethods.cs
- IdentityReference.cs
- ResourceDictionary.cs
- XamlReaderHelper.cs
- RichTextBoxAutomationPeer.cs
- AdapterDictionary.cs
- DataColumnChangeEvent.cs
- PerformanceCounter.cs
- ExtendedPropertyDescriptor.cs
- WebPartVerbsEventArgs.cs
- DirectoryInfo.cs
- CheckPair.cs
- PolicyValidationException.cs
- LambdaCompiler.Binary.cs
- ParserContext.cs
- SignedXml.cs
- Viewport3DAutomationPeer.cs
- WorkflowInstanceExtensionCollection.cs
- SourceChangedEventArgs.cs
- HeaderedContentControl.cs
- FontEmbeddingManager.cs
- GlyphInfoList.cs
- DataBoundControl.cs
- OleDbRowUpdatingEvent.cs
- EventEntry.cs
- SiteMapDataSourceView.cs
- TraceListeners.cs
- PackWebRequest.cs
- ListView.cs
- SQLString.cs
- CompilerGeneratedAttribute.cs
- RegexCode.cs
- AppDomainEvidenceFactory.cs
- PolygonHotSpot.cs
- UnitySerializationHolder.cs
- VideoDrawing.cs
- WeakReadOnlyCollection.cs
- ObjectConverter.cs
- BooleanSwitch.cs
- HtmlImage.cs
- ControlBindingsCollection.cs
- DataStreamFromComStream.cs
- Stroke2.cs
- Rotation3DAnimationBase.cs
- MetafileHeader.cs
- AsyncOperation.cs
- DataErrorValidationRule.cs
- LayoutManager.cs
- DependencyPropertyConverter.cs
- FusionWrap.cs
- RegexTypeEditor.cs
- ConcurrentBag.cs
- KnowledgeBase.cs
- AsymmetricKeyExchangeDeformatter.cs
- DefaultBinder.cs
- TraversalRequest.cs
- TableItemStyle.cs
- DataGridViewDataConnection.cs
- RelationshipEndMember.cs