Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- RegexEditorDialog.cs
- WebMessageFormatHelper.cs
- TextClipboardData.cs
- OleServicesContext.cs
- TypeFieldSchema.cs
- __FastResourceComparer.cs
- HyperLinkStyle.cs
- Model3DGroup.cs
- Sequence.cs
- ImageAnimator.cs
- CustomTypeDescriptor.cs
- handlecollector.cs
- BitStream.cs
- KerberosTicketHashIdentifierClause.cs
- XamlPointCollectionSerializer.cs
- MachineSettingsSection.cs
- SchemaConstraints.cs
- xsdvalidator.cs
- LinkUtilities.cs
- InputMethodStateChangeEventArgs.cs
- _IPv6Address.cs
- StateFinalizationActivity.cs
- CodeCompileUnit.cs
- InputReport.cs
- HttpContextServiceHost.cs
- SqlExpressionNullability.cs
- DataGridCommandEventArgs.cs
- ExpandableObjectConverter.cs
- OleDbFactory.cs
- DataRelation.cs
- VirtualDirectoryMapping.cs
- XmlSchemaCompilationSettings.cs
- CodeDirectoryCompiler.cs
- WebServiceEnumData.cs
- HandleDictionary.cs
- Vector3dCollection.cs
- GeometryValueSerializer.cs
- TabControl.cs
- MemberAccessException.cs
- TokenBasedSet.cs
- SecurityPermission.cs
- EntityViewGenerationConstants.cs
- Update.cs
- CryptoStream.cs
- HostedBindingBehavior.cs
- SelectionRangeConverter.cs
- XmlEntity.cs
- TransactedBatchContext.cs
- SoapFault.cs
- LinqDataSourceContextEventArgs.cs
- BidOverLoads.cs
- KeyManager.cs
- ReflectEventDescriptor.cs
- ExpressionVisitorHelpers.cs
- NativeObjectSecurity.cs
- BaseResourcesBuildProvider.cs
- DefaultWorkflowTransactionService.cs
- SqlOuterApplyReducer.cs
- SessionEndingCancelEventArgs.cs
- ToolStripPanelRow.cs
- VectorAnimation.cs
- CodeExporter.cs
- DispatcherObject.cs
- SystemNetworkInterface.cs
- ConcatQueryOperator.cs
- DoubleSumAggregationOperator.cs
- _FtpControlStream.cs
- CrossSiteScriptingValidation.cs
- DynamicArgumentDialog.cs
- SqlLiftIndependentRowExpressions.cs
- HttpHandlerActionCollection.cs
- SqlClientWrapperSmiStream.cs
- SafeCoTaskMem.cs
- ProtocolsConfigurationEntry.cs
- BamlBinaryWriter.cs
- WindowsToolbarItemAsMenuItem.cs
- TextRunCacheImp.cs
- IdentitySection.cs
- SoapSchemaImporter.cs
- SpotLight.cs
- Material.cs
- ManagementOperationWatcher.cs
- EventProvider.cs
- LockCookie.cs
- HostSecurityManager.cs
- ModuleElement.cs
- ResourceManager.cs
- ArrayList.cs
- HtmlForm.cs
- SqlDataReaderSmi.cs
- GiveFeedbackEvent.cs
- RoleManagerModule.cs
- DrawListViewSubItemEventArgs.cs
- ObjectListShowCommandsEventArgs.cs
- TextRangeEdit.cs
- Tag.cs
- SvcMapFile.cs
- Html32TextWriter.cs
- XsltException.cs
- ExpressionBindingsDialog.cs