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
- DataBindEngine.cs
- ListenerElementsCollection.cs
- MailAddress.cs
- DesignSurfaceServiceContainer.cs
- UnorderedHashRepartitionStream.cs
- CustomAssemblyResolver.cs
- ITreeGenerator.cs
- DoubleAnimationClockResource.cs
- DictionaryBase.cs
- ApplicationBuildProvider.cs
- SpeechRecognizer.cs
- CardSpacePolicyElement.cs
- ListSortDescription.cs
- WindowsFormsLinkLabel.cs
- WebPartMenuStyle.cs
- HttpRequestCacheValidator.cs
- ErrorTolerantObjectWriter.cs
- TextPattern.cs
- DataSourceControlBuilder.cs
- RowUpdatedEventArgs.cs
- PrinterUnitConvert.cs
- OracleCommand.cs
- CompensableActivity.cs
- XmlLanguageConverter.cs
- MatrixTransform3D.cs
- XPathExpr.cs
- TemplateBindingExtensionConverter.cs
- ContourSegment.cs
- RegexMatchCollection.cs
- InputLanguageManager.cs
- DrawingImage.cs
- StreamGeometry.cs
- Profiler.cs
- ActivityLocationReferenceEnvironment.cs
- ConfigurationManager.cs
- SecUtil.cs
- MruCache.cs
- BindingMemberInfo.cs
- PersonalizableAttribute.cs
- ButtonChrome.cs
- IssuanceLicense.cs
- XmlCharacterData.cs
- QueryCacheManager.cs
- TransformerTypeCollection.cs
- SpnegoTokenProvider.cs
- DataServiceHost.cs
- XmlSiteMapProvider.cs
- EventLogPermission.cs
- followingquery.cs
- ObservableCollection.cs
- CategoryGridEntry.cs
- SafeFileMappingHandle.cs
- AuthenticationModulesSection.cs
- TextEvent.cs
- HelloOperationCD1AsyncResult.cs
- MouseDevice.cs
- TemplateNameScope.cs
- ValidatingPropertiesEventArgs.cs
- CommandSet.cs
- GPPOINT.cs
- SectionRecord.cs
- TextCompositionEventArgs.cs
- ParserStack.cs
- TextTreeText.cs
- PageBuildProvider.cs
- GZipDecoder.cs
- SymmetricCryptoHandle.cs
- DataControlLinkButton.cs
- PageCanvasSize.cs
- ConfigurationErrorsException.cs
- HttpCacheVaryByContentEncodings.cs
- XpsFontSubsetter.cs
- Configuration.cs
- TrackBar.cs
- RangeValidator.cs
- ResourceManagerWrapper.cs
- ContextQuery.cs
- SpeechAudioFormatInfo.cs
- DbDeleteCommandTree.cs
- BitmapDecoder.cs
- XPathNodeIterator.cs
- TemplateControlCodeDomTreeGenerator.cs
- QilXmlReader.cs
- ReturnType.cs
- LogPolicy.cs
- StringResourceManager.cs
- CompModSwitches.cs
- SeekStoryboard.cs
- HierarchicalDataSourceControl.cs
- BitArray.cs
- TraceSource.cs
- ContentPathSegment.cs
- UnsafeMethods.cs
- TemplateBamlRecordReader.cs
- LabelEditEvent.cs
- TimeoutValidationAttribute.cs
- DiagnosticTraceSource.cs
- DesignerActionList.cs
- ManagementNamedValueCollection.cs
- ComponentGuaranteesAttribute.cs