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
- DefaultAssemblyResolver.cs
- PagesSection.cs
- FramingChannels.cs
- SignatureResourcePool.cs
- LinqDataSourceDisposeEventArgs.cs
- EventHandlersStore.cs
- AvtEvent.cs
- ListBase.cs
- SqlDataSourceView.cs
- _Rfc2616CacheValidators.cs
- InvalidOperationException.cs
- SafeRegistryHandle.cs
- UpdateTracker.cs
- XmlWriterSettings.cs
- AudioException.cs
- SequentialWorkflowHeaderFooter.cs
- JsonDeserializer.cs
- HttpModule.cs
- ExecutionEngineException.cs
- AssemblyFilter.cs
- ArglessEventHandlerProxy.cs
- EncodingTable.cs
- WebPartDisplayMode.cs
- GridView.cs
- ObsoleteAttribute.cs
- BindingsCollection.cs
- FixedDocumentSequencePaginator.cs
- DbMetaDataColumnNames.cs
- DateTimeStorage.cs
- FocusWithinProperty.cs
- DataGridCaption.cs
- UdpTransportBindingElement.cs
- StreamingContext.cs
- WorkingDirectoryEditor.cs
- ScaleTransform3D.cs
- DelegatingStream.cs
- InkCanvas.cs
- BaseParser.cs
- ListBox.cs
- ToolStripLabel.cs
- InitializationEventAttribute.cs
- OracleTransaction.cs
- ConfigurationSettings.cs
- DefaultSerializationProviderAttribute.cs
- HtmlString.cs
- TemplatePagerField.cs
- SqlAggregateChecker.cs
- DataDocumentXPathNavigator.cs
- PageRequestManager.cs
- NotifyIcon.cs
- ObjectTag.cs
- ZipIOCentralDirectoryBlock.cs
- TextTreeInsertElementUndoUnit.cs
- brushes.cs
- ViewDesigner.cs
- PaperSource.cs
- HostingEnvironmentException.cs
- QualifiedCellIdBoolean.cs
- LineSegment.cs
- RequestCacheValidator.cs
- BuildProviderAppliesToAttribute.cs
- NativeMethods.cs
- SystemIcmpV4Statistics.cs
- DesigntimeLicenseContext.cs
- BackgroundFormatInfo.cs
- MessageParameterAttribute.cs
- ConnectionStringsExpressionBuilder.cs
- SpecialNameAttribute.cs
- URLString.cs
- HttpDebugHandler.cs
- RequestBringIntoViewEventArgs.cs
- XmlSchemaExternal.cs
- MultiBindingExpression.cs
- WSTrustDec2005.cs
- SQLBinary.cs
- DispatcherOperation.cs
- MappingException.cs
- Conditional.cs
- ComponentChangingEvent.cs
- BitmapSource.cs
- EventLogPermissionHolder.cs
- HwndAppCommandInputProvider.cs
- OdbcTransaction.cs
- FixedPageProcessor.cs
- CacheAxisQuery.cs
- GridViewUpdatedEventArgs.cs
- ImageMap.cs
- ObjectDataSourceStatusEventArgs.cs
- ParseElementCollection.cs
- processwaithandle.cs
- WindowShowOrOpenTracker.cs
- LockedAssemblyCache.cs
- BitmapEffectInputData.cs
- NameObjectCollectionBase.cs
- SiteMapNode.cs
- CompositeDispatchFormatter.cs
- CatalogZone.cs
- TreeView.cs
- xdrvalidator.cs
- DataGridViewCellValueEventArgs.cs