Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / RadialGradientBrush.cs / 1305600 / RadialGradientBrush.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Description: This file contains the implementation of RadialGradientBrush.
// The RadialGradientBrush is a GradientBrush which defines its
// Gradient as a radial interpolation within an Ellipse.
//
// History:
// 05/08/2003 : [....] - Created it.
// 09/21/2004 : timothyc - Added GradientStopCollection constructor.
//
//---------------------------------------------------------------------------
using MS.Internal;
using MS.Internal.PresentationCore;
using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Security;
using System.Security.Permissions;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media
{
///
/// RadialGradientBrush - This GradientBrush defines its Gradient as an interpolation
/// within an Ellipse.
///
public sealed partial class RadialGradientBrush : GradientBrush
{
#region Constructors
///
/// Default constructor for RadialGradientBrush. The resulting brush has no content.
///
public RadialGradientBrush() : base()
{
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with two colors specified for GradientStops at
/// offsets 0.0 and 1.0.
///
/// The Color at offset 0.0.
/// The Color at offset 1.0.
public RadialGradientBrush(Color startColor,
Color endColor) : base()
{
GradientStops.Add(new GradientStop(startColor, 0.0));
GradientStops.Add(new GradientStop(endColor, 1.0));
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with GradientStops set to the passed-in
/// collection.
///
/// GradientStopCollection to set on this brush.
public RadialGradientBrush(GradientStopCollection gradientStopCollection)
: base(gradientStopCollection)
{
}
#endregion Constructors
///
/// Critical: This code acceses an unsafe code block
/// TreatAsSafe: This does not expose any data uses all local variables.
/// Sending instructions to the channel is considered a safe operation.Also
/// all calls to copybytes have been verified so the operation is safe
///
[SecurityCritical,SecurityTreatAsSafe]
private void ManualUpdateResource(DUCE.Channel channel, bool skipOnChannelCheck)
{
// If we're told we can skip the channel check, then we must be on channel
Debug.Assert(!skipOnChannelCheck || _duceResource.IsOnChannel(channel));
if (skipOnChannelCheck || _duceResource.IsOnChannel(channel))
{
Transform vTransform = Transform;
Transform vRelativeTransform = RelativeTransform;
GradientStopCollection vGradientStops = GradientStops;
DUCE.ResourceHandle hTransform;
if (vTransform == null ||
Object.ReferenceEquals(vTransform, Transform.Identity)
)
{
hTransform = DUCE.ResourceHandle.Null;
}
else
{
hTransform = ((DUCE.IResource)vTransform).GetHandle(channel);
}
DUCE.ResourceHandle hRelativeTransform;
if (vRelativeTransform == null ||
Object.ReferenceEquals(vRelativeTransform, Transform.Identity)
)
{
hRelativeTransform = DUCE.ResourceHandle.Null;
}
else
{
hRelativeTransform = ((DUCE.IResource)vRelativeTransform).GetHandle(channel);
}
DUCE.ResourceHandle hOpacityAnimations = GetAnimationResourceHandle(OpacityProperty, channel);
DUCE.ResourceHandle hCenterAnimations = GetAnimationResourceHandle(CenterProperty, channel);
DUCE.ResourceHandle hRadiusXAnimations = GetAnimationResourceHandle(RadiusXProperty, channel);
DUCE.ResourceHandle hRadiusYAnimations = GetAnimationResourceHandle(RadiusYProperty, channel);
DUCE.ResourceHandle hGradientOriginAnimations = GetAnimationResourceHandle(GradientOriginProperty, channel);
DUCE.MILCMD_RADIALGRADIENTBRUSH data;
unsafe
{
data.Type = MILCMD.MilCmdRadialGradientBrush;
data.Handle = _duceResource.GetHandle(channel);
double tempOpacity = Opacity;
DUCE.CopyBytes((byte*)&data.Opacity, (byte*)&tempOpacity, 8);
data.hOpacityAnimations = hOpacityAnimations;
data.hTransform = hTransform;
data.hRelativeTransform = hRelativeTransform;
data.ColorInterpolationMode = ColorInterpolationMode;
data.MappingMode = MappingMode;
data.SpreadMethod = SpreadMethod;
Point tempCenter = Center;
DUCE.CopyBytes((byte*)&data.Center, (byte*)&tempCenter, 16);
data.hCenterAnimations = hCenterAnimations;
double tempRadiusX = RadiusX;
DUCE.CopyBytes((byte*)&data.RadiusX, (byte*)&tempRadiusX, 8);
data.hRadiusXAnimations = hRadiusXAnimations;
double tempRadiusY = RadiusY;
DUCE.CopyBytes((byte*)&data.RadiusY, (byte*)&tempRadiusY, 8);
data.hRadiusYAnimations = hRadiusYAnimations;
Point tempGradientOrigin = GradientOrigin;
DUCE.CopyBytes((byte*)&data.GradientOrigin, (byte*)&tempGradientOrigin, 16);
data.hGradientOriginAnimations = hGradientOriginAnimations;
// NTRAID#Longhorn-1011154-2004/8/12-asecchia GradientStopCollection: Need to enforce upper-limit of gradient stop capacity
int count = (vGradientStops == null) ? 0 : vGradientStops.Count;
data.GradientStopsSize = (UInt32)(sizeof(DUCE.MIL_GRADIENTSTOP)*count);
channel.BeginCommand(
(byte*)&data,
sizeof(DUCE.MILCMD_RADIALGRADIENTBRUSH),
sizeof(DUCE.MIL_GRADIENTSTOP)*count
);
for (int i=0; i
/// RadialGradientBrush - This GradientBrush defines its Gradient as an interpolation
/// within an Ellipse.
///
public sealed partial class RadialGradientBrush : GradientBrush
{
#region Constructors
///
/// Default constructor for RadialGradientBrush. The resulting brush has no content.
///
public RadialGradientBrush() : base()
{
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with two colors specified for GradientStops at
/// offsets 0.0 and 1.0.
///
/// The Color at offset 0.0.
/// The Color at offset 1.0.
public RadialGradientBrush(Color startColor,
Color endColor) : base()
{
GradientStops.Add(new GradientStop(startColor, 0.0));
GradientStops.Add(new GradientStop(endColor, 1.0));
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with GradientStops set to the passed-in
/// collection.
///
/// GradientStopCollection to set on this brush.
public RadialGradientBrush(GradientStopCollection gradientStopCollection)
: base(gradientStopCollection)
{
}
#endregion Constructors
///
/// Critical: This code acceses an unsafe code block
/// TreatAsSafe: This does not expose any data uses all local variables.
/// Sending instructions to the channel is considered a safe operation.Also
/// all calls to copybytes have been verified so the operation is safe
///
[SecurityCritical,SecurityTreatAsSafe]
private void ManualUpdateResource(DUCE.Channel channel, bool skipOnChannelCheck)
{
// If we're told we can skip the channel check, then we must be on channel
Debug.Assert(!skipOnChannelCheck || _duceResource.IsOnChannel(channel));
if (skipOnChannelCheck || _duceResource.IsOnChannel(channel))
{
Transform vTransform = Transform;
Transform vRelativeTransform = RelativeTransform;
GradientStopCollection vGradientStops = GradientStops;
DUCE.ResourceHandle hTransform;
if (vTransform == null ||
Object.ReferenceEquals(vTransform, Transform.Identity)
)
{
hTransform = DUCE.ResourceHandle.Null;
}
else
{
hTransform = ((DUCE.IResource)vTransform).GetHandle(channel);
}
DUCE.ResourceHandle hRelativeTransform;
if (vRelativeTransform == null ||
Object.ReferenceEquals(vRelativeTransform, Transform.Identity)
)
{
hRelativeTransform = DUCE.ResourceHandle.Null;
}
else
{
hRelativeTransform = ((DUCE.IResource)vRelativeTransform).GetHandle(channel);
}
DUCE.ResourceHandle hOpacityAnimations = GetAnimationResourceHandle(OpacityProperty, channel);
DUCE.ResourceHandle hCenterAnimations = GetAnimationResourceHandle(CenterProperty, channel);
DUCE.ResourceHandle hRadiusXAnimations = GetAnimationResourceHandle(RadiusXProperty, channel);
DUCE.ResourceHandle hRadiusYAnimations = GetAnimationResourceHandle(RadiusYProperty, channel);
DUCE.ResourceHandle hGradientOriginAnimations = GetAnimationResourceHandle(GradientOriginProperty, channel);
DUCE.MILCMD_RADIALGRADIENTBRUSH data;
unsafe
{
data.Type = MILCMD.MilCmdRadialGradientBrush;
data.Handle = _duceResource.GetHandle(channel);
double tempOpacity = Opacity;
DUCE.CopyBytes((byte*)&data.Opacity, (byte*)&tempOpacity, 8);
data.hOpacityAnimations = hOpacityAnimations;
data.hTransform = hTransform;
data.hRelativeTransform = hRelativeTransform;
data.ColorInterpolationMode = ColorInterpolationMode;
data.MappingMode = MappingMode;
data.SpreadMethod = SpreadMethod;
Point tempCenter = Center;
DUCE.CopyBytes((byte*)&data.Center, (byte*)&tempCenter, 16);
data.hCenterAnimations = hCenterAnimations;
double tempRadiusX = RadiusX;
DUCE.CopyBytes((byte*)&data.RadiusX, (byte*)&tempRadiusX, 8);
data.hRadiusXAnimations = hRadiusXAnimations;
double tempRadiusY = RadiusY;
DUCE.CopyBytes((byte*)&data.RadiusY, (byte*)&tempRadiusY, 8);
data.hRadiusYAnimations = hRadiusYAnimations;
Point tempGradientOrigin = GradientOrigin;
DUCE.CopyBytes((byte*)&data.GradientOrigin, (byte*)&tempGradientOrigin, 16);
data.hGradientOriginAnimations = hGradientOriginAnimations;
// NTRAID#Longhorn-1011154-2004/8/12-asecchia GradientStopCollection: Need to enforce upper-limit of gradient stop capacity
int count = (vGradientStops == null) ? 0 : vGradientStops.Count;
data.GradientStopsSize = (UInt32)(sizeof(DUCE.MIL_GRADIENTSTOP)*count);
channel.BeginCommand(
(byte*)&data,
sizeof(DUCE.MILCMD_RADIALGRADIENTBRUSH),
sizeof(DUCE.MIL_GRADIENTSTOP)*count
);
for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ping.cs
- ToolStripDropDownDesigner.cs
- HighlightVisual.cs
- SelectionEditingBehavior.cs
- FrameworkReadOnlyPropertyMetadata.cs
- DataErrorValidationRule.cs
- ConfigurationLoader.cs
- Rect3DConverter.cs
- DbConnectionPool.cs
- ArgumentElement.cs
- UnitySerializationHolder.cs
- FrameworkElementFactoryMarkupObject.cs
- MenuTracker.cs
- ServicePointManagerElement.cs
- WebPartDisplayModeCancelEventArgs.cs
- BlurEffect.cs
- HttpModulesSection.cs
- ToolZoneDesigner.cs
- UIHelper.cs
- NetPipeSection.cs
- AspNetRouteServiceHttpHandler.cs
- TransactionManager.cs
- ButtonStandardAdapter.cs
- SoapExtensionTypeElement.cs
- DictionaryMarkupSerializer.cs
- SignedXmlDebugLog.cs
- OperationParameterInfo.cs
- Utils.cs
- ISAPIRuntime.cs
- CreateUserErrorEventArgs.cs
- TextPointerBase.cs
- ProviderSettings.cs
- TrackingLocation.cs
- validation.cs
- CodeMemberField.cs
- EventBuilder.cs
- SchemaImporter.cs
- ScriptResourceAttribute.cs
- CompilationSection.cs
- JsonByteArrayDataContract.cs
- RangeContentEnumerator.cs
- DataGridViewCellLinkedList.cs
- TreeNodeEventArgs.cs
- EncoderFallback.cs
- SafeEventHandle.cs
- ClientRuntimeConfig.cs
- ParameterCollection.cs
- UriWriter.cs
- ActivityMarkupSerializer.cs
- ConsoleTraceListener.cs
- ManifestSignatureInformation.cs
- CompositeActivityMarkupSerializer.cs
- ObjectDataSourceStatusEventArgs.cs
- StringHandle.cs
- ScriptReference.cs
- BrowserInteropHelper.cs
- SharedPersonalizationStateInfo.cs
- ListItemCollection.cs
- TreeViewCancelEvent.cs
- SearchForVirtualItemEventArgs.cs
- SimpleRecyclingCache.cs
- ResourceContainer.cs
- contentDescriptor.cs
- TextRangeSerialization.cs
- VectorCollectionConverter.cs
- ValidationErrorCollection.cs
- CacheOutputQuery.cs
- ParameterElement.cs
- PeerNeighborManager.cs
- PageThemeParser.cs
- SecurityKeyIdentifier.cs
- CommandBinding.cs
- SplitterCancelEvent.cs
- EntityDesignerDataSourceView.cs
- WindowsRichEdit.cs
- QueryInterceptorAttribute.cs
- AtomMaterializer.cs
- ConstrainedGroup.cs
- HwndAppCommandInputProvider.cs
- ValidationRule.cs
- XPathPatternBuilder.cs
- RuntimeArgumentHandle.cs
- DataGridViewRowStateChangedEventArgs.cs
- WindowsListView.cs
- CodeVariableReferenceExpression.cs
- Item.cs
- MessageBox.cs
- UnsafeNativeMethods.cs
- GridViewPageEventArgs.cs
- SiteMapNodeItemEventArgs.cs
- ChildrenQuery.cs
- SHA512.cs
- CasesDictionary.cs
- FilterQuery.cs
- BitmapEffectInput.cs
- StatusBarItemAutomationPeer.cs
- MulticastDelegate.cs
- PagedDataSource.cs
- PathStreamGeometryContext.cs
- FilterElement.cs