Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / Geometry3D.cs / 1305600 / Geometry3D.cs
//----------------------------------------------------------------------------
//
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// History:
// 6/10/2004 : [....] - Created
//
//---------------------------------------------------------------------------
using MS.Internal.Media3D;
using System;
using System.Diagnostics;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
namespace System.Windows.Media.Media3D
{
///
/// This is the base class for all 3D geometry classes. A geometry has
/// bounds and can be rendered with a GeometryModel3D.
///
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] // cannot be read & localized as string
public abstract partial class Geometry3D : Animatable, DUCE.IResource
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
// Prevent 3rd parties from extending this abstract base class.
internal Geometry3D() {}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
///
/// Gets bounds for this Geometry3D.
///
public abstract Rect3D Bounds { get; }
#endregion Public Methods
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
// NOTE: Geometry3D hit testing takes the rayParams in the outer space of the
// Geometry3D. That is, RayHitTest() will apply this geometry's
// transform to the ray for the caller.
//
// This is different than Visual hit testing which does not transform
// the hit testing parameters by the Visual's transform.
internal void RayHitTest(RayHitTestParameters rayParams, FaceType facesToHit)
{
Debug.Assert(facesToHit != FaceType.None,
"Caller should make sure we're trying to hit something");
Rect3D bounds = Bounds;
if (bounds.IsEmpty)
{
return;
}
//
Point3D origin;
Vector3D direction;
rayParams.GetLocalLine(out origin, out direction);
if (LineUtil.ComputeLineBoxIntersection(ref origin, ref direction, ref bounds, rayParams.IsRay))
{
RayHitTestCore(rayParams, facesToHit);
}
//
}
internal abstract void RayHitTestCore(RayHitTestParameters rayParams, FaceType hitTestableFaces);
#endregion Internal Methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------------
//
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// History:
// 6/10/2004 : [....] - Created
//
//---------------------------------------------------------------------------
using MS.Internal.Media3D;
using System;
using System.Diagnostics;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
namespace System.Windows.Media.Media3D
{
///
/// This is the base class for all 3D geometry classes. A geometry has
/// bounds and can be rendered with a GeometryModel3D.
///
[Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] // cannot be read & localized as string
public abstract partial class Geometry3D : Animatable, DUCE.IResource
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
// Prevent 3rd parties from extending this abstract base class.
internal Geometry3D() {}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
///
/// Gets bounds for this Geometry3D.
///
public abstract Rect3D Bounds { get; }
#endregion Public Methods
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
// NOTE: Geometry3D hit testing takes the rayParams in the outer space of the
// Geometry3D. That is, RayHitTest() will apply this geometry's
// transform to the ray for the caller.
//
// This is different than Visual hit testing which does not transform
// the hit testing parameters by the Visual's transform.
internal void RayHitTest(RayHitTestParameters rayParams, FaceType facesToHit)
{
Debug.Assert(facesToHit != FaceType.None,
"Caller should make sure we're trying to hit something");
Rect3D bounds = Bounds;
if (bounds.IsEmpty)
{
return;
}
//
Point3D origin;
Vector3D direction;
rayParams.GetLocalLine(out origin, out direction);
if (LineUtil.ComputeLineBoxIntersection(ref origin, ref direction, ref bounds, rayParams.IsRay))
{
RayHitTestCore(rayParams, facesToHit);
}
//
}
internal abstract void RayHitTestCore(RayHitTestParameters rayParams, FaceType hitTestableFaces);
#endregion Internal Methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptingRoleServiceSection.cs
- ContentPresenter.cs
- WindowsSolidBrush.cs
- TreeIterator.cs
- SamlAssertionKeyIdentifierClause.cs
- VisualStateChangedEventArgs.cs
- XmlStreamStore.cs
- XpsFilter.cs
- HostingEnvironmentSection.cs
- TransformGroup.cs
- HtmlTableCell.cs
- GroupBox.cs
- HtmlInputSubmit.cs
- QuaternionConverter.cs
- XamlTreeBuilderBamlRecordWriter.cs
- ReadOnlyDictionary.cs
- DataControlFieldCell.cs
- SplayTreeNode.cs
- SoapCodeExporter.cs
- VisualBasicReference.cs
- MTConfigUtil.cs
- MarkupCompilePass2.cs
- ToReply.cs
- _emptywebproxy.cs
- BindToObject.cs
- safex509handles.cs
- TreeNodeClickEventArgs.cs
- HttpClientCertificate.cs
- Lease.cs
- DataGrid.cs
- AssertFilter.cs
- ReachBasicContext.cs
- TableLayoutSettingsTypeConverter.cs
- ProgressBar.cs
- SecurityChannelFaultConverter.cs
- ToolStripItemTextRenderEventArgs.cs
- RenderDataDrawingContext.cs
- ComponentResourceKey.cs
- BamlBinaryReader.cs
- OleDbCommand.cs
- NewItemsContextMenuStrip.cs
- FolderBrowserDialog.cs
- HttpDebugHandler.cs
- SystemParameters.cs
- RenamedEventArgs.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- DependencyObjectProvider.cs
- SchemaImporter.cs
- ZipIOExtraField.cs
- RijndaelCryptoServiceProvider.cs
- NavigationExpr.cs
- CodeAttributeDeclarationCollection.cs
- DataRecord.cs
- QilXmlWriter.cs
- PaginationProgressEventArgs.cs
- DataFormats.cs
- WindowsToolbarItemAsMenuItem.cs
- ValidationSummary.cs
- DefaultTextStoreTextComposition.cs
- EnumerableRowCollection.cs
- TabletCollection.cs
- SubMenuStyle.cs
- securestring.cs
- ResourcePermissionBase.cs
- DataGridViewMethods.cs
- ComponentResourceKey.cs
- Accessible.cs
- Translator.cs
- MarkupCompiler.cs
- CacheEntry.cs
- DbConnectionPoolOptions.cs
- WindowsProgressbar.cs
- SqlPersonalizationProvider.cs
- DateTimeSerializationSection.cs
- SiteMapPathDesigner.cs
- JsonFormatMapping.cs
- ResourceExpressionEditorSheet.cs
- NamedPipeTransportBindingElement.cs
- ParentUndoUnit.cs
- _NegoStream.cs
- WorkflowTransactionOptions.cs
- ProxyHwnd.cs
- Certificate.cs
- Positioning.cs
- ExpressionBindingCollection.cs
- ObjectReaderCompiler.cs
- TableHeaderCell.cs
- PageVisual.cs
- DataAccessor.cs
- FeatureManager.cs
- OdbcError.cs
- QilInvoke.cs
- LoginCancelEventArgs.cs
- ConfigurationLocation.cs
- WebRequest.cs
- StrokeFIndices.cs
- FunctionMappingTranslator.cs
- SubtreeProcessor.cs
- CompoundFileStreamReference.cs
- Window.cs