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