Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / Imaging / CroppedBitmap.cs / 1 / CroppedBitmap.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation. All Rights Reserved.
//
// File: CroppedBitmap.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.Media.Animation;
using System.Windows.Media.Composition;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Imaging
{
#region CroppedBitmap
///
/// CroppedBitmap provides caching functionality for a BitmapSource.
///
public sealed partial class CroppedBitmap : Imaging.BitmapSource, ISupportInitialize
{
///
/// Constructor
///
public CroppedBitmap() : base(true)
{
}
///
/// Construct a CroppedBitmap
///
/// BitmapSource to apply to the crop to
/// Source rect of the bitmap to use
public CroppedBitmap(BitmapSource source, Int32Rect sourceRect)
: base(true) // Use base class virtuals
{
if (source == null)
{
throw new ArgumentNullException("source");
}
_bitmapInit.BeginInit();
Source = source;
SourceRect = sourceRect;
_bitmapInit.EndInit();
FinalizeCreation();
}
// ISupportInitialize
///
/// Prepare the bitmap to accept initialize paramters.
///
public void BeginInit()
{
WritePreamble();
_bitmapInit.BeginInit();
}
///
/// Prepare the bitmap to accept initialize paramters.
///
///
/// Critical - access critical resources
/// PublicOK - All inputs verified
///
[SecurityCritical ]
public void EndInit()
{
WritePreamble();
_bitmapInit.EndInit();
if (Source == null)
{
throw new InvalidOperationException(SR.Get(SRID.Image_NoArgument, "Source"));
}
FinalizeCreation();
}
private void ClonePrequel(CroppedBitmap otherCroppedBitmap)
{
BeginInit();
}
private void ClonePostscript(CroppedBitmap otherCroppedBitmap)
{
EndInit();
}
///
/// Create the unmanaged resources
///
///
/// Critical - access critical resource
///
[SecurityCritical]
internal override void FinalizeCreation()
{
_bitmapInit.EnsureInitializedComplete();
BitmapSourceSafeMILHandle wicClipper = null;
Int32Rect rect = SourceRect;
BitmapSource source = Source;
if (rect.IsEmpty)
{
rect.Width = source.PixelWidth;
rect.Height = source.PixelHeight;
}
using (FactoryMaker factoryMaker = new FactoryMaker())
{
try
{
IntPtr wicFactory = factoryMaker.ImagingFactoryPtr;
HRESULT.Check(UnsafeNativeMethods.WICImagingFactory.CreateBitmapClipper(
wicFactory,
out wicClipper));
lock (_syncObject)
{
HRESULT.Check(UnsafeNativeMethods.WICBitmapClipper.Initialize(
wicClipper,
source.WicSourceHandle,
ref rect));
}
WicSourceHandle = wicClipper;
_isSourceCached = source.IsSourceCached;
wicClipper = null;
}
catch
{
_bitmapInit.Reset();
throw;
}
finally
{
if (wicClipper != null)
wicClipper.Close();
}
}
CreationCompleted = true;
UpdateCachedSettings();
}
///
/// Notification on source changing.
///
private void SourcePropertyChangedHook(DependencyPropertyChangedEventArgs e)
{
if (!e.IsASubPropertyChange)
{
BitmapSource newSource = e.NewValue as BitmapSource;
_source = newSource;
_syncObject = (newSource != null) ? newSource.SyncObject : _bitmapInit;
}
}
///
/// Notification on source rect changing.
///
private void SourceRectPropertyChangedHook(DependencyPropertyChangedEventArgs e)
{
if (!e.IsASubPropertyChange)
{
_sourceRect = (Int32Rect)e.NewValue;
}
}
///
/// Coerce Source
///
private static object CoerceSource(DependencyObject d, object value)
{
CroppedBitmap bitmap = (CroppedBitmap)d;
if (!bitmap._bitmapInit.IsInInit)
{
return bitmap._source;
}
else
{
return value;
}
}
///
/// Coerce SourceRect
///
private static object CoerceSourceRect(DependencyObject d, object value)
{
CroppedBitmap bitmap = (CroppedBitmap)d;
if (!bitmap._bitmapInit.IsInInit)
{
return bitmap._sourceRect;
}
else
{
return value;
}
}
#region Data members
private BitmapSource _source;
private Int32Rect _sourceRect;
#endregion
}
#endregion // CroppedBitmap
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation. All Rights Reserved.
//
// File: CroppedBitmap.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.Media.Animation;
using System.Windows.Media.Composition;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Imaging
{
#region CroppedBitmap
///
/// CroppedBitmap provides caching functionality for a BitmapSource.
///
public sealed partial class CroppedBitmap : Imaging.BitmapSource, ISupportInitialize
{
///
/// Constructor
///
public CroppedBitmap() : base(true)
{
}
///
/// Construct a CroppedBitmap
///
/// BitmapSource to apply to the crop to
/// Source rect of the bitmap to use
public CroppedBitmap(BitmapSource source, Int32Rect sourceRect)
: base(true) // Use base class virtuals
{
if (source == null)
{
throw new ArgumentNullException("source");
}
_bitmapInit.BeginInit();
Source = source;
SourceRect = sourceRect;
_bitmapInit.EndInit();
FinalizeCreation();
}
// ISupportInitialize
///
/// Prepare the bitmap to accept initialize paramters.
///
public void BeginInit()
{
WritePreamble();
_bitmapInit.BeginInit();
}
///
/// Prepare the bitmap to accept initialize paramters.
///
///
/// Critical - access critical resources
/// PublicOK - All inputs verified
///
[SecurityCritical ]
public void EndInit()
{
WritePreamble();
_bitmapInit.EndInit();
if (Source == null)
{
throw new InvalidOperationException(SR.Get(SRID.Image_NoArgument, "Source"));
}
FinalizeCreation();
}
private void ClonePrequel(CroppedBitmap otherCroppedBitmap)
{
BeginInit();
}
private void ClonePostscript(CroppedBitmap otherCroppedBitmap)
{
EndInit();
}
///
/// Create the unmanaged resources
///
///
/// Critical - access critical resource
///
[SecurityCritical]
internal override void FinalizeCreation()
{
_bitmapInit.EnsureInitializedComplete();
BitmapSourceSafeMILHandle wicClipper = null;
Int32Rect rect = SourceRect;
BitmapSource source = Source;
if (rect.IsEmpty)
{
rect.Width = source.PixelWidth;
rect.Height = source.PixelHeight;
}
using (FactoryMaker factoryMaker = new FactoryMaker())
{
try
{
IntPtr wicFactory = factoryMaker.ImagingFactoryPtr;
HRESULT.Check(UnsafeNativeMethods.WICImagingFactory.CreateBitmapClipper(
wicFactory,
out wicClipper));
lock (_syncObject)
{
HRESULT.Check(UnsafeNativeMethods.WICBitmapClipper.Initialize(
wicClipper,
source.WicSourceHandle,
ref rect));
}
WicSourceHandle = wicClipper;
_isSourceCached = source.IsSourceCached;
wicClipper = null;
}
catch
{
_bitmapInit.Reset();
throw;
}
finally
{
if (wicClipper != null)
wicClipper.Close();
}
}
CreationCompleted = true;
UpdateCachedSettings();
}
///
/// Notification on source changing.
///
private void SourcePropertyChangedHook(DependencyPropertyChangedEventArgs e)
{
if (!e.IsASubPropertyChange)
{
BitmapSource newSource = e.NewValue as BitmapSource;
_source = newSource;
_syncObject = (newSource != null) ? newSource.SyncObject : _bitmapInit;
}
}
///
/// Notification on source rect changing.
///
private void SourceRectPropertyChangedHook(DependencyPropertyChangedEventArgs e)
{
if (!e.IsASubPropertyChange)
{
_sourceRect = (Int32Rect)e.NewValue;
}
}
///
/// Coerce Source
///
private static object CoerceSource(DependencyObject d, object value)
{
CroppedBitmap bitmap = (CroppedBitmap)d;
if (!bitmap._bitmapInit.IsInInit)
{
return bitmap._source;
}
else
{
return value;
}
}
///
/// Coerce SourceRect
///
private static object CoerceSourceRect(DependencyObject d, object value)
{
CroppedBitmap bitmap = (CroppedBitmap)d;
if (!bitmap._bitmapInit.IsInInit)
{
return bitmap._sourceRect;
}
else
{
return value;
}
}
#region Data members
private BitmapSource _source;
private Int32Rect _sourceRect;
#endregion
}
#endregion // CroppedBitmap
}
// 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
- FloaterParagraph.cs
- CommandDevice.cs
- GridViewColumnCollectionChangedEventArgs.cs
- SchemaNotation.cs
- DataGridRowDetailsEventArgs.cs
- BlockExpression.cs
- CriticalExceptions.cs
- ListManagerBindingsCollection.cs
- OleTxTransaction.cs
- SecurityKeyUsage.cs
- SimpleFileLog.cs
- Model3DGroup.cs
- XmlCharCheckingWriter.cs
- FieldNameLookup.cs
- RuleSettings.cs
- Partitioner.cs
- CountdownEvent.cs
- NameNode.cs
- PrimaryKeyTypeConverter.cs
- ActivityDesignerResources.cs
- ISFTagAndGuidCache.cs
- CompositeKey.cs
- ToolTipService.cs
- AspNetHostingPermission.cs
- CriticalFinalizerObject.cs
- EntityDataSourceDataSelectionPanel.cs
- OperationPickerDialog.cs
- ClientRuntimeConfig.cs
- ServiceAuthorizationManager.cs
- Localizer.cs
- OutgoingWebResponseContext.cs
- MutexSecurity.cs
- Transform3DGroup.cs
- ReflectionHelper.cs
- Exceptions.cs
- TypeContext.cs
- SchemaTableColumn.cs
- BevelBitmapEffect.cs
- RegisteredHiddenField.cs
- CapabilitiesSection.cs
- Geometry3D.cs
- MultiSelector.cs
- DomainConstraint.cs
- Logging.cs
- UrlMapping.cs
- HtmlSelect.cs
- EntityDesignerDataSourceView.cs
- DataBindingValueUIHandler.cs
- IgnoreFlushAndCloseStream.cs
- SspiNegotiationTokenAuthenticatorState.cs
- XmlSchemaAll.cs
- UIElement3D.cs
- SelectorAutomationPeer.cs
- InvokeBase.cs
- SupportingTokenSecurityTokenResolver.cs
- Visual3DCollection.cs
- CounterSampleCalculator.cs
- RequestCachingSection.cs
- HorizontalAlignConverter.cs
- PageCache.cs
- Decimal.cs
- EmptyEnumerator.cs
- StrongName.cs
- RequestValidator.cs
- TimeoutHelper.cs
- Span.cs
- StyleCollection.cs
- ErrorWrapper.cs
- SmtpMail.cs
- DataGridItemCollection.cs
- BridgeDataReader.cs
- OdbcCommandBuilder.cs
- ListViewDeletedEventArgs.cs
- ScriptingAuthenticationServiceSection.cs
- AppDomain.cs
- XmlAttributeAttribute.cs
- ProfessionalColorTable.cs
- PauseStoryboard.cs
- GeometryModel3D.cs
- SystemEvents.cs
- WebCategoryAttribute.cs
- HttpWebRequestElement.cs
- TriState.cs
- SyndicationFeed.cs
- Validator.cs
- HtmlForm.cs
- UIElement.cs
- TextRangeEditLists.cs
- wmiutil.cs
- PenThread.cs
- UInt64Storage.cs
- ObjectHandle.cs
- DecimalFormatter.cs
- WebPartCancelEventArgs.cs
- Int32.cs
- ExternalCalls.cs
- Stylus.cs
- Exceptions.cs
- QueryOperator.cs
- CellParagraph.cs