Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Imaging / UnmanagedBitmapWrapper.cs / 1305600 / UnmanagedBitmapWrapper.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation. All Rights Reserved.
//
// File: UnmanagedBitmapWrapper.cs
//
//-----------------------------------------------------------------------------
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Reflection;
using MS.Internal;
using MS.Win32.PresentationCore;
using System.Security;
using System.Security.Permissions;
using System.Diagnostics;
using System.Windows.Media;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using MS.Internal.PresentationCore;
using SR = MS.Internal.PresentationCore.SR;
using SRID = MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Imaging
{
internal sealed class UnmanagedBitmapWrapper : BitmapSource
{
///
/// Critical - calls critical code method BitmapSource.UpdateCachedSettings
/// TreatAsSafe - all inputs are checked
///
[SecurityCritical, SecurityTreatAsSafe]
public UnmanagedBitmapWrapper(BitmapSourceSafeMILHandle bitmapSource) :
base(true)
{
_bitmapInit.BeginInit();
//
// This constructor is used by BitmapDecoder and BitmapFrameDecode for thumbnails and
// previews. The bitmapSource parameter comes from BitmapSource.CreateCachedBitmap
// which already calculated memory pressure, so there's no need to do it here.
//
WicSourceHandle = bitmapSource;
_bitmapInit.EndInit();
UpdateCachedSettings();
}
#region Protected Methods
///
/// Critical - eventually access'es critical resources (_wicSource)
/// TreatAsSafe - all inputs are checked
///
[SecurityCritical, SecurityTreatAsSafe]
internal UnmanagedBitmapWrapper(bool initialize) :
base(true)
{
// Call BeginInit and EndInit if initialize is true.
if (initialize)
{
_bitmapInit.BeginInit();
_bitmapInit.EndInit();
}
}
///
/// Implementation of Freezable.CreateInstanceCore .
///
protected override Freezable CreateInstanceCore()
{
return new UnmanagedBitmapWrapper(false);
}
private void CopyCommon(UnmanagedBitmapWrapper sourceBitmap)
{
_bitmapInit.BeginInit();
_bitmapInit.EndInit();
}
///
/// Implementation of Freezable.CloneCore .
///
protected override void CloneCore(Freezable sourceFreezable)
{
UnmanagedBitmapWrapper sourceBitmap = (UnmanagedBitmapWrapper)sourceFreezable;
base.CloneCore(sourceFreezable);
CopyCommon(sourceBitmap);
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
UnmanagedBitmapWrapper sourceBitmap = (UnmanagedBitmapWrapper)sourceFreezable;
base.CloneCurrentValueCore(sourceFreezable);
CopyCommon(sourceBitmap);
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
UnmanagedBitmapWrapper sourceBitmap = (UnmanagedBitmapWrapper)sourceFreezable;
base.GetAsFrozenCore(sourceFreezable);
CopyCommon(sourceBitmap);
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
UnmanagedBitmapWrapper sourceBitmap = (UnmanagedBitmapWrapper)sourceFreezable;
base.GetCurrentValueAsFrozenCore(sourceFreezable);
CopyCommon(sourceBitmap);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DialogResultConverter.cs
- Enlistment.cs
- FactoryGenerator.cs
- OperandQuery.cs
- UnknownMessageReceivedEventArgs.cs
- SponsorHelper.cs
- WeakReferenceList.cs
- OrthographicCamera.cs
- TaskResultSetter.cs
- CompModSwitches.cs
- DataObject.cs
- Operators.cs
- CorrelationInitializer.cs
- ExpressionLexer.cs
- ElementAction.cs
- AvTraceDetails.cs
- PageCanvasSize.cs
- CallbackValidator.cs
- XMLDiffLoader.cs
- XmlSchemaDocumentation.cs
- ErrorHandler.cs
- DataGridCommandEventArgs.cs
- RootBuilder.cs
- ArgumentValidation.cs
- DesignerDataConnection.cs
- XmlValidatingReaderImpl.cs
- StorageMappingFragment.cs
- XmlNamespaceDeclarationsAttribute.cs
- EventProvider.cs
- Constants.cs
- Identity.cs
- SaveFileDialog.cs
- ConfigViewGenerator.cs
- SelectedDatesCollection.cs
- AssemblyBuilder.cs
- ListItemsCollectionEditor.cs
- OrderToken.cs
- ElementFactory.cs
- HtmlInputText.cs
- GeometryCollection.cs
- SubpageParaClient.cs
- AuthenticatedStream.cs
- ParameterToken.cs
- CallbackValidatorAttribute.cs
- UIElement3D.cs
- PrimitiveType.cs
- CodeBlockBuilder.cs
- TableColumn.cs
- DocumentsTrace.cs
- MetadataException.cs
- ExtendedPropertyCollection.cs
- DescendentsWalkerBase.cs
- PassportAuthentication.cs
- ArcSegment.cs
- PrinterUnitConvert.cs
- ImageSource.cs
- ToolStrip.cs
- UrlPath.cs
- SmiEventStream.cs
- CannotUnloadAppDomainException.cs
- WorkflowApplicationCompletedEventArgs.cs
- GridViewRow.cs
- SqlMetaData.cs
- EFColumnProvider.cs
- StrongName.cs
- DateTimePicker.cs
- XmlWriterTraceListener.cs
- WebPartEditorApplyVerb.cs
- ReferenceService.cs
- RectKeyFrameCollection.cs
- UxThemeWrapper.cs
- ObfuscationAttribute.cs
- SupportsEventValidationAttribute.cs
- Preprocessor.cs
- ListBoxAutomationPeer.cs
- BufferAllocator.cs
- TextWriter.cs
- Constants.cs
- WebBrowser.cs
- FormatSettings.cs
- VisualBrush.cs
- DataGridAutoFormat.cs
- Wildcard.cs
- ProgressBarRenderer.cs
- SchemaTableOptionalColumn.cs
- SHA384CryptoServiceProvider.cs
- TemplateManager.cs
- OSFeature.cs
- FrameworkContentElement.cs
- AutomationEventArgs.cs
- GuidelineSet.cs
- FixUp.cs
- TypeInitializationException.cs
- OptionalColumn.cs
- RegexNode.cs
- SerialStream.cs
- PageCatalogPart.cs
- nulltextnavigator.cs
- ByteStack.cs
- XmlObjectSerializerReadContext.cs