Files
Progrart/Progrart.Core/Graphics/Rectangle.cs
T

92 lines
2.1 KiB
C#
Raw Normal View History

2025-12-30 00:51:01 +11:00
using Jint;
using Jint.Native;
using Progrart.Core.JSExecution;
using SkiaSharp;
using System.Diagnostics;
namespace Progrart.Core.Graphics
2025-12-28 23:03:33 +11:00
{
2026-01-01 23:02:12 +11:00
public class Rectangle : BaseElement
2025-12-28 23:03:33 +11:00
{
2025-12-30 00:51:01 +11:00
float StrokeWidth;
SKPoint Start;
SKPoint Size;
SKColorF Color;
2026-01-05 03:57:09 +11:00
bool IsStroke;
2025-12-30 00:51:01 +11:00
SKShader? shader = null;
public override void SetupProperties(Engine engine)
{
base.SetupProperties(engine);
if (__object != null)
{
{
JsObject point = new JsObject(engine);
point.Set("x", 0);
point.Set("y", 0);
__object.Set("Position", point);
}
__object.Set("StrokeWidth", 1);
2026-01-05 03:57:09 +11:00
__object.Set("IsStroke", true);
2025-12-30 00:51:01 +11:00
__object.Set("Color", ProgrartFunctions.color(engine, 1, 1, 1, 1));
{
JsObject point = new JsObject(engine);
point.Set("x", 0);
point.Set("y", 0);
__object.Set("Size", point);
}
}
}
2026-01-24 01:14:58 +11:00
public override void LoadProperties(RenderContext context)
2025-12-30 00:51:01 +11:00
{
if (__object is not null)
{
StrokeWidth = (float)__object.Get("StrokeWidth").AsNumber();
2026-01-05 03:57:09 +11:00
IsStroke = (bool)__object.Get("IsStroke").AsBoolean();
2025-12-30 00:51:01 +11:00
{
if (__object.Get("Position") is JsObject Start)
{
this.Start = ProgrartConversion.ObtainSKPointFromJsObject(Start);
}
}
{
if (__object.Get("Size") is JsObject End)
{
this.Size = ProgrartConversion.ObtainSKPointFromJsObject(End);
}
}
{
if (__object.Get("Color") is JsObject Color)
{
this.Color = ProgrartConversion.ObtainSKColorFFromJsObject(Color);
}
}
if (__object.Get("Shader") is JsObject shaderObj)
2026-01-24 01:14:58 +11:00
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
2025-12-30 00:51:01 +11:00
}
}
public override void Render(RenderContext context)
{
base.Render(context);
2026-01-24 01:14:58 +11:00
LoadProperties(context);
2025-12-30 00:51:01 +11:00
SKPoint FinalStartPos = context.TranslatePoint(Start);
SKPoint FinalEndPos = context.TranslatePoint(Size);
context.canvas.DrawRect(
2025-12-30 00:51:01 +11:00
FinalStartPos.X, FinalStartPos.Y,
FinalEndPos.X, FinalEndPos.Y,
new SKPaint()
{
ColorF = Color,
2026-01-01 23:02:12 +11:00
StrokeWidth = context.TranslateSize(StrokeWidth),
2026-01-05 03:57:09 +11:00
Shader = shader,
2026-01-10 03:40:54 +11:00
IsStroke = IsStroke,
IsAntialias = true
2025-12-30 00:51:01 +11:00
}
);
}
2025-12-28 23:03:33 +11:00
}
}