public void UpdateGeometries() { float halfWidth = Size.X / 2, halfHeight = Size.Y / 2; BorderRect.Left = Center.X - halfWidth; BorderRect.Right = Center.X + halfWidth; BorderRect.Top = Center.Y - halfHeight; BorderRect.Bottom = Center.Y + halfHeight; if (BorderWidth > 0) { ContentRect.Left = BorderRect.Left + BorderWidth; ContentRect.Right = BorderRect.Right - BorderWidth; ContentRect.Top = BorderRect.Top + BorderWidth; ContentRect.Bottom = BorderRect.Bottom - BorderWidth; } else { ContentRect = BorderRect; } DualFlickerRects = new [] { new RawRectangleF(ContentRect.Left, ContentRect.Top, ContentRect.Left + ContentRect.Width() / 2, ContentRect.Bottom), new RawRectangleF(ContentRect.Left + ContentRect.Width() / 2, ContentRect.Top, ContentRect.Right, ContentRect.Bottom), }; CenterPointEllipse = new SharpDX.Direct2D1.Ellipse(Center, FixationPointSize, FixationPointSize); }
// ReSharper disable once CompareOfFloatsByEqualityOperator public static RawRectangleF CenteredSizeScale(this RawRectangleF rect, float scale) { if (scale == 1) { return(rect); } var halfDeltaWidth = rect.Width() * (scale - 1) / 2; var halfDeltaHeight = rect.Height() * (scale - 1) / 2; return(new RawRectangleF(rect.Left - halfDeltaWidth, rect.Top - halfDeltaHeight, rect.Right + halfDeltaWidth, rect.Bottom + halfDeltaHeight)); }