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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- COM2ICategorizePropertiesHandler.cs
- EntityModelBuildProvider.cs
- FontStyles.cs
- _NestedMultipleAsyncResult.cs
- BuildResultCache.cs
- NamedPermissionSet.cs
- X509ChainPolicy.cs
- RuntimeHandles.cs
- ElementNotEnabledException.cs
- KeyPressEvent.cs
- RepeatBehavior.cs
- MsmqMessageProperty.cs
- ILGen.cs
- SettingsProviderCollection.cs
- __TransparentProxy.cs
- ProfileServiceManager.cs
- SoapAttributeOverrides.cs
- SqlDataSourceSelectingEventArgs.cs
- StringSorter.cs
- LabelAutomationPeer.cs
- HtmlTableCell.cs
- KeyFrames.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TraceListener.cs
- PasswordTextNavigator.cs
- DetailsViewInsertedEventArgs.cs
- EnumConverter.cs
- CodeSnippetExpression.cs
- DescendentsWalkerBase.cs
- SqlDataSourceCache.cs
- PostBackTrigger.cs
- CommandLineParser.cs
- COAUTHIDENTITY.cs
- ArraySortHelper.cs
- DispatcherOperation.cs
- FontSizeConverter.cs
- StrokeNodeOperations2.cs
- PrimaryKeyTypeConverter.cs
- SchemaMerger.cs
- DbDataReader.cs
- XPathDocument.cs
- ContextStack.cs
- ConstructorBuilder.cs
- ParagraphVisual.cs
- FormatException.cs
- FileEnumerator.cs
- securitymgrsite.cs
- TabPage.cs
- Int16AnimationBase.cs
- ValidationHelper.cs
- KerberosSecurityTokenProvider.cs
- QuaternionAnimation.cs
- TdsParser.cs
- TableCell.cs
- InvalidCommandTreeException.cs
- XPathDocumentNavigator.cs
- _DisconnectOverlappedAsyncResult.cs
- ApplicationServiceManager.cs
- Resources.Designer.cs
- Hex.cs
- AsmxEndpointPickerExtension.cs
- AmbientLight.cs
- ListViewContainer.cs
- Parser.cs
- NullableLongAverageAggregationOperator.cs
- IdentifierCollection.cs
- StorageEntityTypeMapping.cs
- ChannelServices.cs
- StylusButtonCollection.cs
- ScriptManager.cs
- WorkflowPersistenceService.cs
- FullTextState.cs
- ConditionCollection.cs
- SimpleModelProvider.cs
- Listbox.cs
- DateTimeFormat.cs
- DataViewListener.cs
- FormViewUpdatedEventArgs.cs
- DataSourceGeneratorException.cs
- ScrollChangedEventArgs.cs
- WindowsTooltip.cs
- Brush.cs
- SiteMapDataSourceDesigner.cs
- CacheVirtualItemsEvent.cs
- WsdlBuildProvider.cs
- TextEndOfLine.cs
- WebPartsPersonalization.cs
- ContainerActivationHelper.cs
- ResXResourceReader.cs
- PolygonHotSpot.cs
- DataViewSettingCollection.cs
- SiteMapPath.cs
- DomNameTable.cs
- XPathAxisIterator.cs
- SingleStorage.cs
- RepeaterItemEventArgs.cs
- WindowsEditBox.cs
- BrowserDefinitionCollection.cs
- LicenseManager.cs
- UndoUnit.cs