Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / Ink / ISFClipboardData.cs / 1 / ISFClipboardData.cs
//---------------------------------------------------------------------------- // // File: ISFClipboardData.cs // // Description: // A class which can convert the clipboard data from/to StrokeCollection // // Features: // // History: // 11/17/2004 waynezen: Created // // Copyright (C) 2001 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Ink; using System.Security; using System.Security.Permissions; namespace MS.Internal.Ink { internal class ISFClipboardData : ClipboardData { //------------------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------------------- #region Constructors // The default constructor internal ISFClipboardData() { } // The constructor which takes StrokeCollection argument internal ISFClipboardData(StrokeCollection strokes) { _strokes = strokes; } // Checks if the data can be pasted. internal override bool CanPaste(IDataObject dataObject) { return dataObject.GetDataPresent(StrokeCollection.InkSerializedFormat, false); } #endregion Constructors //-------------------------------------------------------------------------------- // // Protected Methods // //------------------------------------------------------------------------------- #region Protected Methods // Checks if there is stroke data in this instance protected override bool CanCopy() { return (Strokes != null && Strokes.Count != 0); } // Copies the internal strokes to the IDataObject ////// Critical: This code asserts to set data on a data object /// [SecurityCritical] protected override void DoCopy(IDataObject dataObject) { // samgeo - Presharp issue // Presharp gives a warning when local IDisposable variables are not closed // in this case, we can't call Dispose since it will also close the underlying stream // which needs to be open for consumers to read #pragma warning disable 1634, 1691 #pragma warning disable 6518 // Save the data in the data object. MemoryStream stream = new MemoryStream(); Strokes.Save(stream); stream.Position = 0; (new UIPermission(UIPermissionClipboard.AllClipboard)).Assert();//BlessedAssert try { dataObject.SetData(StrokeCollection.InkSerializedFormat, stream); } finally { UIPermission.RevertAssert(); } #pragma warning restore 6518 #pragma warning restore 1634, 1691 } // Retrieves the stroks from the IDataObject protected override void DoPaste(IDataObject dataObject) { // Check if we have ink data MemoryStream stream = dataObject.GetData(StrokeCollection.InkSerializedFormat) as MemoryStream; StrokeCollection newStrokes = null; bool fSucceeded = false; if ( stream != null && stream != Stream.Null ) { try { // Now add these ink strokes to the InkCanvas ink collection. newStrokes = new StrokeCollection(stream); fSucceeded = true; } catch ( ArgumentException ) { // If an invalid stream was passed in, we should get ArgumentException here. // We catch this specific exception and eat it. fSucceeded = false; } } // Depending on whether we are succeeded or not, we set the correct stroke collection here. _strokes = fSucceeded ? newStrokes : new StrokeCollection(); } #endregion Protected Methods //-------------------------------------------------------------------------------- // // Internal Properties // //-------------------------------------------------------------------------------- #region Internal Properties // Gets the strokes internal StrokeCollection Strokes { get { return _strokes; } } #endregion Internal Properties //------------------------------------------------------------------------------- // // Private Fields // //-------------------------------------------------------------------------------- #region Private Fields StrokeCollection _strokes; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // File: ISFClipboardData.cs // // Description: // A class which can convert the clipboard data from/to StrokeCollection // // Features: // // History: // 11/17/2004 waynezen: Created // // Copyright (C) 2001 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Ink; using System.Security; using System.Security.Permissions; namespace MS.Internal.Ink { internal class ISFClipboardData : ClipboardData { //------------------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------------------- #region Constructors // The default constructor internal ISFClipboardData() { } // The constructor which takes StrokeCollection argument internal ISFClipboardData(StrokeCollection strokes) { _strokes = strokes; } // Checks if the data can be pasted. internal override bool CanPaste(IDataObject dataObject) { return dataObject.GetDataPresent(StrokeCollection.InkSerializedFormat, false); } #endregion Constructors //-------------------------------------------------------------------------------- // // Protected Methods // //------------------------------------------------------------------------------- #region Protected Methods // Checks if there is stroke data in this instance protected override bool CanCopy() { return (Strokes != null && Strokes.Count != 0); } // Copies the internal strokes to the IDataObject ////// Critical: This code asserts to set data on a data object /// [SecurityCritical] protected override void DoCopy(IDataObject dataObject) { // samgeo - Presharp issue // Presharp gives a warning when local IDisposable variables are not closed // in this case, we can't call Dispose since it will also close the underlying stream // which needs to be open for consumers to read #pragma warning disable 1634, 1691 #pragma warning disable 6518 // Save the data in the data object. MemoryStream stream = new MemoryStream(); Strokes.Save(stream); stream.Position = 0; (new UIPermission(UIPermissionClipboard.AllClipboard)).Assert();//BlessedAssert try { dataObject.SetData(StrokeCollection.InkSerializedFormat, stream); } finally { UIPermission.RevertAssert(); } #pragma warning restore 6518 #pragma warning restore 1634, 1691 } // Retrieves the stroks from the IDataObject protected override void DoPaste(IDataObject dataObject) { // Check if we have ink data MemoryStream stream = dataObject.GetData(StrokeCollection.InkSerializedFormat) as MemoryStream; StrokeCollection newStrokes = null; bool fSucceeded = false; if ( stream != null && stream != Stream.Null ) { try { // Now add these ink strokes to the InkCanvas ink collection. newStrokes = new StrokeCollection(stream); fSucceeded = true; } catch ( ArgumentException ) { // If an invalid stream was passed in, we should get ArgumentException here. // We catch this specific exception and eat it. fSucceeded = false; } } // Depending on whether we are succeeded or not, we set the correct stroke collection here. _strokes = fSucceeded ? newStrokes : new StrokeCollection(); } #endregion Protected Methods //-------------------------------------------------------------------------------- // // Internal Properties // //-------------------------------------------------------------------------------- #region Internal Properties // Gets the strokes internal StrokeCollection Strokes { get { return _strokes; } } #endregion Internal Properties //------------------------------------------------------------------------------- // // Private Fields // //-------------------------------------------------------------------------------- #region Private Fields StrokeCollection _strokes; #endregion Private Fields } } // 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
- BuildProviderCollection.cs
- ServiceProviders.cs
- UnsafeNativeMethodsCLR.cs
- TypeLibConverter.cs
- MultilineStringConverter.cs
- HWStack.cs
- TreeBuilder.cs
- SizeConverter.cs
- EtwTrackingBehaviorElement.cs
- PolicyValidationException.cs
- QueryException.cs
- XPathDocumentBuilder.cs
- ImageConverter.cs
- GridViewColumn.cs
- DataTablePropertyDescriptor.cs
- FrameAutomationPeer.cs
- DataGridViewCellParsingEventArgs.cs
- FixUpCollection.cs
- CookielessHelper.cs
- SafeNativeMethodsCLR.cs
- ControlType.cs
- CacheMemory.cs
- RuntimeHelpers.cs
- ScrollPattern.cs
- UInt64.cs
- RangeValuePatternIdentifiers.cs
- NullableFloatMinMaxAggregationOperator.cs
- RootContext.cs
- COM2ExtendedTypeConverter.cs
- HttpApplication.cs
- _NTAuthentication.cs
- WSTrustFeb2005.cs
- CodePageUtils.cs
- TemplateBindingExpression.cs
- BufferedStream.cs
- WindowsScroll.cs
- PartialCachingAttribute.cs
- XmlSerializationReader.cs
- _emptywebproxy.cs
- ActiveXHelper.cs
- BindingListCollectionView.cs
- InvokeHandlers.cs
- sqlcontext.cs
- SoapProtocolImporter.cs
- ToolStripSplitButton.cs
- MessageHeaders.cs
- DataRelation.cs
- SizeAnimationUsingKeyFrames.cs
- ToolStripItemEventArgs.cs
- Serialization.cs
- FixedDocument.cs
- ConfigPathUtility.cs
- TypefaceMetricsCache.cs
- WhitespaceReader.cs
- SerializationFieldInfo.cs
- SafeFileHandle.cs
- CompensatableTransactionScopeActivityDesigner.cs
- SurrogateEncoder.cs
- FormViewDeleteEventArgs.cs
- RubberbandSelector.cs
- CharStorage.cs
- MetadataUtilsSmi.cs
- GlyphInfoList.cs
- DataGridViewLinkCell.cs
- bidPrivateBase.cs
- DetailsViewInsertEventArgs.cs
- SignatureTargetIdManager.cs
- X509Certificate2Collection.cs
- CFGGrammar.cs
- DigitShape.cs
- RecognizerInfo.cs
- RoleManagerModule.cs
- GenericTypeParameterConverter.cs
- LightweightCodeGenerator.cs
- ClientScriptManager.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- CharEntityEncoderFallback.cs
- BindingGroup.cs
- SetterBase.cs
- HGlobalSafeHandle.cs
- PropertyHelper.cs
- InteropBitmapSource.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- Aggregates.cs
- TaskResultSetter.cs
- RoleGroup.cs
- ProcessInfo.cs
- ConfigPathUtility.cs
- ContentControl.cs
- ResXDataNode.cs
- OpCopier.cs
- GridViewRowEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs
- ToolStripContentPanelRenderEventArgs.cs
- PropertyIDSet.cs
- DataTableNewRowEvent.cs
- FatalException.cs
- WebRequestModuleElementCollection.cs
- _SSPIWrapper.cs
- BooleanExpr.cs