Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / textformatting / TextLineBreak.cs / 1 / TextLineBreak.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation // // File: TextLineBreak.cs // // Contents: Text properties and state at the point where text is broken // by the line breaking process, which may need to be carried over // when formatting the next line. // // Spec: [....]/sites/Avalon/Specs/Text%20Formatting%20API.doc // // Created: 12-5-2004 [....] ([....]) // //----------------------------------------------------------------------- using System; using System.Security; using System.Collections; using System.Collections.Generic; using System.Windows; using System.Windows.Media; using MS.Internal; using MS.Internal.TextFormatting; using SR = MS.Internal.PresentationCore.SR; using SRID = MS.Internal.PresentationCore.SRID; namespace System.Windows.Media.TextFormatting { ////// Text properties and state at the point where text is broken /// by the line breaking process. /// public sealed class TextLineBreak : IDisposable { private TextModifierScope _currentScope; private SecurityCriticalDataForSet_breakRecord; #region Constructors /// /// Internallly construct the line break /// internal TextLineBreak( TextModifierScope currentScope, SecurityCriticalDataForSetbreakRecord ) { _currentScope = currentScope; _breakRecord = breakRecord; if (breakRecord.Value == IntPtr.Zero) { // this object does not hold unmanaged resource, // remove it from the finalizer queue. GC.SuppressFinalize(this); } } #endregion /// /// Finalize the line break /// ~TextLineBreak() { DisposeInternal(true); } ////// Dispose the line break /// public void Dispose() { DisposeInternal(false); GC.SuppressFinalize(this); } ////// Clone a new instance of TextLineBreak /// ////// Critical - as this calls unmanaged API LoCloneBreakRecord. /// PublicOK - as it takes no parameter and retain no additional unmanaged resource. /// [SecurityCritical] public TextLineBreak Clone() { IntPtr pbreakrec = IntPtr.Zero; if (_breakRecord.Value != IntPtr.Zero) { LsErr lserr = UnsafeNativeMethods.LoCloneBreakRecord(_breakRecord.Value, out pbreakrec); if (lserr != LsErr.None) { TextFormatterContext.ThrowExceptionFromLsError(SR.Get(SRID.CloneBreakRecordFailure, lserr), lserr); } } return new TextLineBreak(_currentScope, new SecurityCriticalDataForSet(pbreakrec)); } /// /// Destroy LS unmanaged break records object inside the line break /// managed object. The parameter flag indicates whether the call is /// from finalizer thread or the main UI thread. /// ////// Critical - as this calls the setter of _breakRecord.Value which is type SecurityCriticalDataForSet. /// _breakRecord is the value received from call to LoCreateBreaks and being passed back in /// when building the next break. No code should have access to set it otherwise. /// Safe - as this does not take any parameter that it passes directly to the critical function. /// [SecurityCritical, SecurityTreatAsSafe] private void DisposeInternal(bool finalizing) { if (_breakRecord.Value != IntPtr.Zero) { UnsafeNativeMethods.LoDisposeBreakRecord(_breakRecord.Value, finalizing); _breakRecord.Value = IntPtr.Zero; GC.KeepAlive(this); } } ////// Current text modifier scope, which can be null. /// internal TextModifierScope TextModifierScope { get { return _currentScope; } } ////// Unmanaged pointer to LS break records structure /// internal SecurityCriticalDataForSetBreakRecord { get { return _breakRecord; } } } } // 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
- UserControl.cs
- MetricEntry.cs
- ExtractorMetadata.cs
- ToolStripSplitButton.cs
- ParentUndoUnit.cs
- DecimalConstantAttribute.cs
- HttpHeaderCollection.cs
- TypeSystemHelpers.cs
- XmlDataImplementation.cs
- StrokeCollection2.cs
- EntityDataSource.cs
- TransactionChannelListener.cs
- SqlErrorCollection.cs
- DbDataReader.cs
- ADConnectionHelper.cs
- ILGenerator.cs
- SoapExtension.cs
- Latin1Encoding.cs
- ConstantCheck.cs
- CopyAction.cs
- FieldToken.cs
- NamedPermissionSet.cs
- SafeRightsManagementHandle.cs
- ColorConverter.cs
- Table.cs
- DataTableMappingCollection.cs
- TabItemWrapperAutomationPeer.cs
- SeekStoryboard.cs
- FutureFactory.cs
- documentsequencetextpointer.cs
- DirectionalLight.cs
- SmtpCommands.cs
- xml.cs
- WmlLinkAdapter.cs
- RelationalExpressions.cs
- SamlSubject.cs
- TreeNodeBindingCollection.cs
- SqlDataSourceStatusEventArgs.cs
- PrintDocument.cs
- AttributeUsageAttribute.cs
- GridViewSortEventArgs.cs
- CompareInfo.cs
- KeyConstraint.cs
- QilName.cs
- RequestSecurityTokenResponseCollection.cs
- ConnectionStringsExpressionBuilder.cs
- SecurityTokenSerializer.cs
- CompilerError.cs
- DbConnectionFactory.cs
- ToolBarOverflowPanel.cs
- ExpressionNode.cs
- HtmlWindow.cs
- FontStyle.cs
- CuspData.cs
- SystemUnicastIPAddressInformation.cs
- FormsAuthenticationEventArgs.cs
- SecurityTokenTypes.cs
- ApplicationActivator.cs
- BreakSafeBase.cs
- WebRequest.cs
- CurrencyWrapper.cs
- DriveInfo.cs
- HostingPreferredMapPath.cs
- Compensate.cs
- VsPropertyGrid.cs
- TextEditorLists.cs
- TextSchema.cs
- ItemsControlAutomationPeer.cs
- QueueNameHelper.cs
- MSHTMLHostUtil.cs
- RawAppCommandInputReport.cs
- ListViewInsertedEventArgs.cs
- SqlCacheDependencySection.cs
- ScriptRegistrationManager.cs
- XpsSerializerFactory.cs
- ProtocolsConfigurationHandler.cs
- KernelTypeValidation.cs
- SettingsPropertyValue.cs
- ReferentialConstraint.cs
- SourceItem.cs
- DesignerTransactionCloseEvent.cs
- BevelBitmapEffect.cs
- LiteralSubsegment.cs
- CqlLexerHelpers.cs
- ProcessModule.cs
- StateDesignerConnector.cs
- TableLayoutStyleCollection.cs
- FunctionQuery.cs
- ListViewTableCell.cs
- ObjRef.cs
- QuadTree.cs
- StateChangeEvent.cs
- SqlMethods.cs
- Int32CollectionConverter.cs
- ActiveXContainer.cs
- XmlSchemaSimpleContentExtension.cs
- CodeGeneratorOptions.cs
- EdmComplexPropertyAttribute.cs
- XmlEntity.cs
- EntityDataSourceStatementEditorForm.cs