Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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 [....]: 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) { // [....] - 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
- RegexCapture.cs
- SourceElementsCollection.cs
- ProfessionalColorTable.cs
- HwndHost.cs
- HttpFileCollection.cs
- XmlNodeChangedEventManager.cs
- DodSequenceMerge.cs
- LinqDataSourceInsertEventArgs.cs
- XmlSchemaProviderAttribute.cs
- MaskDesignerDialog.cs
- Sequence.cs
- XmlSchemaObject.cs
- CommandConverter.cs
- SqlUDTStorage.cs
- PersonalizationProvider.cs
- FileDocument.cs
- PassportAuthenticationEventArgs.cs
- UdpChannelFactory.cs
- PageThemeCodeDomTreeGenerator.cs
- SerializationSectionGroup.cs
- RectAnimation.cs
- SqlClientPermission.cs
- SubstitutionDesigner.cs
- CommandField.cs
- OracleConnectionString.cs
- DescendentsWalkerBase.cs
- OleDbParameter.cs
- DataGridLinkButton.cs
- EventWaitHandleSecurity.cs
- EdmComplexPropertyAttribute.cs
- AffineTransform3D.cs
- Rect3DValueSerializer.cs
- EventSinkHelperWriter.cs
- SqlClientWrapperSmiStreamChars.cs
- ClassValidator.cs
- DataGridViewRowsRemovedEventArgs.cs
- LayoutSettings.cs
- ParameterCollectionEditor.cs
- SQLInt32.cs
- Attributes.cs
- SqlPersonalizationProvider.cs
- _BufferOffsetSize.cs
- Soap12ProtocolReflector.cs
- FileEnumerator.cs
- ZipIOLocalFileBlock.cs
- ScriptReferenceEventArgs.cs
- Regex.cs
- InternalBase.cs
- DataGridViewTextBoxColumn.cs
- ManagementPath.cs
- TreeChangeInfo.cs
- InputEventArgs.cs
- TiffBitmapDecoder.cs
- ArrayWithOffset.cs
- DelegatedStream.cs
- TypeUnloadedException.cs
- RuleSettings.cs
- SessionStateSection.cs
- RegexCapture.cs
- LookupBindingPropertiesAttribute.cs
- SQLGuidStorage.cs
- WindowsStartMenu.cs
- InputLangChangeRequestEvent.cs
- XPathDocumentNavigator.cs
- IdentityHolder.cs
- ZoneIdentityPermission.cs
- KerberosSecurityTokenProvider.cs
- NameSpaceEvent.cs
- securitycriticaldataformultiplegetandset.cs
- RealProxy.cs
- HwndMouseInputProvider.cs
- ManagedFilter.cs
- DataGridViewRowEventArgs.cs
- metrodevice.cs
- ValueQuery.cs
- BufferModesCollection.cs
- DataSourceHelper.cs
- SmtpClient.cs
- BinaryObjectReader.cs
- TextTreeNode.cs
- StringValidatorAttribute.cs
- AccessKeyManager.cs
- GenericTextProperties.cs
- CapiSymmetricAlgorithm.cs
- TTSEngineTypes.cs
- ValueProviderWrapper.cs
- SendKeys.cs
- WindowClosedEventArgs.cs
- HeaderCollection.cs
- DeferredReference.cs
- CompilationSection.cs
- FullTextState.cs
- CompositeControl.cs
- PeerUnsafeNativeMethods.cs
- Underline.cs
- BaseProcessor.cs
- ParentUndoUnit.cs
- WebServiceClientProxyGenerator.cs
- ProxyGenerationError.cs
- PlatformCulture.cs