Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media / Effects / DropShadowBitmapEffect.cs / 1 / 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
- RuleSettingsCollection.cs
- CachedRequestParams.cs
- SqlUserDefinedAggregateAttribute.cs
- CodeExpressionCollection.cs
- MsmqIntegrationOutputChannel.cs
- ResourceDescriptionAttribute.cs
- PerformanceCountersElement.cs
- BaseValidatorDesigner.cs
- TerminatorSinks.cs
- FileNameEditor.cs
- ConstraintEnumerator.cs
- __Filters.cs
- Ref.cs
- XPathScanner.cs
- ControlEvent.cs
- ToolStripHighContrastRenderer.cs
- CapabilitiesRule.cs
- ExpressionVisitor.cs
- ResourceCategoryAttribute.cs
- UIElement3DAutomationPeer.cs
- XmlSchemaComplexType.cs
- HashCoreRequest.cs
- NotCondition.cs
- InternalBufferOverflowException.cs
- PageHandlerFactory.cs
- httpapplicationstate.cs
- WmlCommandAdapter.cs
- SHA384.cs
- ScriptReferenceBase.cs
- Base64Stream.cs
- TemplateControl.cs
- ViewGenerator.cs
- AppSettingsExpressionBuilder.cs
- DataGridViewRowCollection.cs
- CFStream.cs
- ClassicBorderDecorator.cs
- XmlSchemaImporter.cs
- QuaternionKeyFrameCollection.cs
- TypeGeneratedEventArgs.cs
- FormParameter.cs
- PersonalizationProviderCollection.cs
- EmbeddedMailObjectsCollection.cs
- WebConfigurationManager.cs
- AnnouncementSendsAsyncResult.cs
- ZoneIdentityPermission.cs
- filewebrequest.cs
- DbConnectionStringBuilder.cs
- RtfControlWordInfo.cs
- EntityTypeBase.cs
- NativeRightsManagementAPIsStructures.cs
- PropertySet.cs
- WebPartCollection.cs
- RegistryKey.cs
- SessionStateUtil.cs
- GeneralTransformCollection.cs
- AsyncPostBackErrorEventArgs.cs
- ApplicationHost.cs
- TransformGroup.cs
- JsonFaultDetail.cs
- ConfigurationManager.cs
- ByteAnimationBase.cs
- XPathDocumentIterator.cs
- DocumentCollection.cs
- DataGridViewColumnHeaderCell.cs
- DialogResultConverter.cs
- TemplateBindingExtensionConverter.cs
- UInt32Converter.cs
- ContentPosition.cs
- _NegoState.cs
- CodeGroup.cs
- SequentialOutput.cs
- StylusPointPropertyInfo.cs
- CollectionBuilder.cs
- FileResponseElement.cs
- SqlStream.cs
- M3DUtil.cs
- NumberFunctions.cs
- Win32KeyboardDevice.cs
- DataObjectFieldAttribute.cs
- FormParameter.cs
- ComplexPropertyEntry.cs
- RowCache.cs
- RequestBringIntoViewEventArgs.cs
- WebPartConnectionsConnectVerb.cs
- SmtpAuthenticationManager.cs
- DetailsViewRow.cs
- SmtpAuthenticationManager.cs
- XmlSiteMapProvider.cs
- DataReceivedEventArgs.cs
- WebPartHeaderCloseVerb.cs
- DataGridTemplateColumn.cs
- IISUnsafeMethods.cs
- DataGridViewCellStyleConverter.cs
- HandledMouseEvent.cs
- RandomNumberGenerator.cs
- ToolStripItemRenderEventArgs.cs
- HashHelper.cs
- safemediahandle.cs
- DiffuseMaterial.cs
- StylusDownEventArgs.cs