Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Ink / ISFClipboardData.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebEvents.cs
- DragCompletedEventArgs.cs
- BulletChrome.cs
- OleTxTransaction.cs
- OutKeywords.cs
- LinqDataSourceHelper.cs
- Thread.cs
- ColumnCollection.cs
- WorkflowQueue.cs
- Win32SafeHandles.cs
- XmlSchemaAnyAttribute.cs
- ToolStripComboBox.cs
- AutoGeneratedFieldProperties.cs
- ProtocolsSection.cs
- HtmlTableCell.cs
- FirstMatchCodeGroup.cs
- ProfessionalColors.cs
- ChangeTracker.cs
- ScriptReferenceEventArgs.cs
- HtmlDocument.cs
- TrackBar.cs
- AssemblyResourceLoader.cs
- AxDesigner.cs
- Image.cs
- DataKey.cs
- NameValueConfigurationCollection.cs
- ImageClickEventArgs.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- TagElement.cs
- UriExt.cs
- HighlightVisual.cs
- DataGridLinkButton.cs
- MulticastIPAddressInformationCollection.cs
- HatchBrush.cs
- UdpChannelListener.cs
- dsa.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- _ConnectOverlappedAsyncResult.cs
- NameTable.cs
- TypeAccessException.cs
- ToolStripSeparator.cs
- BindingContext.cs
- CapabilitiesAssignment.cs
- AnonymousIdentificationModule.cs
- Codec.cs
- MenuItemStyleCollectionEditor.cs
- XmlReaderDelegator.cs
- ConstrainedDataObject.cs
- DbReferenceCollection.cs
- StrokeNodeOperations2.cs
- EventDescriptor.cs
- BaseParser.cs
- StrokeDescriptor.cs
- WaitForChangedResult.cs
- CalendarDay.cs
- TextRangeEditTables.cs
- InstallerTypeAttribute.cs
- WizardStepBase.cs
- ModelTreeEnumerator.cs
- PlainXmlWriter.cs
- serverconfig.cs
- ComboBoxItem.cs
- FontStretches.cs
- InvalidOperationException.cs
- MemoryRecordBuffer.cs
- SqlCacheDependencyDatabaseCollection.cs
- SingleAnimation.cs
- DbParameterHelper.cs
- TerminateDesigner.cs
- XpsS0ValidatingLoader.cs
- DocumentXmlWriter.cs
- DescendantOverDescendantQuery.cs
- StreamBodyWriter.cs
- TemplateAction.cs
- SiteMapDataSource.cs
- PhonemeEventArgs.cs
- Stroke.cs
- JournalEntryListConverter.cs
- DefaultWorkflowLoaderService.cs
- AttachedPropertyInfo.cs
- RealizationContext.cs
- ObjectNavigationPropertyMapping.cs
- LineServices.cs
- FileEnumerator.cs
- Vector.cs
- ControlTemplate.cs
- SqlCrossApplyToCrossJoin.cs
- ContentElement.cs
- SubclassTypeValidatorAttribute.cs
- Listbox.cs
- InputBinding.cs
- ProxyManager.cs
- DesignerDeviceConfig.cs
- ZeroOpNode.cs
- InputReferenceExpression.cs
- MethodImplAttribute.cs
- DataSet.cs
- log.cs
- StatusBar.cs
- TextProperties.cs