Replace QVec2 with OpenTK.Mathematics.Vector2.
This commit is contained in:
parent
1301868269
commit
42782b8a71
@ -1,11 +1,12 @@
|
|||||||
using BlurgText;
|
using BlurgText;
|
||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.BlurgText
|
namespace Dashboard.BlurgText
|
||||||
{
|
{
|
||||||
public static class BlurgCommand
|
public static class BlurgCommand
|
||||||
{
|
{
|
||||||
public static void PutBlurgText(this DrawList list, DashboardBlurg blurg, BlurgResult result, QVec2 origin)
|
public static void PutBlurgText(this DrawList list, DashboardBlurg blurg, BlurgResult result, Vector2 origin)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < result.Count; i++)
|
for (int i = 0; i < result.Count; i++)
|
||||||
{
|
{
|
||||||
@ -13,8 +14,8 @@ namespace Dashboard.BlurgText
|
|||||||
|
|
||||||
QRectangle pos = new QRectangle()
|
QRectangle pos = new QRectangle()
|
||||||
{
|
{
|
||||||
Min = origin + new QVec2(rect.X, rect.Y),
|
Min = origin + new Vector2(rect.X, rect.Y),
|
||||||
Size = new QVec2(rect.Width, rect.Height)
|
Size = new Vector2(rect.Width, rect.Height)
|
||||||
};
|
};
|
||||||
|
|
||||||
QRectangle uv = new QRectangle(rect.U1, rect.V1, rect.U0, rect.V0);
|
QRectangle uv = new QRectangle(rect.U1, rect.V1, rect.U0, rect.V0);
|
||||||
|
@ -4,6 +4,7 @@ using System.IO;
|
|||||||
using ReFuel.FreeType;
|
using ReFuel.FreeType;
|
||||||
using Dashboard.Media.Color;
|
using Dashboard.Media.Color;
|
||||||
using Dashboard.Media.Font;
|
using Dashboard.Media.Font;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Media.Defaults
|
namespace Dashboard.Media.Defaults
|
||||||
{
|
{
|
||||||
@ -40,10 +41,10 @@ namespace Dashboard.Media.Defaults
|
|||||||
|
|
||||||
ref readonly FTGlyphMetrics ftmetrics = ref face.Glyph.Metrics;
|
ref readonly FTGlyphMetrics ftmetrics = ref face.Glyph.Metrics;
|
||||||
metrics = new QGlyphMetrics(codepoint,
|
metrics = new QGlyphMetrics(codepoint,
|
||||||
new QVec2(ftmetrics.Width/64f, ftmetrics.Height/64f),
|
new Vector2(ftmetrics.Width/64f, ftmetrics.Height/64f),
|
||||||
new QVec2(ftmetrics.HorizontalBearingX/64f, ftmetrics.HorizontalBearingY/64f),
|
new Vector2(ftmetrics.HorizontalBearingX/64f, ftmetrics.HorizontalBearingY/64f),
|
||||||
new QVec2(ftmetrics.VerticalBearingX/64f, ftmetrics.VerticalBearingY/64f),
|
new Vector2(ftmetrics.VerticalBearingX/64f, ftmetrics.VerticalBearingY/64f),
|
||||||
new QVec2(ftmetrics.HorizontalAdvance/64f, ftmetrics.VerticalAdvance/64f)
|
new Vector2(ftmetrics.HorizontalAdvance/64f, ftmetrics.VerticalAdvance/64f)
|
||||||
);
|
);
|
||||||
|
|
||||||
FT.RenderGlyph(face.Glyph, options.Sdf ? FTRenderMode.Sdf : FTRenderMode.Normal);
|
FT.RenderGlyph(face.Glyph, options.Sdf ? FTRenderMode.Sdf : FTRenderMode.Normal);
|
||||||
|
@ -2,6 +2,7 @@ using Dashboard.ImmediateDraw;
|
|||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
using Dashboard.PAL;
|
using Dashboard.PAL;
|
||||||
using OpenTK.Graphics.OpenGL4;
|
using OpenTK.Graphics.OpenGL4;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
using OpenTK.Windowing.Desktop;
|
using OpenTK.Windowing.Desktop;
|
||||||
using OpenTK.Windowing.GraphicsLibraryFramework;
|
using OpenTK.Windowing.GraphicsLibraryFramework;
|
||||||
using System;
|
using System;
|
||||||
@ -68,13 +69,13 @@ namespace Dashboard.OpenTK
|
|||||||
|
|
||||||
public void PortSetTitle(IDashHandle port, string title) => ((OpenTKPort)port).Title = title;
|
public void PortSetTitle(IDashHandle port, string title) => ((OpenTKPort)port).Title = title;
|
||||||
|
|
||||||
public QVec2 PortGetSize(IDashHandle port) => ((OpenTKPort)port).Size;
|
public Vector2 PortGetSize(IDashHandle port) => ((OpenTKPort)port).Size;
|
||||||
|
|
||||||
public void PortSetSize(IDashHandle port, QVec2 size) => ((OpenTKPort)port).Size = size;
|
public void PortSetSize(IDashHandle port, Vector2 size) => ((OpenTKPort)port).Size = size;
|
||||||
|
|
||||||
public QVec2 PortGetPosition(IDashHandle port) => ((OpenTKPort)port).Position;
|
public Vector2 PortGetPosition(IDashHandle port) => ((OpenTKPort)port).Position;
|
||||||
|
|
||||||
public void PortSetPosition(IDashHandle port, QVec2 position) => ((OpenTKPort)port).Position = position;
|
public void PortSetPosition(IDashHandle port, Vector2 position) => ((OpenTKPort)port).Position = position;
|
||||||
|
|
||||||
public bool PortIsValid(IDashHandle port) => ((OpenTKPort)port).IsValid;
|
public bool PortIsValid(IDashHandle port) => ((OpenTKPort)port).IsValid;
|
||||||
|
|
||||||
|
@ -21,12 +21,12 @@ namespace Dashboard.OpenTK
|
|||||||
set => _window.Title = value;
|
set => _window.Title = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Size
|
public Vector2 Size
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
Vector2i size = _window.ClientSize;
|
Vector2i size = _window.ClientSize;
|
||||||
return new QVec2(size.X, size.Y);
|
return new Vector2(size.X, size.Y);
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
@ -36,12 +36,12 @@ namespace Dashboard.OpenTK
|
|||||||
_window.Size = size;
|
_window.Size = size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public QVec2 Position
|
public Vector2 Position
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
Vector2i location = _window.Location;
|
Vector2i location = _window.Location;
|
||||||
return new QVec2(location.X, location.Y);
|
return new Vector2(location.X, location.Y);
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
@ -68,7 +68,7 @@ namespace Dashboard.OpenTK
|
|||||||
|
|
||||||
public void Paint(DrawList queue)
|
public void Paint(DrawList queue)
|
||||||
{
|
{
|
||||||
QRectangle view = new QRectangle(Size, new QVec2(0, 0));
|
QRectangle view = new QRectangle(Size, new Vector2(0, 0));
|
||||||
|
|
||||||
_vertexEngine.Reset();
|
_vertexEngine.Reset();
|
||||||
_vertexEngine.ProcessCommands(view, queue);
|
_vertexEngine.ProcessCommands(view, queue);
|
||||||
|
@ -3,6 +3,7 @@ using System.Collections;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Controls
|
namespace Dashboard.Controls
|
||||||
{
|
{
|
||||||
@ -52,16 +53,16 @@ namespace Dashboard.Controls
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Flows a row of children.
|
// Flows a row of children.
|
||||||
private void FlowRow(List<Control> line, QVec2 offset, QVec2 size, float packedWidth)
|
private void FlowRow(List<Control> line, Vector2 offset, Vector2 size, float packedWidth)
|
||||||
{
|
{
|
||||||
QVec2 pointer = offset;
|
Vector2 pointer = offset;
|
||||||
|
|
||||||
pointer.X += hstart();
|
pointer.X += hstart();
|
||||||
|
|
||||||
foreach (Control child in line)
|
foreach (Control child in line)
|
||||||
{
|
{
|
||||||
child.Position = pointer;
|
child.Position = pointer;
|
||||||
pointer += new QVec2(child.Size.X + hoffset(child), voffset(child));
|
pointer += new Vector2(child.Size.X + hoffset(child), voffset(child));
|
||||||
}
|
}
|
||||||
|
|
||||||
float hstart()
|
float hstart()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
using Dashboard.Typography;
|
using Dashboard.Typography;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Controls
|
namespace Dashboard.Controls
|
||||||
{
|
{
|
||||||
@ -15,7 +16,7 @@ namespace Dashboard.Controls
|
|||||||
{
|
{
|
||||||
if (AutoSize)
|
if (AutoSize)
|
||||||
{
|
{
|
||||||
QVec2 size = Typesetter.MeasureHorizontal(Text, TextSize, Font!);
|
Vector2 size = Typesetter.MeasureHorizontal(Text, TextSize, Font!);
|
||||||
Size = size;
|
Size = size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,7 +24,7 @@ namespace Dashboard.Controls
|
|||||||
protected override void ValidateVisual(DrawList cmd)
|
protected override void ValidateVisual(DrawList cmd)
|
||||||
{
|
{
|
||||||
float padding = Padding;
|
float padding = Padding;
|
||||||
QVec2 origin = new QVec2(padding, padding);
|
Vector2 origin = new Vector2(padding, padding);
|
||||||
|
|
||||||
cmd.TypesetHorizontalDirect(Text, origin, TextSize, Font!);
|
cmd.TypesetHorizontalDirect(Text, origin, TextSize, Font!);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Controls
|
namespace Dashboard.Controls
|
||||||
{
|
{
|
||||||
@ -9,7 +10,7 @@ namespace Dashboard.Controls
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class UIBase
|
public abstract class UIBase
|
||||||
{
|
{
|
||||||
private QVec2 size;
|
private Vector2 size;
|
||||||
|
|
||||||
public UIBase? Parent { get; protected set; }
|
public UIBase? Parent { get; protected set; }
|
||||||
public string? Id { get; set; }
|
public string? Id { get; set; }
|
||||||
@ -23,14 +24,14 @@ namespace Dashboard.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Position { get; set; }
|
public Vector2 Position { get; set; }
|
||||||
|
|
||||||
public QVec2 Size
|
public Vector2 Size
|
||||||
{
|
{
|
||||||
get => size;
|
get => size;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
QVec2 oldSize = size;
|
Vector2 oldSize = size;
|
||||||
size = value;
|
size = value;
|
||||||
|
|
||||||
OnResized(this, new ResizedEventArgs(size, oldSize));
|
OnResized(this, new ResizedEventArgs(size, oldSize));
|
||||||
@ -52,11 +53,11 @@ namespace Dashboard.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 MaximumSize { get; set; } = new QVec2(-1, -1);
|
public Vector2 MaximumSize { get; set; } = new Vector2(-1, -1);
|
||||||
public QVec2 MinimumSize { get; set; } = new QVec2(-1, -1);
|
public Vector2 MinimumSize { get; set; } = new Vector2(-1, -1);
|
||||||
|
|
||||||
public bool IsMaximumSizeSet => MaximumSize != new QVec2(-1, -1);
|
public bool IsMaximumSizeSet => MaximumSize != new Vector2(-1, -1);
|
||||||
public bool IsMinimumSizeSet => MinimumSize != new QVec2(-1, -1);
|
public bool IsMinimumSizeSet => MinimumSize != new Vector2(-1, -1);
|
||||||
|
|
||||||
public virtual void NotifyEvent(object? sender, EventArgs args)
|
public virtual void NotifyEvent(object? sender, EventArgs args)
|
||||||
{
|
{
|
||||||
@ -90,10 +91,10 @@ namespace Dashboard.Controls
|
|||||||
|
|
||||||
public class ResizedEventArgs : EventArgs
|
public class ResizedEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public QVec2 NewSize { get; }
|
public Vector2 NewSize { get; }
|
||||||
public QVec2 OldSize { get; }
|
public Vector2 OldSize { get; }
|
||||||
|
|
||||||
public ResizedEventArgs(QVec2 newSize, QVec2 oldSize)
|
public ResizedEventArgs(Vector2 newSize, Vector2 oldSize)
|
||||||
{
|
{
|
||||||
NewSize = newSize;
|
NewSize = newSize;
|
||||||
OldSize = oldSize;
|
OldSize = oldSize;
|
||||||
|
@ -1,103 +1,9 @@
|
|||||||
|
using OpenTK.Mathematics;
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace Dashboard
|
namespace Dashboard
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// A 2 dimensional Vector.
|
|
||||||
/// </summary>
|
|
||||||
[DebuggerDisplay("({X}, {Y})")]
|
|
||||||
public struct QVec2
|
|
||||||
{
|
|
||||||
public float X;
|
|
||||||
public float Y;
|
|
||||||
|
|
||||||
public float Magnitude => MathF.Sqrt(X * X + Y * Y);
|
|
||||||
|
|
||||||
public QVec2(float x, float y)
|
|
||||||
{
|
|
||||||
X = x;
|
|
||||||
Y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public QVec2 Normalize() => this * (1.0f / Magnitude);
|
|
||||||
|
|
||||||
public float Atan2() => MathF.Atan2(Y, X);
|
|
||||||
public static QVec2 operator +(QVec2 a, QVec2 b)
|
|
||||||
{
|
|
||||||
return new QVec2()
|
|
||||||
{
|
|
||||||
X = a.X + b.X,
|
|
||||||
Y = a.Y + b.Y
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QVec2 operator -(QVec2 a)
|
|
||||||
{
|
|
||||||
return new QVec2()
|
|
||||||
{
|
|
||||||
X = -a.X,
|
|
||||||
Y = -a.Y
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QVec2 operator -(QVec2 a, QVec2 b)
|
|
||||||
{
|
|
||||||
return new QVec2()
|
|
||||||
{
|
|
||||||
X = a.X - b.X,
|
|
||||||
Y = a.Y - b.Y
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QVec2 operator *(float a, QVec2 b)
|
|
||||||
{
|
|
||||||
return new QVec2()
|
|
||||||
{
|
|
||||||
X = a * b.X,
|
|
||||||
Y = a * b.Y
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QVec2 operator *(QVec2 a, float b) => b * a;
|
|
||||||
|
|
||||||
public static bool operator ==(QVec2 a, QVec2 b) => a.X == b.X && a.Y == b.Y;
|
|
||||||
|
|
||||||
public static bool operator !=(QVec2 a, QVec2 b) => a.X != b.X || a.Y != b.Y;
|
|
||||||
|
|
||||||
public override bool Equals(object? obj)
|
|
||||||
{
|
|
||||||
if (obj is QVec2)
|
|
||||||
{
|
|
||||||
return (QVec2) obj == this;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetHashCode()
|
|
||||||
{
|
|
||||||
return 63671 * X.GetHashCode() ^ 81083 * Y.GetHashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float Dot(QVec2 a, QVec2 b)
|
|
||||||
{
|
|
||||||
return a.X * b.X + a.Y * b.Y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return $"({X}; {Y})";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly QVec2 Zero = new QVec2(0, 0);
|
|
||||||
public static readonly QVec2 UnitX = new QVec2(1, 0);
|
|
||||||
public static readonly QVec2 UnitY = new QVec2(0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A RGBA color value.
|
/// A RGBA color value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -213,31 +119,31 @@ namespace Dashboard
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Segment start point.
|
/// Segment start point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Start;
|
public Vector2 Start;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start point control point.
|
/// Start point control point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 ControlA;
|
public Vector2 ControlA;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// End point control point.
|
/// End point control point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 ControlB;
|
public Vector2 ControlB;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Segment end point.
|
/// Segment end point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 End;
|
public Vector2 End;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An approximation of the arc length of the bezier curve, for calculating rasterization resolution.
|
/// An approximation of the arc length of the bezier curve, for calculating rasterization resolution.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RasterizationArc =>
|
public float RasterizationArc =>
|
||||||
0.5f * (End - Start).Magnitude +
|
0.5f * (End - Start).Length +
|
||||||
0.5f * ((ControlA - Start).Magnitude + (ControlB - ControlA).Magnitude + (End - ControlB).Magnitude);
|
0.5f * ((ControlA - Start).Length + (ControlB - ControlA).Length + (End - ControlB).Length);
|
||||||
|
|
||||||
public QBezier(QVec2 start, QVec2 controlA, QVec2 controlB, QVec2 end)
|
public QBezier(Vector2 start, Vector2 controlA, Vector2 controlB, Vector2 end)
|
||||||
{
|
{
|
||||||
Start = start;
|
Start = start;
|
||||||
ControlA = controlA;
|
ControlA = controlA;
|
||||||
@ -255,10 +161,10 @@ namespace Dashboard
|
|||||||
float endX,
|
float endX,
|
||||||
float endY)
|
float endY)
|
||||||
: this(
|
: this(
|
||||||
new QVec2(startX, startY),
|
new Vector2(startX, startY),
|
||||||
new QVec2(controlAx, controlAy),
|
new Vector2(controlAx, controlAy),
|
||||||
new QVec2(controlBx, controlBy),
|
new Vector2(controlBx, controlBy),
|
||||||
new QVec2(endX, endY))
|
new Vector2(endX, endY))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,7 +173,7 @@ namespace Dashboard
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="t">Control parameter (between 0 and 1)</param>
|
/// <param name="t">Control parameter (between 0 and 1)</param>
|
||||||
/// <returns>The point on the curve.</returns>
|
/// <returns>The point on the curve.</returns>
|
||||||
public QVec2 GetBezierPoint(float t)
|
public Vector2 GetBezierPoint(float t)
|
||||||
{
|
{
|
||||||
float T = 1 - t;
|
float T = 1 - t;
|
||||||
return
|
return
|
||||||
@ -282,7 +188,7 @@ namespace Dashboard
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="t">Control parameter (between 0 and 1)</param>
|
/// <param name="t">Control parameter (between 0 and 1)</param>
|
||||||
/// <returns>The tangent curve.</returns>
|
/// <returns>The tangent curve.</returns>
|
||||||
public QVec2 GetBezierTangent(float t)
|
public Vector2 GetBezierTangent(float t)
|
||||||
{
|
{
|
||||||
float T = 1 - t;
|
float T = 1 - t;
|
||||||
return
|
return
|
||||||
@ -290,13 +196,13 @@ namespace Dashboard
|
|||||||
3 * T * T * (ControlA - Start) +
|
3 * T * T * (ControlA - Start) +
|
||||||
6 * T * t * (ControlB - ControlA) +
|
6 * T * t * (ControlB - ControlA) +
|
||||||
3 * t * t * (End - ControlB)
|
3 * t * t * (End - ControlB)
|
||||||
).Normalize();
|
).Normalized();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal QVec2 GetBezierNormal(float t)
|
internal Vector2 GetBezierNormal(float t)
|
||||||
{
|
{
|
||||||
QVec2 tangent = GetBezierTangent(t);
|
Vector2 tangent = GetBezierTangent(t);
|
||||||
return new QVec2(-tangent.Y, tangent.X);
|
return new Vector2(-tangent.Y, tangent.X);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,14 +215,14 @@ namespace Dashboard
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start point.
|
/// Start point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Start;
|
public Vector2 Start;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// End point.
|
/// End point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 End;
|
public Vector2 End;
|
||||||
|
|
||||||
public QLine(QVec2 start, QVec2 end)
|
public QLine(Vector2 start, Vector2 end)
|
||||||
{
|
{
|
||||||
Start = start;
|
Start = start;
|
||||||
End = end;
|
End = end;
|
||||||
@ -330,14 +236,14 @@ namespace Dashboard
|
|||||||
End.Y = endY;
|
End.Y = endY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Normal()
|
public Vector2 Normal()
|
||||||
{
|
{
|
||||||
QVec2 tangent = Tangent();
|
Vector2 tangent = Tangent();
|
||||||
return new QVec2(-tangent.Y, tangent.X);
|
return new Vector2(-tangent.Y, tangent.X);
|
||||||
}
|
}
|
||||||
public QVec2 Tangent()
|
public Vector2 Tangent()
|
||||||
{
|
{
|
||||||
return (End - Start).Normalize();
|
return (End - Start).Normalized();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,12 +256,12 @@ namespace Dashboard
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Position maximum point.
|
/// Position maximum point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Max;
|
public Vector2 Max;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Position minimum point.
|
/// Position minimum point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Min;
|
public Vector2 Min;
|
||||||
|
|
||||||
public float Left
|
public float Left
|
||||||
{
|
{
|
||||||
@ -381,13 +287,13 @@ namespace Dashboard
|
|||||||
set => Max.Y = value;
|
set => Max.Y = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Size
|
public Vector2 Size
|
||||||
{
|
{
|
||||||
get => Max - Min;
|
get => Max - Min;
|
||||||
set => Max = Min + value;
|
set => Max = Min + value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QRectangle(QVec2 max, QVec2 min)
|
public QRectangle(Vector2 max, Vector2 min)
|
||||||
{
|
{
|
||||||
Max = max;
|
Max = max;
|
||||||
Min = min;
|
Min = min;
|
||||||
@ -395,18 +301,18 @@ namespace Dashboard
|
|||||||
|
|
||||||
public QRectangle(float r, float b, float l, float t)
|
public QRectangle(float r, float b, float l, float t)
|
||||||
{
|
{
|
||||||
Max = new QVec2() {X = r, Y = b};
|
Max = new Vector2(r, b);
|
||||||
Min = new QVec2() {X = l, Y = t};
|
Min = new Vector2(l, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Contains(QVec2 point)
|
public bool Contains(Vector2 point)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
point.X > Left && point.X < Right &&
|
point.X > Left && point.X < Right &&
|
||||||
point.Y > Bottom && point.Y < Top;
|
point.Y > Bottom && point.Y < Top;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Translate(in QVec2 offset)
|
internal void Translate(in Vector2 offset)
|
||||||
{
|
{
|
||||||
Min += offset;
|
Min += offset;
|
||||||
Max += offset;
|
Max += offset;
|
||||||
@ -431,17 +337,17 @@ namespace Dashboard
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ellipse center point.
|
/// Ellipse center point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Center;
|
public Vector2 Center;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// First ellipse axis.
|
/// First ellipse axis.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 AxisA;
|
public Vector2 AxisA;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Second ellipse axis.
|
/// Second ellipse axis.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 AxisB;
|
public Vector2 AxisB;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -453,17 +359,17 @@ namespace Dashboard
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// First vertex.
|
/// First vertex.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 A;
|
public Vector2 A;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Second vertex.
|
/// Second vertex.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 B;
|
public Vector2 B;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Third vertex.
|
/// Third vertex.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 C;
|
public Vector2 C;
|
||||||
}
|
}
|
||||||
|
|
||||||
[DebuggerDisplay("[{M11} {M12} {M13} {M14}; {M21} {M22} {M23} {M24}; {M31} {M32} {M33} {M34}; {M41} {M42} {M43} {M44}]")]
|
[DebuggerDisplay("[{M11} {M12} {M13} {M14}; {M21} {M22} {M23} {M24}; {M31} {M32} {M33} {M34}; {M41} {M42} {M43} {M44}]")]
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -221,11 +222,11 @@ namespace Dashboard.ImmediateDraw
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Polygon(params QVec2[] polygon)
|
public void Polygon(params Vector2[] polygon)
|
||||||
{
|
{
|
||||||
Enqueue(Command.Polygon);
|
Enqueue(Command.Polygon);
|
||||||
Enqueue((Frame)polygon.Length);
|
Enqueue((Frame)polygon.Length);
|
||||||
foreach (QVec2 vertex in polygon)
|
foreach (Vector2 vertex in polygon)
|
||||||
{
|
{
|
||||||
Enqueue(vertex);
|
Enqueue(vertex);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.ImmediateDraw
|
namespace Dashboard.ImmediateDraw
|
||||||
{
|
{
|
||||||
@ -281,7 +282,7 @@ namespace Dashboard.ImmediateDraw
|
|||||||
return (Command)frame._i1;
|
return (Command)frame._i1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static explicit operator QVec2(in Frame frame)
|
public static explicit operator Vector2(in Frame frame)
|
||||||
{
|
{
|
||||||
switch (frame.Type)
|
switch (frame.Type)
|
||||||
{
|
{
|
||||||
@ -290,11 +291,11 @@ namespace Dashboard.ImmediateDraw
|
|||||||
case FrameType.IVec2:
|
case FrameType.IVec2:
|
||||||
case FrameType.IVec3:
|
case FrameType.IVec3:
|
||||||
case FrameType.IVec4:
|
case FrameType.IVec4:
|
||||||
return new QVec2(frame._i1, frame._i2);
|
return new Vector2(frame._i1, frame._i2);
|
||||||
case FrameType.Vec2:
|
case FrameType.Vec2:
|
||||||
case FrameType.Vec3:
|
case FrameType.Vec3:
|
||||||
case FrameType.Vec4:
|
case FrameType.Vec4:
|
||||||
return new QVec2(frame._f1, frame._f2);
|
return new Vector2(frame._f1, frame._f2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +337,7 @@ namespace Dashboard.ImmediateDraw
|
|||||||
public static explicit operator Frame(int i) => new Frame(i);
|
public static explicit operator Frame(int i) => new Frame(i);
|
||||||
public static explicit operator Frame(float f) => new Frame(f);
|
public static explicit operator Frame(float f) => new Frame(f);
|
||||||
public static implicit operator Frame(Command cmd) => new Frame(cmd);
|
public static implicit operator Frame(Command cmd) => new Frame(cmd);
|
||||||
public static implicit operator Frame(in QVec2 vector) => new Frame(vector.X, vector.Y);
|
public static implicit operator Frame(in Vector2 vector) => new Frame(vector.X, vector.Y);
|
||||||
public static implicit operator Frame(in QColor color) => new Frame(color.R, color.G, color.B, color.A);
|
public static implicit operator Frame(in QColor color) => new Frame(color.R, color.G, color.B, color.A);
|
||||||
public static implicit operator Frame(in QRectangle rect) => new Frame(rect.Max.X, rect.Max.Y, rect.Min.X, rect.Min.Y);
|
public static implicit operator Frame(in QRectangle rect) => new Frame(rect.Max.X, rect.Max.Y, rect.Min.X, rect.Min.Y);
|
||||||
public static implicit operator Frame(in QLine line) => new Frame(line.Start.X, line.Start.Y, line.End.X, line.Start.Y);
|
public static implicit operator Frame(in QLine line) => new Frame(line.Start.X, line.Start.Y, line.End.X, line.Start.Y);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Dashboard.Media.Color;
|
using Dashboard.Media.Color;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Media.Font
|
namespace Dashboard.Media.Font
|
||||||
{
|
{
|
||||||
@ -131,8 +132,8 @@ namespace Dashboard.Media.Font
|
|||||||
src.CopyTo(dst, PointerX, PointerY);
|
src.CopyTo(dst, PointerX, PointerY);
|
||||||
Image.UnlockBits();
|
Image.UnlockBits();
|
||||||
|
|
||||||
QVec2 min = new QVec2((float)PointerX/Image.Width, (float)PointerY/Image.Height);
|
Vector2 min = new Vector2((float)PointerX/Image.Width, (float)PointerY/Image.Height);
|
||||||
QVec2 size = new QVec2((float)src.Width/Image.Width, (float)src.Height/Image.Height);
|
Vector2 size = new Vector2((float)src.Width/Image.Width, (float)src.Height/Image.Height);
|
||||||
|
|
||||||
prototype.Image = Image;
|
prototype.Image = Image;
|
||||||
prototype.UVs = new QRectangle(min + size, min);
|
prototype.UVs = new QRectangle(min + size, min);
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Media
|
namespace Dashboard.Media
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -13,29 +15,29 @@ namespace Dashboard.Media
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Size of the glyph in units.
|
/// Size of the glyph in units.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Size { get; }
|
public Vector2 Size { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Bearing vector for horizontal layout.
|
/// Bearing vector for horizontal layout.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 HorizontalBearing { get; }
|
public Vector2 HorizontalBearing { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Bearing vector for vertical layout.
|
/// Bearing vector for vertical layout.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 VerticalBearing { get; }
|
public Vector2 VerticalBearing { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Advance vector for vertical and horizontal layouts.
|
/// Advance vector for vertical and horizontal layouts.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Advance { get; }
|
public Vector2 Advance { get; }
|
||||||
|
|
||||||
public QGlyphMetrics(
|
public QGlyphMetrics(
|
||||||
int character,
|
int character,
|
||||||
QVec2 size,
|
Vector2 size,
|
||||||
QVec2 horizontalBearing,
|
Vector2 horizontalBearing,
|
||||||
QVec2 verticalBearing,
|
Vector2 verticalBearing,
|
||||||
QVec2 advance)
|
Vector2 advance)
|
||||||
{
|
{
|
||||||
Rune = character;
|
Rune = character;
|
||||||
Size = size;
|
Size = size;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using OpenTK.Mathematics;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Dashboard
|
namespace Dashboard
|
||||||
@ -16,10 +17,10 @@ namespace Dashboard
|
|||||||
|
|
||||||
public struct MouseState
|
public struct MouseState
|
||||||
{
|
{
|
||||||
public readonly QVec2 AbsolutePosition;
|
public readonly Vector2 AbsolutePosition;
|
||||||
public readonly MouseButton ButtonsDown;
|
public readonly MouseButton ButtonsDown;
|
||||||
|
|
||||||
public MouseState(QVec2 position, MouseButton down)
|
public MouseState(Vector2 position, MouseButton down)
|
||||||
{
|
{
|
||||||
AbsolutePosition = position;
|
AbsolutePosition = position;
|
||||||
ButtonsDown = down;
|
ButtonsDown = down;
|
||||||
@ -28,16 +29,16 @@ namespace Dashboard
|
|||||||
|
|
||||||
public class MouseButtonEventArgs : EventArgs
|
public class MouseButtonEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public QVec2 AbsolutePosition { get; }
|
public Vector2 AbsolutePosition { get; }
|
||||||
public MouseButton Buttons { get; }
|
public MouseButton Buttons { get; }
|
||||||
|
|
||||||
public MouseButtonEventArgs(QVec2 position, MouseButton buttons)
|
public MouseButtonEventArgs(Vector2 position, MouseButton buttons)
|
||||||
{
|
{
|
||||||
AbsolutePosition = position;
|
AbsolutePosition = position;
|
||||||
Buttons = buttons;
|
Buttons = buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 RelativePosition(QVec2 origin)
|
public Vector2 RelativePosition(Vector2 origin)
|
||||||
{
|
{
|
||||||
return AbsolutePosition - origin;
|
return AbsolutePosition - origin;
|
||||||
}
|
}
|
||||||
@ -50,18 +51,18 @@ namespace Dashboard
|
|||||||
|
|
||||||
public class MouseMoveEventArgs : EventArgs
|
public class MouseMoveEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public QVec2 AbsolutePosition { get; }
|
public Vector2 AbsolutePosition { get; }
|
||||||
public QVec2 LastPosition { get; }
|
public Vector2 LastPosition { get; }
|
||||||
public QVec2 Motion { get; }
|
public Vector2 Motion { get; }
|
||||||
|
|
||||||
public MouseMoveEventArgs(QVec2 position, QVec2 lastPosition)
|
public MouseMoveEventArgs(Vector2 position, Vector2 lastPosition)
|
||||||
{
|
{
|
||||||
AbsolutePosition = position;
|
AbsolutePosition = position;
|
||||||
LastPosition = lastPosition;
|
LastPosition = lastPosition;
|
||||||
Motion = position - lastPosition;
|
Motion = position - lastPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 RelativePosition(QVec2 origin)
|
public Vector2 RelativePosition(Vector2 origin)
|
||||||
{
|
{
|
||||||
return AbsolutePosition - origin;
|
return AbsolutePosition - origin;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ using System;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.OpenGL
|
namespace Dashboard.OpenGL
|
||||||
{
|
{
|
||||||
@ -100,7 +101,7 @@ namespace Dashboard.OpenGL
|
|||||||
draw.PrepareFrame();
|
draw.PrepareFrame();
|
||||||
|
|
||||||
|
|
||||||
QVec2 size = view.Size;
|
Vector2 size = view.Size;
|
||||||
QMat4.Orthographic(out QMat4 viewMatrix, view);
|
QMat4.Orthographic(out QMat4 viewMatrix, view);
|
||||||
|
|
||||||
GL.Viewport(0, 0, (int)view.Size.X, (int)view.Size.Y);
|
GL.Viewport(0, 0, (int)view.Size.X, (int)view.Size.Y);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Dashboard.ImmediateDraw;
|
using OpenTK.Mathematics;
|
||||||
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.Controls;
|
using Dashboard.Controls;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -22,13 +23,13 @@ namespace Dashboard.PAL
|
|||||||
set => platform.PortSetTitle(handle, value);
|
set => platform.PortSetTitle(handle, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Size
|
public Vector2 Size
|
||||||
{
|
{
|
||||||
get => platform.PortGetSize(handle);
|
get => platform.PortGetSize(handle);
|
||||||
set => platform.PortSetSize(handle, value);
|
set => platform.PortSetSize(handle, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public QVec2 Position
|
public Vector2 Position
|
||||||
{
|
{
|
||||||
get => platform.PortGetPosition(handle);
|
get => platform.PortGetPosition(handle);
|
||||||
set => platform.PortSetPosition(handle, value);
|
set => platform.PortSetPosition(handle, value);
|
||||||
@ -78,7 +79,7 @@ namespace Dashboard.PAL
|
|||||||
list ??= new DrawList();
|
list ??= new DrawList();
|
||||||
|
|
||||||
list.Clear();
|
list.Clear();
|
||||||
UIElement.Bounds = new QRectangle(Size, new QVec2(0,0));
|
UIElement.Bounds = new QRectangle(Size, new Vector2(0,0));
|
||||||
UIElement.Paint(list);
|
UIElement.Paint(list);
|
||||||
platform.PortPaint(handle, list);
|
platform.PortPaint(handle, list);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using System;
|
|
||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace Dashboard.PAL
|
namespace Dashboard.PAL
|
||||||
{
|
{
|
||||||
@ -45,10 +46,10 @@ namespace Dashboard.PAL
|
|||||||
void DestroyPort(IDashHandle port);
|
void DestroyPort(IDashHandle port);
|
||||||
string PortGetTitle(IDashHandle port);
|
string PortGetTitle(IDashHandle port);
|
||||||
void PortSetTitle(IDashHandle port, string title);
|
void PortSetTitle(IDashHandle port, string title);
|
||||||
QVec2 PortGetSize(IDashHandle port);
|
Vector2 PortGetSize(IDashHandle port);
|
||||||
void PortSetSize(IDashHandle port, QVec2 size);
|
void PortSetSize(IDashHandle port, Vector2 size);
|
||||||
QVec2 PortGetPosition(IDashHandle port);
|
Vector2 PortGetPosition(IDashHandle port);
|
||||||
void PortSetPosition(IDashHandle port, QVec2 position);
|
void PortSetPosition(IDashHandle port, Vector2 position);
|
||||||
bool PortIsValid(IDashHandle port);
|
bool PortIsValid(IDashHandle port);
|
||||||
void PortSubscribeEvent(IDashHandle port, EventHandler handler);
|
void PortSubscribeEvent(IDashHandle port, EventHandler handler);
|
||||||
void PortUnsubscribeEvent(IDashHandle port, EventHandler handler);
|
void PortUnsubscribeEvent(IDashHandle port, EventHandler handler);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using OpenTK.Mathematics;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -182,7 +183,7 @@ namespace Dashboard.Typography
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
bool firstLine = true;
|
bool firstLine = true;
|
||||||
|
|
||||||
QVec2 pen = new QVec2(0, -PreSpace);
|
Vector2 pen = new Vector2(0, -PreSpace);
|
||||||
|
|
||||||
while (index < Blocks.Count)
|
while (index < Blocks.Count)
|
||||||
{
|
{
|
||||||
@ -264,9 +265,9 @@ namespace Dashboard.Typography
|
|||||||
TypesetGroup group,
|
TypesetGroup group,
|
||||||
Queue<HorizontalTextBlock> line,
|
Queue<HorizontalTextBlock> line,
|
||||||
float interblockWs,
|
float interblockWs,
|
||||||
ref QVec2 pen)
|
ref Vector2 pen)
|
||||||
{
|
{
|
||||||
QVec2 penpal = pen;
|
Vector2 penpal = pen;
|
||||||
|
|
||||||
while (line.TryDequeue(out HorizontalTextBlock block))
|
while (line.TryDequeue(out HorizontalTextBlock block))
|
||||||
{
|
{
|
||||||
@ -396,7 +397,7 @@ namespace Dashboard.Typography
|
|||||||
_count = 0;
|
_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Translate(QVec2 offset)
|
public void Translate(Vector2 offset)
|
||||||
{
|
{
|
||||||
BoundingBox.Translate(offset);
|
BoundingBox.Translate(offset);
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Dashboard.ImmediateDraw;
|
using OpenTK.Mathematics;
|
||||||
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -74,7 +75,7 @@ namespace Dashboard.Typography
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static QVec2 MeasureHorizontal(ReadOnlySpan<char> str, float size, QFont font)
|
public static Vector2 MeasureHorizontal(ReadOnlySpan<char> str, float size, QFont font)
|
||||||
{
|
{
|
||||||
var enumerator = new LineEnumerator(str);
|
var enumerator = new LineEnumerator(str);
|
||||||
|
|
||||||
@ -99,15 +100,15 @@ namespace Dashboard.Typography
|
|||||||
height += lineHeight;
|
height += lineHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new QVec2(width, height);
|
return new Vector2(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void TypesetHorizontalDirect(this DrawList list, ReadOnlySpan<char> str, QVec2 origin, float size, QFont font)
|
public static void TypesetHorizontalDirect(this DrawList list, ReadOnlySpan<char> str, Vector2 origin, float size, QFont font)
|
||||||
{
|
{
|
||||||
Dictionary<QImage, FontDrawInfo> drawInfo = new Dictionary<QImage, FontDrawInfo>();
|
Dictionary<QImage, FontDrawInfo> drawInfo = new Dictionary<QImage, FontDrawInfo>();
|
||||||
var enumerator = new LineEnumerator(str);
|
var enumerator = new LineEnumerator(str);
|
||||||
|
|
||||||
QVec2 pen = origin;
|
Vector2 pen = origin;
|
||||||
while (enumerator.MoveNext())
|
while (enumerator.MoveNext())
|
||||||
{
|
{
|
||||||
ReadOnlySpan<char> line = enumerator.Current;
|
ReadOnlySpan<char> line = enumerator.Current;
|
||||||
@ -126,7 +127,7 @@ namespace Dashboard.Typography
|
|||||||
fall = Math.Max(cfall, fall);
|
fall = Math.Max(cfall, fall);
|
||||||
}
|
}
|
||||||
|
|
||||||
pen += new QVec2(0, rise);
|
pen += new Vector2(0, rise);
|
||||||
|
|
||||||
foreach (Rune r in line.EnumerateRunes())
|
foreach (Rune r in line.EnumerateRunes())
|
||||||
{
|
{
|
||||||
@ -139,7 +140,7 @@ namespace Dashboard.Typography
|
|||||||
|
|
||||||
if (image == null)
|
if (image == null)
|
||||||
{
|
{
|
||||||
pen += new QVec2(metrics.Advance.X, 0);
|
pen += new Vector2(metrics.Advance.X, 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,8 +153,8 @@ namespace Dashboard.Typography
|
|||||||
}
|
}
|
||||||
|
|
||||||
QRectangle dest = new QRectangle(
|
QRectangle dest = new QRectangle(
|
||||||
pen + new QVec2(metrics.HorizontalBearing.X + metrics.Size.X, metrics.Size.Y - metrics.HorizontalBearing.Y),
|
pen + new Vector2(metrics.HorizontalBearing.X + metrics.Size.X, metrics.Size.Y - metrics.HorizontalBearing.Y),
|
||||||
pen + new QVec2(metrics.HorizontalBearing.X, -metrics.HorizontalBearing.Y));
|
pen + new Vector2(metrics.HorizontalBearing.X, -metrics.HorizontalBearing.Y));
|
||||||
|
|
||||||
info.rectangles.Add(dest);
|
info.rectangles.Add(dest);
|
||||||
info.rectangles.Add(glyph.UVs);
|
info.rectangles.Add(glyph.UVs);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using OpenTK.Mathematics;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace Dashboard.VertexGenerator
|
namespace Dashboard.VertexGenerator
|
||||||
@ -11,12 +12,12 @@ namespace Dashboard.VertexGenerator
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Position value.
|
/// Position value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 Position;
|
public Vector2 Position;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Texture Coordinates.
|
/// Texture Coordinates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public QVec2 TextureCoordinates;
|
public Vector2 TextureCoordinates;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Per vertex color value.
|
/// Per vertex color value.
|
||||||
@ -34,8 +35,8 @@ namespace Dashboard.VertexGenerator
|
|||||||
public float TextureLayer;
|
public float TextureLayer;
|
||||||
|
|
||||||
public static int PositionOffset => 0;
|
public static int PositionOffset => 0;
|
||||||
public static unsafe int TextureCoordinatesOffset => sizeof(QVec2);
|
public static unsafe int TextureCoordinatesOffset => sizeof(Vector2);
|
||||||
public static unsafe int ColorOffset => 2 * sizeof(QVec2);
|
public static unsafe int ColorOffset => 2 * sizeof(Vector2);
|
||||||
public static unsafe int ZIndexOffset => ColorOffset + sizeof(QColor);
|
public static unsafe int ZIndexOffset => ColorOffset + sizeof(QColor);
|
||||||
public static unsafe int TextureLayerOffset => ZIndexOffset + sizeof(int);
|
public static unsafe int TextureLayerOffset => ZIndexOffset + sizeof(int);
|
||||||
public static unsafe int Stride => sizeof(DbVertex);
|
public static unsafe int Stride => sizeof(DbVertex);
|
||||||
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using Dashboard.ImmediateDraw;
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
using Dashboard.Typography;
|
using Dashboard.Typography;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.VertexGenerator
|
namespace Dashboard.VertexGenerator
|
||||||
{
|
{
|
||||||
@ -128,7 +129,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
{
|
{
|
||||||
DbVertex vertex = StrokeVertex;
|
DbVertex vertex = StrokeVertex;
|
||||||
DbVertex a, b, c, d;
|
DbVertex a, b, c, d;
|
||||||
QVec2 normal = line.Normal();
|
Vector2 normal = line.Normal();
|
||||||
float width = Style.StrokeWidth ?? 1;
|
float width = Style.StrokeWidth ?? 1;
|
||||||
|
|
||||||
a = b = c = d = vertex;
|
a = b = c = d = vertex;
|
||||||
@ -148,20 +149,20 @@ namespace Dashboard.VertexGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateJoint(
|
private void GenerateJoint(
|
||||||
in QVec2 center,
|
in Vector2 center,
|
||||||
in QVec2 prevNormal,
|
in Vector2 prevNormal,
|
||||||
in QVec2 nextNormal,
|
in Vector2 nextNormal,
|
||||||
in LineInfo prevInfo,
|
in LineInfo prevInfo,
|
||||||
in LineInfo nextInfo)
|
in LineInfo nextInfo)
|
||||||
{
|
{
|
||||||
// Figure out which side needs the joint.
|
// Figure out which side needs the joint.
|
||||||
QVec2 meanNormal = 0.5f * (prevNormal + nextNormal);
|
Vector2 meanNormal = 0.5f * (prevNormal + nextNormal);
|
||||||
QVec2 meanTangent = new QVec2(meanNormal.Y, -meanNormal.X);
|
Vector2 meanTangent = new Vector2(meanNormal.Y, -meanNormal.X);
|
||||||
QVec2 positiveEdge = ((center + nextNormal) - (center + prevNormal)).Normalize();
|
Vector2 positiveEdge = ((center + nextNormal) - (center + prevNormal)).Normalized();
|
||||||
QVec2 negativeEdge = ((center - nextNormal) - (center - prevNormal)).Normalize();
|
Vector2 negativeEdge = ((center - nextNormal) - (center - prevNormal)).Normalized();
|
||||||
float positive, negative;
|
float positive, negative;
|
||||||
positive = QVec2.Dot(meanTangent, positiveEdge);
|
positive = Vector2.Dot(meanTangent, positiveEdge);
|
||||||
negative = QVec2.Dot(meanNormal, negativeEdge);
|
negative = Vector2.Dot(meanNormal, negativeEdge);
|
||||||
|
|
||||||
if (positive == negative)
|
if (positive == negative)
|
||||||
{
|
{
|
||||||
@ -173,7 +174,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
DbVertex vertex = StrokeVertex;
|
DbVertex vertex = StrokeVertex;
|
||||||
float radius = Style.StrokeWidth/2 ?? 0.5f;
|
float radius = Style.StrokeWidth/2 ?? 0.5f;
|
||||||
float arc = MathF.Acos(QVec2.Dot(prevNormal, nextNormal));
|
float arc = MathF.Acos(Vector2.Dot(prevNormal, nextNormal));
|
||||||
int resolution = GetRoundingResolution(radius, arc);
|
int resolution = GetRoundingResolution(radius, arc);
|
||||||
bool isNegative = positive < negative;
|
bool isNegative = positive < negative;
|
||||||
|
|
||||||
@ -199,10 +200,10 @@ namespace Dashboard.VertexGenerator
|
|||||||
float cos = MathF.Cos(angle);
|
float cos = MathF.Cos(angle);
|
||||||
float sin = MathF.Sin(angle);
|
float sin = MathF.Sin(angle);
|
||||||
|
|
||||||
QVec2 displacement;
|
Vector2 displacement;
|
||||||
if (isNegative)
|
if (isNegative)
|
||||||
{
|
{
|
||||||
displacement = new QVec2()
|
displacement = new Vector2()
|
||||||
{
|
{
|
||||||
X = -prevNormal.X * cos + prevNormal.Y * sin,
|
X = -prevNormal.X * cos + prevNormal.Y * sin,
|
||||||
Y = -prevNormal.X * sin - prevNormal.Y * cos
|
Y = -prevNormal.X * sin - prevNormal.Y * cos
|
||||||
@ -210,7 +211,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
displacement = new QVec2()
|
displacement = new Vector2()
|
||||||
{
|
{
|
||||||
X = nextNormal.X * cos - nextNormal.Y * sin,
|
X = nextNormal.X * cos - nextNormal.Y * sin,
|
||||||
Y = nextNormal.X * sin + nextNormal.Y * cos
|
Y = nextNormal.X * sin + nextNormal.Y * cos
|
||||||
@ -234,8 +235,8 @@ namespace Dashboard.VertexGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateCap(
|
private void GenerateCap(
|
||||||
in QVec2 center,
|
in Vector2 center,
|
||||||
in QVec2 normal,
|
in Vector2 normal,
|
||||||
in LineInfo info,
|
in LineInfo info,
|
||||||
bool endCap)
|
bool endCap)
|
||||||
{
|
{
|
||||||
@ -262,10 +263,10 @@ namespace Dashboard.VertexGenerator
|
|||||||
float cos = MathF.Cos(angle);
|
float cos = MathF.Cos(angle);
|
||||||
float sin = MathF.Sin(angle);
|
float sin = MathF.Sin(angle);
|
||||||
|
|
||||||
QVec2 displacement;
|
Vector2 displacement;
|
||||||
if (endCap)
|
if (endCap)
|
||||||
{
|
{
|
||||||
displacement = new QVec2()
|
displacement = new Vector2()
|
||||||
{
|
{
|
||||||
X = normal.X * cos + normal.Y * sin,
|
X = normal.X * cos + normal.Y * sin,
|
||||||
Y = -normal.X * sin + normal.Y * cos
|
Y = -normal.X * sin + normal.Y * cos
|
||||||
@ -273,7 +274,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
displacement = new QVec2()
|
displacement = new Vector2()
|
||||||
{
|
{
|
||||||
X = normal.X * cos - normal.Y * sin,
|
X = normal.X * cos - normal.Y * sin,
|
||||||
Y = normal.X * sin + normal.Y * cos
|
Y = normal.X * sin + normal.Y * cos
|
||||||
@ -292,7 +293,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
private readonly List<QBezier> BezierList = new List<QBezier>();
|
private readonly List<QBezier> BezierList = new List<QBezier>();
|
||||||
private void BezierProc(ImmediateDraw.DrawQueue queue)
|
private void BezierProc(DrawQueue queue)
|
||||||
{
|
{
|
||||||
Frame a = queue.Dequeue();
|
Frame a = queue.Dequeue();
|
||||||
Frame b;
|
Frame b;
|
||||||
@ -309,10 +310,10 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
BezierList.Add(
|
BezierList.Add(
|
||||||
new QBezier(
|
new QBezier(
|
||||||
new QVec2(a.GetF(0), a.GetF(1)),
|
new Vector2(a.GetF(0), a.GetF(1)),
|
||||||
new QVec2(b.GetF(0), b.GetF(1)),
|
new Vector2(b.GetF(0), b.GetF(1)),
|
||||||
new QVec2(b.GetF(2), b.GetF(3)),
|
new Vector2(b.GetF(2), b.GetF(3)),
|
||||||
new QVec2(a.GetF(2), a.GetF(3))
|
new Vector2(a.GetF(2), a.GetF(3))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -323,10 +324,10 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
BezierList.Add(
|
BezierList.Add(
|
||||||
new QBezier(
|
new QBezier(
|
||||||
new QVec2(a.GetF(0), a.GetF(1)),
|
new Vector2(a.GetF(0), a.GetF(1)),
|
||||||
new QVec2(b.GetF(0), b.GetF(1)),
|
new Vector2(b.GetF(0), b.GetF(1)),
|
||||||
new QVec2(b.GetF(2), b.GetF(3)),
|
new Vector2(b.GetF(2), b.GetF(3)),
|
||||||
new QVec2(a.GetF(2), a.GetF(3))
|
new Vector2(a.GetF(2), a.GetF(3))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -370,10 +371,10 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
private LineInfo GenerateBezierSegment(in QBezier bezier)
|
private LineInfo GenerateBezierSegment(in QBezier bezier)
|
||||||
{
|
{
|
||||||
QVec2 startTangent = bezier.GetBezierTangent(0);
|
Vector2 startTangent = bezier.GetBezierTangent(0);
|
||||||
QVec2 endTangent = bezier.GetBezierTangent(1);
|
Vector2 endTangent = bezier.GetBezierTangent(1);
|
||||||
QVec2 startNormal = new QVec2(-startTangent.Y, startTangent.X).Normalize();
|
Vector2 startNormal = new Vector2(-startTangent.Y, startTangent.X).Normalized();
|
||||||
QVec2 endNormal = new QVec2(-endTangent.Y, endTangent.X).Normalize();
|
Vector2 endNormal = new Vector2(-endTangent.Y, endTangent.X).Normalized();
|
||||||
|
|
||||||
float width = Style.StrokeWidth ?? 1;
|
float width = Style.StrokeWidth ?? 1;
|
||||||
float radius = 0.5f * width;
|
float radius = 0.5f * width;
|
||||||
@ -392,9 +393,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
for (int i = 0; i < resolution; i++, index += 2)
|
for (int i = 0; i < resolution; i++, index += 2)
|
||||||
{
|
{
|
||||||
float t = (i + 1.0f) / resolution;
|
float t = (i + 1.0f) / resolution;
|
||||||
QVec2 at = bezier.GetBezierTangent(t).Normalize();
|
Vector2 at = bezier.GetBezierTangent(t).Normalized();
|
||||||
QVec2 a = bezier.GetBezierPoint(t);
|
Vector2 a = bezier.GetBezierPoint(t);
|
||||||
QVec2 an = radius * new QVec2(-at.Y, at.X);
|
Vector2 an = radius * new Vector2(-at.Y, at.X);
|
||||||
|
|
||||||
v.Position = a + an;
|
v.Position = a + an;
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
@ -478,16 +479,16 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
// Draw center rectangle.
|
// Draw center rectangle.
|
||||||
|
|
||||||
QVec2 aPos, bPos, cPos, dPos;
|
Vector2 aPos, bPos, cPos, dPos;
|
||||||
|
|
||||||
DbVertex v = FillVertex;
|
DbVertex v = FillVertex;
|
||||||
aPos = v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom - radius);
|
aPos = v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
bPos = v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom - radius);
|
bPos = v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
cPos = v.Position = new QVec2(rectangle.Right - radius, rectangle.Top + radius);
|
cPos = v.Position = new Vector2(rectangle.Right - radius, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
dPos = v.Position = new QVec2(rectangle.Left + radius, rectangle.Top + radius);
|
dPos = v.Position = new Vector2(rectangle.Left + radius, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(0); DrawQueue.AddElement(1); DrawQueue.AddElement(2);
|
DrawQueue.AddElement(0); DrawQueue.AddElement(1); DrawQueue.AddElement(2);
|
||||||
@ -498,9 +499,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
// Draw south rectangle.
|
// Draw south rectangle.
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(4); DrawQueue.AddElement(5); DrawQueue.AddElement(1);
|
DrawQueue.AddElement(4); DrawQueue.AddElement(5); DrawQueue.AddElement(1);
|
||||||
@ -508,9 +509,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
// Draw east rectangle.
|
// Draw east rectangle.
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(1); DrawQueue.AddElement(6); DrawQueue.AddElement(7);
|
DrawQueue.AddElement(1); DrawQueue.AddElement(6); DrawQueue.AddElement(7);
|
||||||
@ -518,9 +519,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
// Draw north rectangle.
|
// Draw north rectangle.
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(3); DrawQueue.AddElement(2); DrawQueue.AddElement(8);
|
DrawQueue.AddElement(3); DrawQueue.AddElement(2); DrawQueue.AddElement(8);
|
||||||
@ -528,9 +529,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
// Draw west rectangle.
|
// Draw west rectangle.
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(11); DrawQueue.AddElement(0); DrawQueue.AddElement(3);
|
DrawQueue.AddElement(11); DrawQueue.AddElement(0); DrawQueue.AddElement(3);
|
||||||
@ -547,7 +548,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = MathF.Cos(theta) * radius;
|
float xoff = MathF.Cos(theta) * radius;
|
||||||
float yoff = MathF.Sin(theta) * radius;
|
float yoff = MathF.Sin(theta) * radius;
|
||||||
|
|
||||||
v.Position = cPos + new QVec2(xoff, yoff);
|
v.Position = cPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(2); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(2); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -562,7 +563,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Sin(theta) * radius;
|
float xoff = -MathF.Sin(theta) * radius;
|
||||||
float yoff = MathF.Cos(theta) * radius;
|
float yoff = MathF.Cos(theta) * radius;
|
||||||
|
|
||||||
v.Position = dPos + new QVec2(xoff, yoff);
|
v.Position = dPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(3); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(3); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -577,7 +578,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Cos(theta) * radius;
|
float xoff = -MathF.Cos(theta) * radius;
|
||||||
float yoff = -MathF.Sin(theta) * radius;
|
float yoff = -MathF.Sin(theta) * radius;
|
||||||
|
|
||||||
v.Position = aPos + new QVec2(xoff, yoff);
|
v.Position = aPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(0); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(0); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -592,7 +593,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Sin(theta) * radius;
|
float xoff = -MathF.Sin(theta) * radius;
|
||||||
float yoff = MathF.Cos(theta) * radius;
|
float yoff = MathF.Cos(theta) * radius;
|
||||||
|
|
||||||
v.Position = bPos + new QVec2(xoff, yoff);
|
v.Position = bPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(1); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(1); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -621,22 +622,22 @@ namespace Dashboard.VertexGenerator
|
|||||||
|
|
||||||
DrawQueue.RestoreOffset();
|
DrawQueue.RestoreOffset();
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Right, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Top);
|
v.Position = new Vector2(rectangle.Left, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(4); DrawQueue.AddElement(5); DrawQueue.AddElement(1); // SSW
|
DrawQueue.AddElement(4); DrawQueue.AddElement(5); DrawQueue.AddElement(1); // SSW
|
||||||
@ -674,73 +675,73 @@ namespace Dashboard.VertexGenerator
|
|||||||
20: 0 1 2 3
|
20: 0 1 2 3
|
||||||
*/
|
*/
|
||||||
DbVertex v = StrokeVertex;
|
DbVertex v = StrokeVertex;
|
||||||
QVec2 nPos, qPos, tPos, wPos;
|
Vector2 nPos, qPos, tPos, wPos;
|
||||||
float stroke = Style.StrokeWidth ?? 1.0f;
|
float stroke = Style.StrokeWidth ?? 1.0f;
|
||||||
|
|
||||||
DrawQueue.RestoreOffset();
|
DrawQueue.RestoreOffset();
|
||||||
|
|
||||||
// a-b-c-d
|
// a-b-c-d
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// ef-gh-ij-kl
|
// ef-gh-ij-kl
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Right, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Left, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// mno
|
// mno
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
nPos = v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom - radius);
|
nPos = v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// pqr
|
// pqr
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
qPos = v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom - radius);
|
qPos = v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// stu
|
// stu
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
tPos = v.Position = new QVec2(rectangle.Right - radius, rectangle.Top + radius);
|
tPos = v.Position = new Vector2(rectangle.Right - radius, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// vwx
|
// vwx
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
wPos = v.Position = new QVec2(rectangle.Left + radius, rectangle.Top + radius);
|
wPos = v.Position = new Vector2(rectangle.Left + radius, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// E
|
// E
|
||||||
@ -791,7 +792,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = MathF.Cos(theta) * radius;
|
float xoff = MathF.Cos(theta) * radius;
|
||||||
float yoff = MathF.Sin(theta) * radius;
|
float yoff = MathF.Sin(theta) * radius;
|
||||||
|
|
||||||
v.Position = tPos + new QVec2(xoff, yoff);
|
v.Position = tPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(19); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(19); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -806,7 +807,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Sin(theta) * radius;
|
float xoff = -MathF.Sin(theta) * radius;
|
||||||
float yoff = MathF.Cos(theta) * radius;
|
float yoff = MathF.Cos(theta) * radius;
|
||||||
|
|
||||||
v.Position = wPos + new QVec2(xoff, yoff);
|
v.Position = wPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(22); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(22); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -821,7 +822,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Cos(theta) * radius;
|
float xoff = -MathF.Cos(theta) * radius;
|
||||||
float yoff = -MathF.Sin(theta) * radius;
|
float yoff = -MathF.Sin(theta) * radius;
|
||||||
|
|
||||||
v.Position = nPos + new QVec2(xoff, yoff);
|
v.Position = nPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(23); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(23); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -836,7 +837,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Sin(theta) * radius;
|
float xoff = -MathF.Sin(theta) * radius;
|
||||||
float yoff = MathF.Cos(theta) * radius;
|
float yoff = MathF.Cos(theta) * radius;
|
||||||
|
|
||||||
v.Position = qPos + new QVec2(xoff, yoff);
|
v.Position = qPos + new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
DrawQueue.AddElement(16); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
DrawQueue.AddElement(16); DrawQueue.AddElement(previous); DrawQueue.AddElement((previous = current++));
|
||||||
}
|
}
|
||||||
@ -867,40 +868,40 @@ namespace Dashboard.VertexGenerator
|
|||||||
float innerRadius = radius - stroke;
|
float innerRadius = radius - stroke;
|
||||||
DrawQueue.RestoreOffset();
|
DrawQueue.RestoreOffset();
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Bottom - stroke);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Bottom - stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Right, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - stroke, rectangle.Bottom - radius);
|
v.Position = new Vector2(rectangle.Right - stroke, rectangle.Bottom - radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Top + stroke);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Top + stroke);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Right - radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Right - radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + radius, rectangle.Top);
|
v.Position = new Vector2(rectangle.Left + radius, rectangle.Top);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom + radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left + stroke, rectangle.Top + radius);
|
v.Position = new Vector2(rectangle.Left + stroke, rectangle.Top + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = new QVec2(rectangle.Left, rectangle.Bottom + radius);
|
v.Position = new Vector2(rectangle.Left, rectangle.Bottom + radius);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
// S
|
// S
|
||||||
@ -920,7 +921,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
int resolution = GetRoundingResolution(radius, 0.5f * MathF.PI);
|
int resolution = GetRoundingResolution(radius, 0.5f * MathF.PI);
|
||||||
int current = 16;
|
int current = 16;
|
||||||
|
|
||||||
QVec2 center = new QVec2(rectangle.Right - radius, rectangle.Top - radius);
|
Vector2 center = new Vector2(rectangle.Right - radius, rectangle.Top - radius);
|
||||||
int s1 = 7, s2 = 6;
|
int s1 = 7, s2 = 6;
|
||||||
for (int i = 0; i < resolution - 1; i++)
|
for (int i = 0; i < resolution - 1; i++)
|
||||||
{
|
{
|
||||||
@ -928,9 +929,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = MathF.Cos(theta);
|
float xoff = MathF.Cos(theta);
|
||||||
float yoff = MathF.Sin(theta);
|
float yoff = MathF.Sin(theta);
|
||||||
|
|
||||||
v.Position = center + radius * new QVec2(xoff, yoff);
|
v.Position = center + radius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = center + innerRadius * new QVec2(xoff, yoff);
|
v.Position = center + innerRadius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
||||||
@ -943,7 +944,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(9);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(9);
|
||||||
|
|
||||||
// Draw NW arc
|
// Draw NW arc
|
||||||
center = new QVec2(rectangle.Left + radius, rectangle.Top - radius);
|
center = new Vector2(rectangle.Left + radius, rectangle.Top - radius);
|
||||||
s1 = 8; s2 = 11;
|
s1 = 8; s2 = 11;
|
||||||
for (int i = 0; i < resolution - 1; i++)
|
for (int i = 0; i < resolution - 1; i++)
|
||||||
{
|
{
|
||||||
@ -951,9 +952,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Sin(theta);
|
float xoff = -MathF.Sin(theta);
|
||||||
float yoff = MathF.Cos(theta);
|
float yoff = MathF.Cos(theta);
|
||||||
|
|
||||||
v.Position = center + radius * new QVec2(xoff, yoff);
|
v.Position = center + radius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = center + innerRadius * new QVec2(xoff, yoff);
|
v.Position = center + innerRadius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
||||||
@ -966,7 +967,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(14);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(14);
|
||||||
|
|
||||||
// Draw SW arc
|
// Draw SW arc
|
||||||
center = new QVec2(rectangle.Left + radius, rectangle.Bottom + radius);
|
center = new Vector2(rectangle.Left + radius, rectangle.Bottom + radius);
|
||||||
s1 = 13; s2 = 12;
|
s1 = 13; s2 = 12;
|
||||||
for (int i = 0; i < resolution - 1; i++)
|
for (int i = 0; i < resolution - 1; i++)
|
||||||
{
|
{
|
||||||
@ -974,9 +975,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = -MathF.Cos(theta);
|
float xoff = -MathF.Cos(theta);
|
||||||
float yoff = -MathF.Sin(theta);
|
float yoff = -MathF.Sin(theta);
|
||||||
|
|
||||||
v.Position = center + radius * new QVec2(xoff, yoff);
|
v.Position = center + radius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = center + innerRadius * new QVec2(xoff, yoff);
|
v.Position = center + innerRadius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
||||||
@ -989,7 +990,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(3);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(3);
|
||||||
|
|
||||||
// Draw SW arc
|
// Draw SW arc
|
||||||
center = new QVec2(rectangle.Right - radius, rectangle.Bottom + radius);
|
center = new Vector2(rectangle.Right - radius, rectangle.Bottom + radius);
|
||||||
s1 = 2; s2 = 1;
|
s1 = 2; s2 = 1;
|
||||||
for (int i = 0; i < resolution - 1; i++)
|
for (int i = 0; i < resolution - 1; i++)
|
||||||
{
|
{
|
||||||
@ -997,9 +998,9 @@ namespace Dashboard.VertexGenerator
|
|||||||
float xoff = MathF.Sin(theta);
|
float xoff = MathF.Sin(theta);
|
||||||
float yoff = -MathF.Cos(theta);
|
float yoff = -MathF.Cos(theta);
|
||||||
|
|
||||||
v.Position = center + radius * new QVec2(xoff, yoff);
|
v.Position = center + radius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
v.Position = center + innerRadius * new QVec2(xoff, yoff);
|
v.Position = center + innerRadius * new Vector2(xoff, yoff);
|
||||||
DrawQueue.AddVertex(v);
|
DrawQueue.AddVertex(v);
|
||||||
|
|
||||||
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
DrawQueue.AddElement(s1); DrawQueue.AddElement(s2); DrawQueue.AddElement(current + 0);
|
||||||
@ -1050,20 +1051,20 @@ namespace Dashboard.VertexGenerator
|
|||||||
DrawQueue.RestoreOffset();
|
DrawQueue.RestoreOffset();
|
||||||
DbVertex vertex = ImageVertex;
|
DbVertex vertex = ImageVertex;
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Left, rect.Top);
|
vertex.Position = new Vector2(rect.Left, rect.Top);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Left, uvs.Top);
|
vertex.TextureCoordinates = new Vector2(uvs.Left, uvs.Top);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Left, rect.Bottom);
|
vertex.Position = new Vector2(rect.Left, rect.Bottom);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Left, uvs.Bottom);
|
vertex.TextureCoordinates = new Vector2(uvs.Left, uvs.Bottom);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Right, rect.Bottom);
|
vertex.Position = new Vector2(rect.Right, rect.Bottom);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Right, uvs.Bottom);
|
vertex.TextureCoordinates = new Vector2(uvs.Right, uvs.Bottom);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Right, rect.Top);
|
vertex.Position = new Vector2(rect.Right, rect.Top);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Right, uvs.Top);
|
vertex.TextureCoordinates = new Vector2(uvs.Right, uvs.Top);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
DrawQueue.AddElement(0); DrawQueue.AddElement(2); DrawQueue.AddElement(3);
|
DrawQueue.AddElement(0); DrawQueue.AddElement(2); DrawQueue.AddElement(3);
|
||||||
@ -1073,7 +1074,7 @@ namespace Dashboard.VertexGenerator
|
|||||||
DrawQueue.EndDrawCall();
|
DrawQueue.EndDrawCall();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Image3d(ImmediateDraw.DrawQueue queue, QImage image, int count)
|
private void Image3d(DrawQueue queue, QImage image, int count)
|
||||||
{
|
{
|
||||||
DrawQueue.StartDrawCall(Viewport, image);
|
DrawQueue.StartDrawCall(Viewport, image);
|
||||||
|
|
||||||
@ -1087,20 +1088,20 @@ namespace Dashboard.VertexGenerator
|
|||||||
DbVertex vertex = ImageVertex;
|
DbVertex vertex = ImageVertex;
|
||||||
vertex.TextureLayer = layer;
|
vertex.TextureLayer = layer;
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Top, rect.Left);
|
vertex.Position = new Vector2(rect.Top, rect.Left);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Top, uvs.Left);
|
vertex.TextureCoordinates = new Vector2(uvs.Top, uvs.Left);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Bottom, rect.Left);
|
vertex.Position = new Vector2(rect.Bottom, rect.Left);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Bottom, uvs.Left);
|
vertex.TextureCoordinates = new Vector2(uvs.Bottom, uvs.Left);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Bottom, rect.Right);
|
vertex.Position = new Vector2(rect.Bottom, rect.Right);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Bottom, uvs.Right);
|
vertex.TextureCoordinates = new Vector2(uvs.Bottom, uvs.Right);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
vertex.Position = new QVec2(rect.Top, rect.Right);
|
vertex.Position = new Vector2(rect.Top, rect.Right);
|
||||||
vertex.TextureCoordinates = new QVec2(uvs.Top, uvs.Right);
|
vertex.TextureCoordinates = new Vector2(uvs.Top, uvs.Right);
|
||||||
DrawQueue.AddVertex(vertex);
|
DrawQueue.AddVertex(vertex);
|
||||||
|
|
||||||
DrawQueue.AddElement(0); DrawQueue.AddElement(2); DrawQueue.AddElement(3);
|
DrawQueue.AddElement(0); DrawQueue.AddElement(2); DrawQueue.AddElement(3);
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
using Dashboard;
|
using Dashboard.ImmediateDraw;
|
||||||
using Dashboard.ImmediateDraw;
|
|
||||||
using Dashboard.Controls;
|
using Dashboard.Controls;
|
||||||
using Dashboard.OpenTK;
|
using Dashboard.OpenTK;
|
||||||
using Dashboard.Media.Defaults;
|
|
||||||
using Dashboard.Media;
|
using Dashboard.Media;
|
||||||
using Dashboard.PAL;
|
|
||||||
using Dashboard.BlurgText;
|
using Dashboard.BlurgText;
|
||||||
using BlurgText;
|
using BlurgText;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
|
|
||||||
namespace Dashboard.Demo
|
namespace Dashboard.Demo
|
||||||
{
|
{
|
||||||
@ -44,7 +42,7 @@ namespace Dashboard.Demo
|
|||||||
result = dblurg.Blurg.BuildString(font!, 12, BlurgColor.White, "Hello World");
|
result = dblurg.Blurg.BuildString(font!, 12, BlurgColor.White, "Hello World");
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.PutBlurgText(dblurg, result!, new QVec2(300, 300));
|
cmd.PutBlurgText(dblurg, result!, new Vector2(300, 300));
|
||||||
cmd.Rectangle(new QRectangle(16, 16, 0, 0));
|
cmd.Rectangle(new QRectangle(16, 16, 0, 0));
|
||||||
// Label.Paint(cmd);
|
// Label.Paint(cmd);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user