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
- BrowserCapabilitiesCompiler.cs
- SchemaElementLookUpTableEnumerator.cs
- AsyncCompletedEventArgs.cs
- XmlProcessingInstruction.cs
- IsolatedStorageException.cs
- AndCondition.cs
- SmtpCommands.cs
- XmlName.cs
- ValidatorCompatibilityHelper.cs
- ProjectionCamera.cs
- SQLInt16Storage.cs
- WebHttpSecurityModeHelper.cs
- RectAnimationUsingKeyFrames.cs
- CodeCommentStatementCollection.cs
- PerspectiveCamera.cs
- Activity.cs
- DataContractFormatAttribute.cs
- DispatcherOperation.cs
- ProxySimple.cs
- RefreshResponseInfo.cs
- Int64Storage.cs
- XmlSubtreeReader.cs
- SqlBinder.cs
- TextServicesDisplayAttribute.cs
- Translator.cs
- PeerCollaboration.cs
- XComponentModel.cs
- AuthenticationService.cs
- OneOfScalarConst.cs
- BindingContext.cs
- XPathNode.cs
- XamlHttpHandlerFactory.cs
- RepeaterItem.cs
- PropertyGroupDescription.cs
- ReadOnlyDataSource.cs
- TraceXPathNavigator.cs
- TypeLibConverter.cs
- Membership.cs
- IntegerValidator.cs
- XsltContext.cs
- TreeChangeInfo.cs
- CodeIndexerExpression.cs
- QilIterator.cs
- ProtocolsConfigurationEntry.cs
- returneventsaver.cs
- InfoCardRSACryptoProvider.cs
- D3DImage.cs
- StreamingContext.cs
- SortedList.cs
- UInt32.cs
- BookmarkManager.cs
- ChtmlPageAdapter.cs
- ProgressBarBrushConverter.cs
- DictionaryGlobals.cs
- MatrixCamera.cs
- JournalEntryListConverter.cs
- SignatureGenerator.cs
- PromptBuilder.cs
- LiteralTextContainerControlBuilder.cs
- SqlTransaction.cs
- ParserContext.cs
- ConnectionStringsSection.cs
- ComponentEditorForm.cs
- MouseCaptureWithinProperty.cs
- ErrorFormatterPage.cs
- ActivitySurrogate.cs
- DataGridHeaderBorder.cs
- XmlMapping.cs
- IdnElement.cs
- StatusBarPanel.cs
- CodeAccessSecurityEngine.cs
- RangeValidator.cs
- Version.cs
- IIS7UserPrincipal.cs
- DmlSqlGenerator.cs
- XmlAttributeAttribute.cs
- UidPropertyAttribute.cs
- MouseBinding.cs
- SchemaTypeEmitter.cs
- GradientBrush.cs
- ImmutableObjectAttribute.cs
- ApplicationBuildProvider.cs
- WebPartsPersonalizationAuthorization.cs
- ScriptReferenceEventArgs.cs
- PeerEndPoint.cs
- RequestContext.cs
- RequestReplyCorrelator.cs
- MenuCommandService.cs
- XmlSignificantWhitespace.cs
- GifBitmapEncoder.cs
- DataDesignUtil.cs
- SelectorAutomationPeer.cs
- CodeDefaultValueExpression.cs
- SessionStateModule.cs
- SecurityException.cs
- PackWebRequest.cs
- DataGridBoolColumn.cs
- EncodingInfo.cs
- Utils.cs
- HostingEnvironmentException.cs