public void RenderBorderBack(AGSBoundingBox square) { runAnimation(); if (!FillBackground) { return; } var slice = Slice.ToPercentage(_width, _height); var width = Width.ToPixels(_width, _height); var outset = Outset.ToPixels(_width, _height); float farLeft = square.TopLeft.X - outset.Left.Value; float farRight = square.TopRight.X + outset.Right.Value; float farTop = square.TopLeft.Y + outset.Top.Value; float farBottom = square.BottomLeft.Y - outset.Bottom.Value; var quad = new AGSBoundingBox(new Vector2(farLeft + width.Left.Value, farBottom + width.Bottom.Value), new Vector2(farRight - width.Right.Value, farBottom + width.Bottom.Value), new Vector2(farLeft + width.Left.Value, farTop - width.Top.Value), new Vector2(farRight - width.Right.Value, farTop - width.Top.Value)); drawQuad(quad, new FourCorners <Vector2> (new Vector2(slice.Left.Value, slice.Bottom.Value), new Vector2(1f - slice.Right.Value, slice.Bottom.Value), new Vector2(slice.Left.Value, 1f - slice.Top.Value), new Vector2(1f - slice.Right.Value, 1f - slice.Top.Value))); if (DrawBorderBehind) { drawBorders(square); } }
private void drawBorders(AGSBoundingBox square) { var slice = Slice.ToPercentage(_width, _height); var width = Width.ToPixels(_width, _height); var outset = Outset.ToPixels(_width, _height); float farLeft = square.TopLeft.X - outset.Left.Value; float farRight = square.TopRight.X + outset.Right.Value; float farTop = square.TopLeft.Y + outset.Top.Value; float farBottom = square.BottomLeft.Y - outset.Bottom.Value; SliceValues border = new SliceValues(SliceMeasurement.Pixels, farLeft, farRight, farTop, farBottom); drawCorners(border, slice, width); switch (Repeat) { case BorderRepeat.Repeat: case BorderRepeat.Round: case BorderRepeat.Space: drawEdges(border, slice, width, Repeat); break; case BorderRepeat.Stretch: drawStretch(border, slice, width); break; default: throw new NotSupportedException(Repeat.ToString()); } }