Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / Effects / DropShadowBitmapEffect.cs / 3 / DropShadowBitmapEffect.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2005
//
// File: BitmapEffectDropShadow.cs
//-----------------------------------------------------------------------------
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using MS.Internal.PresentationCore;
using System.Security;
#endregion
namespace System.Windows.Media.Effects
{
///
/// The class definition for DropShadowBitmapEffect
///
public partial class DropShadowBitmapEffect
{
///
/// Constructor
///
public DropShadowBitmapEffect()
{
}
///
/// Creates the unmanaged effect handle
///
unsafe protected override SafeHandle CreateUnmanagedEffect()
{
return Create(new Guid(0x459a3fbe, 0xd8ac, 0x4692, 0x87, 0x4b, 0x7a, 0x26, 0x57, 0x15, 0xaa, 0x16));
}
///
/// /// Update (propagetes) properties to the unmanaged effect
///
///
/// This method demands permission because effects should not be run
/// in partial trust.
///
/// SecurityCritical - because SetValue has a link demand
/// SecutiryTreatAsSafe - because it demans UIWindow permission
///
[SecurityCritical, SecurityTreatAsSafe]
protected override void UpdateUnmanagedPropertyState(SafeHandle unmanagedEffect)
{
SecurityHelper.DemandUIWindowPermission();
BitmapEffect.SetValue(unmanagedEffect, "Color", this.Color);
BitmapEffect.SetValue(unmanagedEffect, "ShadowDepth", this.ShadowDepth);
BitmapEffect.SetValue(unmanagedEffect, "Direction", this.Direction);
BitmapEffect.SetValue(unmanagedEffect, "Noise", this.Noise);
BitmapEffect.SetValue(unmanagedEffect, "Opacity", this.Opacity);
BitmapEffect.SetValue(unmanagedEffect, "Softness", this.Softness);
}
///
/// An ImageEffect can be used to emulate a DropShadowBitmapEffect with certain restrictions. This
/// method returns true when it is possible to emulate the DropShadowBitmapEffect using an ImageEffect.
///
internal override bool CanBeEmulatedUsingEffectPipeline()
{
return (Noise == 0.0);
}
///
/// Returns a ImageEffect that emulates this DropShadowBitmapEffect.
///
internal override Effect GetEmulatingEffect()
{
if (_imageEffectEmulation == null)
{
_imageEffectEmulation = new DropShadowEffect();
}
if (_imageEffectEmulation.Color != Color)
{
_imageEffectEmulation.Color = Color;
}
// The limits on ShadowDepth preserve existing behavior.
// A scale transform can scale the shadow depth to exceed 50.0,
// and this behavior is also handled correctly in the unmanaged layer.
if (_imageEffectEmulation.ShadowDepth != ShadowDepth)
{
if (ShadowDepth >= 50.0)
{
_imageEffectEmulation.ShadowDepth = 50.0;
}
else if (ShadowDepth < 0.0)
{
_imageEffectEmulation.ShadowDepth = 0.0;
}
else
{
_imageEffectEmulation.ShadowDepth = ShadowDepth;
}
}
if (_imageEffectEmulation.Direction != Direction)
{
_imageEffectEmulation.Direction = Direction;
}
if (_imageEffectEmulation.Opacity != Opacity)
{
if (Opacity >= 1.0)
{
_imageEffectEmulation.Opacity = 1.0;
}
else if (Opacity <= 0.0)
{
_imageEffectEmulation.Opacity = 0.0;
}
else
{
_imageEffectEmulation.Opacity = Opacity;
}
}
if (_imageEffectEmulation.BlurRadius / _MAX_EMULATED_BLUR_RADIUS != Softness)
{
if (Softness >= 1.0)
{
_imageEffectEmulation.BlurRadius = _MAX_EMULATED_BLUR_RADIUS;
}
else if (Softness <= 0.0)
{
_imageEffectEmulation.BlurRadius = 0.0;
}
else
{
_imageEffectEmulation.BlurRadius = _MAX_EMULATED_BLUR_RADIUS * Softness;
}
}
_imageEffectEmulation.RenderingBias = RenderingBias.Performance;
return _imageEffectEmulation;
}
DropShadowEffect _imageEffectEmulation;
private const double _MAX_EMULATED_BLUR_RADIUS = 25.0;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2005
//
// File: BitmapEffectDropShadow.cs
//-----------------------------------------------------------------------------
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using MS.Internal.PresentationCore;
using System.Security;
#endregion
namespace System.Windows.Media.Effects
{
///
/// The class definition for DropShadowBitmapEffect
///
public partial class DropShadowBitmapEffect
{
///
/// Constructor
///
public DropShadowBitmapEffect()
{
}
///
/// Creates the unmanaged effect handle
///
unsafe protected override SafeHandle CreateUnmanagedEffect()
{
return Create(new Guid(0x459a3fbe, 0xd8ac, 0x4692, 0x87, 0x4b, 0x7a, 0x26, 0x57, 0x15, 0xaa, 0x16));
}
///
/// /// Update (propagetes) properties to the unmanaged effect
///
///
/// This method demands permission because effects should not be run
/// in partial trust.
///
/// SecurityCritical - because SetValue has a link demand
/// SecutiryTreatAsSafe - because it demans UIWindow permission
///
[SecurityCritical, SecurityTreatAsSafe]
protected override void UpdateUnmanagedPropertyState(SafeHandle unmanagedEffect)
{
SecurityHelper.DemandUIWindowPermission();
BitmapEffect.SetValue(unmanagedEffect, "Color", this.Color);
BitmapEffect.SetValue(unmanagedEffect, "ShadowDepth", this.ShadowDepth);
BitmapEffect.SetValue(unmanagedEffect, "Direction", this.Direction);
BitmapEffect.SetValue(unmanagedEffect, "Noise", this.Noise);
BitmapEffect.SetValue(unmanagedEffect, "Opacity", this.Opacity);
BitmapEffect.SetValue(unmanagedEffect, "Softness", this.Softness);
}
///
/// An ImageEffect can be used to emulate a DropShadowBitmapEffect with certain restrictions. This
/// method returns true when it is possible to emulate the DropShadowBitmapEffect using an ImageEffect.
///
internal override bool CanBeEmulatedUsingEffectPipeline()
{
return (Noise == 0.0);
}
///
/// Returns a ImageEffect that emulates this DropShadowBitmapEffect.
///
internal override Effect GetEmulatingEffect()
{
if (_imageEffectEmulation == null)
{
_imageEffectEmulation = new DropShadowEffect();
}
if (_imageEffectEmulation.Color != Color)
{
_imageEffectEmulation.Color = Color;
}
// The limits on ShadowDepth preserve existing behavior.
// A scale transform can scale the shadow depth to exceed 50.0,
// and this behavior is also handled correctly in the unmanaged layer.
if (_imageEffectEmulation.ShadowDepth != ShadowDepth)
{
if (ShadowDepth >= 50.0)
{
_imageEffectEmulation.ShadowDepth = 50.0;
}
else if (ShadowDepth < 0.0)
{
_imageEffectEmulation.ShadowDepth = 0.0;
}
else
{
_imageEffectEmulation.ShadowDepth = ShadowDepth;
}
}
if (_imageEffectEmulation.Direction != Direction)
{
_imageEffectEmulation.Direction = Direction;
}
if (_imageEffectEmulation.Opacity != Opacity)
{
if (Opacity >= 1.0)
{
_imageEffectEmulation.Opacity = 1.0;
}
else if (Opacity <= 0.0)
{
_imageEffectEmulation.Opacity = 0.0;
}
else
{
_imageEffectEmulation.Opacity = Opacity;
}
}
if (_imageEffectEmulation.BlurRadius / _MAX_EMULATED_BLUR_RADIUS != Softness)
{
if (Softness >= 1.0)
{
_imageEffectEmulation.BlurRadius = _MAX_EMULATED_BLUR_RADIUS;
}
else if (Softness <= 0.0)
{
_imageEffectEmulation.BlurRadius = 0.0;
}
else
{
_imageEffectEmulation.BlurRadius = _MAX_EMULATED_BLUR_RADIUS * Softness;
}
}
_imageEffectEmulation.RenderingBias = RenderingBias.Performance;
return _imageEffectEmulation;
}
DropShadowEffect _imageEffectEmulation;
private const double _MAX_EMULATED_BLUR_RADIUS = 25.0;
}
}
// 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
- XmlMemberMapping.cs
- SmtpException.cs
- ContainerUtilities.cs
- InitializationEventAttribute.cs
- PersistChildrenAttribute.cs
- SHA1CryptoServiceProvider.cs
- TableItemStyle.cs
- CodeRegionDirective.cs
- DependencyPropertyAttribute.cs
- DesignerResources.cs
- GlyphInfoList.cs
- UriSection.cs
- FixedTextPointer.cs
- SqlXml.cs
- HwndHostAutomationPeer.cs
- ImmComposition.cs
- HeaderCollection.cs
- XmlIgnoreAttribute.cs
- ControlHelper.cs
- followingquery.cs
- Label.cs
- SymmetricKeyWrap.cs
- HScrollProperties.cs
- HashHelpers.cs
- WebUtility.cs
- WinEventQueueItem.cs
- DataGridViewButtonColumn.cs
- PropertyMappingExceptionEventArgs.cs
- HostingEnvironmentWrapper.cs
- GeometryConverter.cs
- TripleDESCryptoServiceProvider.cs
- invalidudtexception.cs
- JoinTreeSlot.cs
- CompressedStack.cs
- BinaryReader.cs
- ScriptControlManager.cs
- DynamicFilterExpression.cs
- ArrayWithOffset.cs
- FontStretchConverter.cs
- shaper.cs
- RegexCompilationInfo.cs
- RuntimeEnvironment.cs
- LZCodec.cs
- ExpressionEvaluator.cs
- ReflectPropertyDescriptor.cs
- MimeReflector.cs
- TimeoutStream.cs
- GuidTagList.cs
- EncoderFallback.cs
- ByteStorage.cs
- OleDbConnection.cs
- DBConcurrencyException.cs
- CodePropertyReferenceExpression.cs
- ProcessModelSection.cs
- LocalTransaction.cs
- HtmlTableRow.cs
- DropDownList.cs
- QueryTask.cs
- SmtpFailedRecipientException.cs
- Vector3DKeyFrameCollection.cs
- _ListenerRequestStream.cs
- TextElementCollection.cs
- JournalEntryStack.cs
- PointConverter.cs
- ErrorFormatterPage.cs
- EnvironmentPermission.cs
- ExchangeUtilities.cs
- XmlSecureResolver.cs
- StrokeDescriptor.cs
- BasicSecurityProfileVersion.cs
- ProviderConnectionPoint.cs
- CheckoutException.cs
- EventLogStatus.cs
- TerminatorSinks.cs
- Errors.cs
- TypeNameParser.cs
- Stack.cs
- DbTypeMap.cs
- ImportCatalogPart.cs
- HttpException.cs
- ObjectRef.cs
- sqlpipe.cs
- PageWrapper.cs
- ListView.cs
- _ProxyChain.cs
- BitmapSourceSafeMILHandle.cs
- QilList.cs
- FrameworkTemplate.cs
- oledbconnectionstring.cs
- CollectionContainer.cs
- SoapFormatterSinks.cs
- Assembly.cs
- IntegerValidatorAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- DockAndAnchorLayout.cs
- DesignBindingPicker.cs
- GPPOINTF.cs
- StyleXamlTreeBuilder.cs
- CorrelationManager.cs
- XsdDuration.cs