Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Ink / Quad.cs / 1305600 / Quad.cs
//------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------
using System;
using System.Windows;
using System.Windows.Media;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using MS.Utility;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace MS.Internal.Ink
{
///
/// A helper structure used in StrokeNode and StrokeNodeOperation implementations
/// to store endpoints of the quad connecting two nodes of a stroke.
/// The vertices of a quad are supposed to be clockwise with points A and D located
/// on the begin node and B and C on the end one.
///
internal struct Quad
{
#region Statics
private static Quad s_empty = new Quad(new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0));
#endregion
#region API
/// Returns the static object representing an empty (unitialized) quad
internal static Quad Empty { get { return s_empty; } }
/// Constructor
internal Quad(Point a, Point b, Point c, Point d)
{
_A = a; _B = b; _C = c; _D = d;
}
/// The A vertex of the quad
internal Point A { get { return _A; } set { _A = value; } }
/// The B vertex of the quad
internal Point B { get { return _B; } set { _B = value; } }
/// The C vertex of the quad
internal Point C { get { return _C; } set { _C = value; } }
/// The D vertex of the quad
internal Point D { get { return _D; } set { _D = value; } }
// Returns quad's vertex by index where A is of the index 0, B - is 1, etc
internal Point this[int index]
{
get
{
switch (index)
{
case 0: return _A;
case 1: return _B;
case 2: return _C;
case 3: return _D;
default:
throw new IndexOutOfRangeException("index");
}
}
}
/// Tells whether the quad is invalid (empty)
internal bool IsEmpty
{
get { return (_A == _B) && (_C == _D); }
}
internal void GetPoints(List pointBuffer)
{
pointBuffer.Add(_A);
pointBuffer.Add(_B);
pointBuffer.Add(_C);
pointBuffer.Add(_D);
}
/// Returns the bounds of the quad
internal Rect Bounds
{
get { return IsEmpty ? Rect.Empty : Rect.Union(new Rect(_A, _B), new Rect(_C, _D)); }
}
#endregion
#region Fields
private Point _A;
private Point _B;
private Point _C;
private Point _D;
#endregion
}
}
// 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
- HostingEnvironment.cs
- SQLGuidStorage.cs
- initElementDictionary.cs
- XPathDocumentNavigator.cs
- DataPagerField.cs
- ApplicationActivator.cs
- TraceSection.cs
- HierarchicalDataBoundControl.cs
- BamlWriter.cs
- MultiTargetingUtil.cs
- SqlCachedBuffer.cs
- ToolStripDropDownClosingEventArgs.cs
- EnglishPluralizationService.cs
- DPCustomTypeDescriptor.cs
- Part.cs
- ConfigurationPropertyCollection.cs
- Volatile.cs
- FigureParaClient.cs
- CheckableControlBaseAdapter.cs
- AdjustableArrowCap.cs
- Permission.cs
- ScriptingScriptResourceHandlerSection.cs
- Command.cs
- PtsHost.cs
- AutoSizeToolBoxItem.cs
- PresentationTraceSources.cs
- MaxValueConverter.cs
- JoinCqlBlock.cs
- ManualResetEvent.cs
- CompositeActivityMarkupSerializer.cs
- RadialGradientBrush.cs
- CustomErrorsSection.cs
- SmtpFailedRecipientsException.cs
- Html32TextWriter.cs
- EventWaitHandleSecurity.cs
- TypeLibConverter.cs
- MdiWindowListStrip.cs
- LocalizedNameDescriptionPair.cs
- EdmComplexTypeAttribute.cs
- DaylightTime.cs
- ClientRoleProvider.cs
- CqlParser.cs
- FormatVersion.cs
- DoubleLinkListEnumerator.cs
- SettingsPropertyValueCollection.cs
- XPathDocument.cs
- MouseOverProperty.cs
- WindowsPen.cs
- DataSourceProvider.cs
- ConfigXmlSignificantWhitespace.cs
- SafeBitVector32.cs
- PolicyLevel.cs
- SamlDelegatingWriter.cs
- SplineKeyFrames.cs
- SystemDropShadowChrome.cs
- ToolStripPanelSelectionGlyph.cs
- ProcessHostServerConfig.cs
- VirtualPath.cs
- ToolStripDropDownClosedEventArgs.cs
- DataGridViewBand.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- BaseTemplatedMobileComponentEditor.cs
- UnsafeNativeMethods.cs
- BrowserCapabilitiesCompiler.cs
- DesignBindingPicker.cs
- FeatureSupport.cs
- DataPager.cs
- TextBounds.cs
- ExpressionWriter.cs
- DelegateSerializationHolder.cs
- TypeResolver.cs
- OrderedDictionary.cs
- CriticalHandle.cs
- WebPartTransformer.cs
- WmfPlaceableFileHeader.cs
- SafeNativeMethods.cs
- DataTemplateKey.cs
- MultiPropertyDescriptorGridEntry.cs
- Binding.cs
- SafeFindHandle.cs
- EventsTab.cs
- _NativeSSPI.cs
- NameSpaceEvent.cs
- OptionalColumn.cs
- StatusBar.cs
- LinkedDataMemberFieldEditor.cs
- EmptyQuery.cs
- SectionXmlInfo.cs
- Decimal.cs
- ProfilePropertyMetadata.cs
- SwitchAttribute.cs
- RenderingBiasValidation.cs
- UdpMessageProperty.cs
- Vector3DValueSerializer.cs
- ModelService.cs
- ProbeDuplex11AsyncResult.cs
- GeneralTransform2DTo3DTo2D.cs
- SendActivityDesigner.cs
- ArrayTypeMismatchException.cs
- DependencyPropertyChangedEventArgs.cs