Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media3D / MaterialGroup.cs / 1 / MaterialGroup.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Material group
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Markup;
using MS.Internal;
using MS.Internal.Media3D;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Media3D
{
///
/// Material group
///
[ContentProperty("Children")]
public sealed partial class MaterialGroup : Material
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Default constructor.
///
public MaterialGroup() {}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
#endregion Public Methods
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
// If a child changes or is added/removed to this,
// that will fire changed which will mark the GeometryModel3D
// containing this as DirtyForPreCompute which will
// cause PreCompute() to be called on us.
//
// Thus, we don't need to override OnChanged() and update
// _requiresRealization here in MaterialGroup.
internal override bool PreCompute()
{
_requiresRealization = false;
MaterialCollection children = Children;
if (children != null)
{
int count = children.Count;
for (int i = 0; i < count; i++)
{
// Can't early exit on first 'true' because PreCompute
// does work that's necessary for every Material that
// has text in it
_requiresRealization |= children.Internal_GetItem(i).PreCompute();
}
}
return _requiresRealization;
}
internal override void UpdateRealizations(
RealizationContext ctx,
ref Rect bounds
)
{
Debug.Assert(_requiresRealization);
MaterialCollection children = Children;
if (children != null)
{
int count = children.Count;
for (int i = 0; i < count; i++)
{
Material material = children.Internal_GetItem(i);
if (material.RequiresRealization)
{
material.UpdateRealizations(ctx, ref bounds);
}
}
}
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Properties
internal override bool RequiresRealization
{
get
{
return _requiresRealization;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private bool _requiresRealization = false;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Material group
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Markup;
using MS.Internal;
using MS.Internal.Media3D;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.Media3D
{
///
/// Material group
///
[ContentProperty("Children")]
public sealed partial class MaterialGroup : Material
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Default constructor.
///
public MaterialGroup() {}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
#endregion Public Methods
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
// If a child changes or is added/removed to this,
// that will fire changed which will mark the GeometryModel3D
// containing this as DirtyForPreCompute which will
// cause PreCompute() to be called on us.
//
// Thus, we don't need to override OnChanged() and update
// _requiresRealization here in MaterialGroup.
internal override bool PreCompute()
{
_requiresRealization = false;
MaterialCollection children = Children;
if (children != null)
{
int count = children.Count;
for (int i = 0; i < count; i++)
{
// Can't early exit on first 'true' because PreCompute
// does work that's necessary for every Material that
// has text in it
_requiresRealization |= children.Internal_GetItem(i).PreCompute();
}
}
return _requiresRealization;
}
internal override void UpdateRealizations(
RealizationContext ctx,
ref Rect bounds
)
{
Debug.Assert(_requiresRealization);
MaterialCollection children = Children;
if (children != null)
{
int count = children.Count;
for (int i = 0; i < count; i++)
{
Material material = children.Internal_GetItem(i);
if (material.RequiresRealization)
{
material.UpdateRealizations(ctx, ref bounds);
}
}
}
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Properties
internal override bool RequiresRealization
{
get
{
return _requiresRealization;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private bool _requiresRealization = false;
#endregion Private Fields
}
}
// 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
- SamlAudienceRestrictionCondition.cs
- XPathArrayIterator.cs
- StorageComplexPropertyMapping.cs
- mactripleDES.cs
- MatrixKeyFrameCollection.cs
- SqlAliaser.cs
- OdbcCommandBuilder.cs
- DefaultParameterValueAttribute.cs
- Size3D.cs
- ResolveCriteria11.cs
- DirectoryObjectSecurity.cs
- BaseAddressPrefixFilterElement.cs
- _DomainName.cs
- FieldInfo.cs
- TextDecoration.cs
- SecurityManager.cs
- WebPartConnectionsCloseVerb.cs
- EntityViewGenerator.cs
- OverlappedAsyncResult.cs
- HttpListenerRequest.cs
- XmlQueryStaticData.cs
- WindowsAltTab.cs
- DefaultValueAttribute.cs
- SimpleMailWebEventProvider.cs
- LocalizeDesigner.cs
- ApplicationActivator.cs
- WebEncodingValidator.cs
- HttpServerVarsCollection.cs
- ConsoleCancelEventArgs.cs
- ImpersonationContext.cs
- SafeCryptoHandles.cs
- OdbcConnection.cs
- As.cs
- Executor.cs
- IndicShape.cs
- EmptyCollection.cs
- WebPartVerb.cs
- WindowsListViewScroll.cs
- SQLDecimal.cs
- Run.cs
- BaseCollection.cs
- ValidationSummaryDesigner.cs
- Win32SafeHandles.cs
- ExpressionBuilder.cs
- GlyphRunDrawing.cs
- SiteIdentityPermission.cs
- RegisteredExpandoAttribute.cs
- PageThemeBuildProvider.cs
- MaskedTextBox.cs
- MaskedTextProvider.cs
- XmlValidatingReader.cs
- TextTreeUndo.cs
- ListView.cs
- TrackingProfileCache.cs
- SqlDependency.cs
- WSDualHttpBindingElement.cs
- SmtpException.cs
- PngBitmapEncoder.cs
- OutputScope.cs
- OperationCanceledException.cs
- WizardForm.cs
- ToolStripSeparatorRenderEventArgs.cs
- HttpRawResponse.cs
- ItemCheckEvent.cs
- HtmlInputSubmit.cs
- WebRequestModulesSection.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ButtonPopupAdapter.cs
- SourceSwitch.cs
- SaveFileDialog.cs
- DisplayNameAttribute.cs
- ListItemCollection.cs
- lengthconverter.cs
- MetadataSource.cs
- NextPreviousPagerField.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- HttpCacheVary.cs
- ProcessModelSection.cs
- ProfessionalColors.cs
- MessageContractImporter.cs
- PatternMatcher.cs
- ScriptMethodAttribute.cs
- UnauthorizedAccessException.cs
- DataGridViewTextBoxCell.cs
- DiscreteKeyFrames.cs
- ContextStaticAttribute.cs
- ModifyActivitiesPropertyDescriptor.cs
- MenuStrip.cs
- RtfToken.cs
- CellPartitioner.cs
- NavigationEventArgs.cs
- MembershipPasswordException.cs
- SwitchAttribute.cs
- PageTheme.cs
- ApplicationSecurityInfo.cs
- LowerCaseStringConverter.cs
- TemplateBamlTreeBuilder.cs
- PolyQuadraticBezierSegment.cs
- DrawingCollection.cs
- SerializationObjectManager.cs