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
- CommandSet.cs
- ToolStripContainer.cs
- DataException.cs
- SqlConnectionFactory.cs
- GeometryValueSerializer.cs
- DataGridViewRowHeaderCell.cs
- ApplicationActivator.cs
- TextBox.cs
- MeasureData.cs
- XpsFontSubsetter.cs
- XAMLParseException.cs
- CrossAppDomainChannel.cs
- LambdaCompiler.Logical.cs
- PathFigureCollectionValueSerializer.cs
- ViewValidator.cs
- WeakReferenceKey.cs
- TemplateControlCodeDomTreeGenerator.cs
- BaseCodePageEncoding.cs
- typedescriptorpermission.cs
- ManagementPath.cs
- FontFamilyValueSerializer.cs
- TextTreeDeleteContentUndoUnit.cs
- ExpandCollapseProviderWrapper.cs
- ExceptionUtil.cs
- CodeArrayCreateExpression.cs
- AuthStoreRoleProvider.cs
- GeneralTransform2DTo3D.cs
- EncoderFallback.cs
- MetaForeignKeyColumn.cs
- ChainedAsyncResult.cs
- OleDbCommandBuilder.cs
- FontCollection.cs
- OleDbParameterCollection.cs
- CharStorage.cs
- SoapFormatter.cs
- X509SecurityTokenAuthenticator.cs
- ListBoxItem.cs
- ActiveXSite.cs
- HttpPostedFileWrapper.cs
- SerializerDescriptor.cs
- XmlBufferReader.cs
- Token.cs
- CanonicalFontFamilyReference.cs
- TriggerCollection.cs
- InfiniteTimeSpanConverter.cs
- System.Data_BID.cs
- ToolStripItemClickedEventArgs.cs
- OdbcEnvironmentHandle.cs
- SignedPkcs7.cs
- DragAssistanceManager.cs
- DbParameterHelper.cs
- TriggerAction.cs
- ListViewCommandEventArgs.cs
- CompilerGeneratedAttribute.cs
- MailAddress.cs
- CornerRadiusConverter.cs
- DataGridViewRowHeaderCell.cs
- DbDataRecord.cs
- BufferedMessageData.cs
- DataTableReader.cs
- OptimalBreakSession.cs
- IdleTimeoutMonitor.cs
- AssemblyCache.cs
- RegisteredScript.cs
- ViewManager.cs
- QilUnary.cs
- LabelAutomationPeer.cs
- TemplateBamlTreeBuilder.cs
- BaseTreeIterator.cs
- Collection.cs
- ZoneButton.cs
- RtfToXamlLexer.cs
- SoapCodeExporter.cs
- documentsequencetextview.cs
- OleDbDataAdapter.cs
- UrlRoutingModule.cs
- TextTrailingCharacterEllipsis.cs
- DataGridToolTip.cs
- GroupBoxDesigner.cs
- OverflowException.cs
- RepeatBehavior.cs
- KeyConstraint.cs
- PeerEndPoint.cs
- EllipseGeometry.cs
- XmlElement.cs
- EditableLabelControl.cs
- OpacityConverter.cs
- HttpRawResponse.cs
- ExcludePathInfo.cs
- DbQueryCommandTree.cs
- Size.cs
- OrderPreservingMergeHelper.cs
- RawStylusInput.cs
- CompilerGlobalScopeAttribute.cs
- CharacterBuffer.cs
- SymLanguageVendor.cs
- MissingMethodException.cs
- InvalidStoreProtectionKeyException.cs
- DbParameterCollection.cs
- MissingFieldException.cs