5 using SiliconStudio.Core;
6 using SiliconStudio.Core.Mathematics;
7 using SiliconStudio.Paradox.UI.Controls;
9 namespace SiliconStudio.Paradox.UI.Renderers
23 base.RenderColor(element, context);
28 var border = (
Border)element;
30 var borderThickness = border.BorderThickness;
31 var elementHalfBorders = borderThickness / 2;
32 var elementSize = element.RenderSizeInternal;
33 var elementHalfSize = elementSize / 2;
36 offsets =
new Vector3(-elementHalfSize.X + elementHalfBorders.Left, 0, -elementHalfSize.Z + elementHalfBorders.Back);
37 borderSize =
new Vector3(borderThickness.Left, elementSize.Y, borderThickness.Back);
38 DrawBorder(border, ref offsets, ref borderSize, context);
41 offsets =
new Vector3(elementHalfSize.X - elementHalfBorders.Right, 0, -elementHalfSize.Z + elementHalfBorders.Back);
42 borderSize =
new Vector3(borderThickness.Right, elementSize.Y, borderThickness.Back);
43 DrawBorder(border, ref offsets, ref borderSize, context);
46 offsets =
new Vector3(0, -elementHalfSize.Y + elementHalfBorders.Top, -elementHalfSize.Z + elementHalfBorders.Back);
47 borderSize =
new Vector3(elementSize.X, borderThickness.Top, borderThickness.Back);
48 DrawBorder(border, ref offsets, ref borderSize, context);
51 offsets =
new Vector3(0, elementHalfSize.Y - elementHalfBorders.Bottom, -elementHalfSize.Z + elementHalfBorders.Back);
52 borderSize =
new Vector3(elementSize.X, borderThickness.Bottom, borderThickness.Back);
53 DrawBorder(border, ref offsets, ref borderSize, context);
59 offsets =
new Vector3(-elementHalfSize.X + elementHalfBorders.Left, 0, elementHalfSize.Z - elementHalfBorders.Front);
60 borderSize =
new Vector3(borderThickness.Left, elementSize.Y, borderThickness.Front);
61 DrawBorder(border, ref offsets, ref borderSize, context);
64 offsets =
new Vector3(elementHalfSize.X - elementHalfBorders.Right, 0, elementHalfSize.Z - elementHalfBorders.Front);
65 borderSize =
new Vector3(borderThickness.Right, elementSize.Y, borderThickness.Front);
66 DrawBorder(border, ref offsets, ref borderSize, context);
69 offsets =
new Vector3(0, -elementHalfSize.Y + elementHalfBorders.Top, elementHalfSize.Z - elementHalfBorders.Front);
70 borderSize =
new Vector3(elementSize.X, borderThickness.Top, borderThickness.Front);
71 DrawBorder(border, ref offsets, ref borderSize, context);
74 offsets =
new Vector3(0, elementHalfSize.Y - elementHalfBorders.Bottom, elementHalfSize.Z - elementHalfBorders.Front);
75 borderSize =
new Vector3(elementSize.X, borderThickness.Bottom, borderThickness.Front);
76 DrawBorder(border, ref offsets, ref borderSize, context);
79 offsets =
new Vector3(-elementHalfSize.X + elementHalfBorders.Left, -elementHalfSize.Y + elementHalfBorders.Top, 0);
80 borderSize =
new Vector3(borderThickness.Left, borderThickness.Top, elementSize.Z);
81 DrawBorder(border, ref offsets, ref borderSize, context);
84 offsets =
new Vector3(elementHalfSize.X - elementHalfBorders.Right, -elementHalfSize.Y + elementHalfBorders.Top, 0);
85 borderSize =
new Vector3(borderThickness.Right, borderThickness.Top, elementSize.Z);
86 DrawBorder(border, ref offsets, ref borderSize, context);
89 offsets =
new Vector3(-elementHalfSize.X + elementHalfBorders.Left, elementHalfSize.Y - elementHalfBorders.Bottom, 0);
90 borderSize =
new Vector3(borderThickness.Left, borderThickness.Bottom, elementSize.Z);
91 DrawBorder(border, ref offsets, ref borderSize, context);
94 offsets =
new Vector3(elementHalfSize.X - elementHalfBorders.Right, elementHalfSize.Y - elementHalfBorders.Bottom, 0);
95 borderSize =
new Vector3(borderThickness.Right, borderThickness.Bottom, elementSize.Z);
96 DrawBorder(border, ref offsets, ref borderSize, context);
102 var worldMatrix = border.WorldMatrixInternal;
103 worldMatrix.M41 += worldMatrix.M11 * offsets.X + worldMatrix.M21 * offsets.Y + worldMatrix.M31 * offsets.Z;
104 worldMatrix.M42 += worldMatrix.M12 * offsets.X + worldMatrix.M22 * offsets.Y + worldMatrix.M32 * offsets.Z;
105 worldMatrix.M43 += worldMatrix.M13 * offsets.X + worldMatrix.M23 * offsets.Y + worldMatrix.M33 * offsets.Z;
106 Batch.DrawCube(ref worldMatrix, ref borderSize, ref border.BorderColorInternal, context.DepthBias);
Provides a base class for all the User Interface elements in Paradox applications.
A border element adds an uniform color border around its content.
const float ZeroTolerance
The value for which all absolute numbers smaller than are considered equal to zero.
Represents a three dimensional mathematical vector.
A service registry is a IServiceProvider that provides methods to register and unregister services...
Base class for UI element renderers
The default renderer for Border.
SiliconStudio.Core.Mathematics.Vector3 Vector3
The UI drawing context. It provides information about how to render UIElements for drawing...
override void RenderColor(UIElement element, UIRenderingContext context)
Render the provided UIElement.
DefaultBorderRenderer(IServiceRegistry services)