Beispiel #1
0
        public IHitTestObject HitTest(HitTestPointData hitData, bool testTickLines)
        {
            if (!testTickLines)
            {
                var mainAxisPoints = _cachedMainLinePointsUsedForHitTesting;
                if (null != mainAxisPoints)
                {
                    if (hitData.IsHit(mainAxisPoints, _axisPen.Thickness1, _axisPen.Thickness2))
                    {
                        return(new HitTestObject(
                                   new PolylineObjectOutline(_axisPen.Thickness1, _axisPen.Thickness2, mainAxisPoints, hitData.WorldTransformation),
                                   this,
                                   hitData.WorldTransformation));
                    }
                }
            }
            else // Test Tick lines
            {
                // test major ticks for hit
                if (null != _cachedMajorTickLinesUsedForHitTesting)
                {
                    foreach (var line in _cachedMajorTickLinesUsedForHitTesting)
                    {
                        if (hitData.IsHit(line, _majorTickPen.Thickness1, _majorTickPen.Thickness2))
                        {
                            return(new HitTestObject(
                                       new MultipleSingleLinesObjectOutline(_majorTickPen.Thickness1, _majorTickPen.Thickness2, _cachedMajorTickLinesUsedForHitTesting, hitData.WorldTransformation),
                                       this,
                                       hitData.WorldTransformation));
                        }
                    }
                }
                // test minor ticks for hit
                if (null != _cachedMinorTickLinesUsedForHitTesting)
                {
                    foreach (var line in _cachedMinorTickLinesUsedForHitTesting)
                    {
                        if (hitData.IsHit(line, _minorTickPen.Thickness1, _majorTickPen.Thickness2))
                        {
                            return(new HitTestObject(
                                       new MultipleSingleLinesObjectOutline(_minorTickPen.Thickness1, _minorTickPen.Thickness2, _cachedMinorTickLinesUsedForHitTesting, hitData.WorldTransformation),
                                       this,
                                       hitData.WorldTransformation));
                        }
                    }
                }
            }

            return(null);
        }
            /// <summary>
            /// Determines whether the grip is hit by the current mouse position.
            /// </summary>
            /// <param name="mousePosition">The mouse position (hit ray).</param>
            /// <returns></returns>
            public bool IsGripHit(HitTestPointData mousePosition)
            {
                var vec  = new VectorD3D(_gripRadius, _gripRadius, _gripRadius);
                var rect = new RectangleD3D(_gripCenter - vec, 2 * vec);

                return(mousePosition.IsHit(rect, out var z));
            }
			/// <summary>
			/// Determines whether the grip is hit by the current mouse position.
			/// </summary>
			/// <param name="mousePosition">The mouse position (hit ray).</param>
			/// <returns></returns>
			public bool IsGripHit(HitTestPointData mousePosition)
			{
				var vec = new VectorD3D(_gripRadius, _gripRadius, _gripRadius);
				var rect = new RectangleD3D(_gripCenter - vec, 2 * vec);

				double z;
				return mousePosition.IsHit(rect, out z);
			}
Beispiel #4
0
		public IHitTestObject HitTest(HitTestPointData hitData, bool testTickLines)
		{
			if (!testTickLines)
			{
				var mainAxisPoints = _cachedMainLinePointsUsedForHitTesting;
				if (null != mainAxisPoints)
				{
					if (hitData.IsHit(mainAxisPoints, _axisPen.Thickness1, _axisPen.Thickness2))
						return new HitTestObject(
							new PolylineObjectOutline(_axisPen.Thickness1, _axisPen.Thickness2, mainAxisPoints, hitData.WorldTransformation),
							this,
							hitData.WorldTransformation);
				}
			}
			else // Test Tick lines
			{
				// test major ticks for hit
				if (null != _cachedMajorTickLinesUsedForHitTesting)
				{
					foreach (var line in _cachedMajorTickLinesUsedForHitTesting)
					{
						if (hitData.IsHit(line, _majorTickPen.Thickness1, _majorTickPen.Thickness2))
							return new HitTestObject(
								new MultipleSingleLinesObjectOutline(_majorTickPen.Thickness1, _majorTickPen.Thickness2, _cachedMajorTickLinesUsedForHitTesting, hitData.WorldTransformation),
								this,
								hitData.WorldTransformation);
					}
				}
				// test minor ticks for hit
				if (null != _cachedMinorTickLinesUsedForHitTesting)
				{
					foreach (var line in _cachedMinorTickLinesUsedForHitTesting)
					{
						if (hitData.IsHit(line, _minorTickPen.Thickness1, _majorTickPen.Thickness2))
							return new HitTestObject(
								new MultipleSingleLinesObjectOutline(_minorTickPen.Thickness1, _minorTickPen.Thickness2, _cachedMinorTickLinesUsedForHitTesting, hitData.WorldTransformation),
								this,
								hitData.WorldTransformation);
					}
				}
			}

			return null;
		}