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
- NestedContainer.cs
- XmlEntityReference.cs
- PersistenceIOParticipant.cs
- InvalidComObjectException.cs
- ToolboxItem.cs
- TableLayoutRowStyleCollection.cs
- IndicFontClient.cs
- HttpHandlerActionCollection.cs
- EventsTab.cs
- XmlBinaryReaderSession.cs
- XmlResolver.cs
- TripleDESCryptoServiceProvider.cs
- CipherData.cs
- RoutingService.cs
- RawTextInputReport.cs
- ListItemCollection.cs
- Deserializer.cs
- PointLightBase.cs
- PagedDataSource.cs
- CodeTypeReference.cs
- Resources.Designer.cs
- ContentIterators.cs
- XmlJsonWriter.cs
- CustomAttributeFormatException.cs
- mansign.cs
- CharConverter.cs
- ControlBuilderAttribute.cs
- ProviderException.cs
- Transform.cs
- SelectionItemPattern.cs
- WriteStateInfoBase.cs
- Int64KeyFrameCollection.cs
- GridViewSortEventArgs.cs
- httpserverutility.cs
- ContextInformation.cs
- PropertyTab.cs
- ContentElement.cs
- StickyNoteAnnotations.cs
- LinqDataView.cs
- TableLayout.cs
- BuildProviderUtils.cs
- CodeSnippetExpression.cs
- TrustManager.cs
- HttpCacheParams.cs
- NativeMethods.cs
- relpropertyhelper.cs
- DCSafeHandle.cs
- ConnectionPoolManager.cs
- ObjectDataSourceMethodEventArgs.cs
- IndexingContentUnit.cs
- connectionpool.cs
- ObjectStateEntry.cs
- Misc.cs
- LinkedResourceCollection.cs
- TableLayoutStyleCollection.cs
- PersonalizationState.cs
- DiscoveryUtility.cs
- HttpRawResponse.cs
- Marshal.cs
- DataGridCellAutomationPeer.cs
- MetaDataInfo.cs
- XmlIlGenerator.cs
- MappingModelBuildProvider.cs
- SimpleBitVector32.cs
- WindowsUpDown.cs
- TriggerAction.cs
- CodeGeneratorOptions.cs
- LookupNode.cs
- XsltCompileContext.cs
- Misc.cs
- StringInfo.cs
- RadioButton.cs
- ItemMap.cs
- TargetException.cs
- _NativeSSPI.cs
- PrivilegeNotHeldException.cs
- SymbolType.cs
- DependencyPropertyKey.cs
- ThreadExceptionDialog.cs
- ColumnReorderedEventArgs.cs
- ComPlusTypeValidator.cs
- ResolveResponseInfo.cs
- SqlCommandSet.cs
- FunctionImportMapping.cs
- ImageCodecInfoPrivate.cs
- SplineQuaternionKeyFrame.cs
- SafeRightsManagementEnvironmentHandle.cs
- PluralizationService.cs
- Rotation3D.cs
- TemplateAction.cs
- Directory.cs
- AttributeSetAction.cs
- FileFormatException.cs
- XmlSchemaExporter.cs
- MobileErrorInfo.cs
- ConnectionManagementElementCollection.cs
- VisualStyleInformation.cs
- DataService.cs
- _LocalDataStore.cs
- SwitchLevelAttribute.cs