linear gradient is now working.
This commit is contained in:
@@ -18,7 +18,7 @@ namespace Progrart.Core.Graphics
|
||||
public virtual void Render(RenderContext context)
|
||||
{
|
||||
}
|
||||
public virtual void LoadProperties() { }
|
||||
public virtual void LoadProperties(RenderContext context) { }
|
||||
public virtual void SetupProperties(Engine engine) { }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -54,13 +54,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context,shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint pos = context.TranslatePoint(Position);
|
||||
float Size = context.TranslateSize(this.Size);
|
||||
context.DrawingCore.canvas.DrawCircle(
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -61,13 +61,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint FinalStartPos = context.TranslatePoint(Start);
|
||||
SKPoint FinalEndPos = context.TranslatePoint(End);
|
||||
context.canvas.DrawLine(
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -64,13 +64,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context,shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint FinalStartPos = context.TranslatePoint(Position);
|
||||
SKPoint FinalEndPos = context.TranslatePoint(Size);
|
||||
context.canvas.DrawOval(
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Progrart.Core.Graphics
|
||||
__object.Set("Color", ProgrartFunctions.color(engine, 1, 1, 1, 1));
|
||||
}
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -33,13 +33,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
foreach (var item in this.Children)
|
||||
{
|
||||
if (item is Path p)
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -84,7 +84,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
|
||||
if (__object.Get("Source") is JsString source)
|
||||
this.imgFile = source.AsString();
|
||||
@@ -93,7 +93,7 @@ namespace Progrart.Core.Graphics
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint FinalStartPos = context.TranslatePoint(Start);
|
||||
SKPoint Size = context.TranslatePoint(this.Size);
|
||||
if (imgFile == null) return;
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -65,13 +65,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint FinalStartPos = context.TranslatePoint(Start);
|
||||
SKPoint FinalEndPos = context.TranslatePoint(Size);
|
||||
context.canvas.DrawRect(
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Diagnostics;
|
||||
|
||||
namespace Progrart.Core.Graphics
|
||||
{
|
||||
public class RoundRectangle : BaseElement
|
||||
public class RoundRectangle : BaseElement
|
||||
{
|
||||
|
||||
float StrokeWidth;
|
||||
@@ -43,7 +43,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -71,15 +71,15 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint Position = context.TranslatePoint(Start);
|
||||
SKPoint Size = context.TranslatePoint(this.Size);
|
||||
SKPoint Size = context.TranslatePoint(this.Size);
|
||||
float rx = context.TranslateSize(this.rx);
|
||||
float ry = context.TranslateSize(this.ry);
|
||||
Trace.WriteLine($"Draw Rectangle from {Position} to {Size} using {Color} with size of {StrokeWidth}.");
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -61,7 +61,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
if (__object.Get("Font") is JsString fontObj)
|
||||
fontFamily = fontObj.AsString();
|
||||
}
|
||||
@@ -69,7 +69,7 @@ namespace Progrart.Core.Graphics
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
SKPoint pos = context.TranslatePoint(Position);
|
||||
float Size = context.TranslateSize(this.Size);
|
||||
SKTextAlign align = alignment.ToLower() switch
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
if (__object is not null)
|
||||
{
|
||||
@@ -77,13 +77,13 @@ namespace Progrart.Core.Graphics
|
||||
}
|
||||
|
||||
if (__object.Get("Shader") is JsObject shaderObj)
|
||||
shader = ProgrartConversion.ObtainFromJsObject(shaderObj);
|
||||
shader = ProgrartConversion.ObtainFromJsObject(context, shaderObj);
|
||||
}
|
||||
}
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
LoadProperties();
|
||||
LoadProperties(context);
|
||||
var v0 = context.TranslatePoint(Vertex0);
|
||||
var v1 = context.TranslatePoint(Vertex1);
|
||||
var v2 = context.TranslatePoint(Vertex2);
|
||||
|
||||
@@ -38,9 +38,9 @@ namespace Progrart.Core.Graphics
|
||||
context.canvas.RotateDegrees(-rotate, context.DrawingCore.Width / 2, context.DrawingCore.Height / 2);
|
||||
context.canvas.Translate(-tx, -ty);
|
||||
}
|
||||
public override void LoadProperties()
|
||||
public override void LoadProperties(RenderContext context)
|
||||
{
|
||||
base.LoadProperties();
|
||||
base.LoadProperties(context);
|
||||
if (__object is null) return;
|
||||
{
|
||||
if (__object.Get("Translate") is JsObject translate)
|
||||
@@ -61,7 +61,7 @@ namespace Progrart.Core.Graphics
|
||||
public override void Render(RenderContext context)
|
||||
{
|
||||
base.Render(context);
|
||||
this.LoadProperties();
|
||||
this.LoadProperties(context);
|
||||
Transform(context);
|
||||
foreach (var item in Children)
|
||||
{
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace Progrart.Core.JSExecution
|
||||
}
|
||||
return new SKColorF(r, g, b, a);
|
||||
}
|
||||
public static SKShader? ObtainFromJsObject(JsObject jsObject)
|
||||
public static SKShader? ObtainFromJsObject(RenderContext context, JsObject jsObject)
|
||||
{
|
||||
var type_str = jsObject.Get("Type").AsString();
|
||||
if (Enum.TryParse<ShaderType>(type_str, out var type))
|
||||
@@ -55,21 +55,16 @@ namespace Progrart.Core.JSExecution
|
||||
var sy = (float)jsObject.Get("Start").Get("y").AsNumber();
|
||||
var ex = (float)jsObject.Get("End").Get("x").AsNumber();
|
||||
var ey = (float)jsObject.Get("End").Get("y").AsNumber();
|
||||
var s = context.TranslatePoint(sx, sy);
|
||||
var e = context.TranslatePoint(ex, ey);
|
||||
SKColor C0 = SKColors.Black;
|
||||
SKColor C1 = SKColors.White;
|
||||
float p0 = 0;
|
||||
float p1 = 1;
|
||||
if (jsObject.Get("Colors") is JsArray color_array)
|
||||
{
|
||||
if (color_array[0] is JsObject c0)
|
||||
if (color_array[1] is JsObject c1)
|
||||
{
|
||||
|
||||
C0 = (SKColor)ObtainSKColorFFromJsObject(c0);
|
||||
C1 = (SKColor)ObtainSKColorFFromJsObject(c1);
|
||||
|
||||
}
|
||||
}
|
||||
if (jsObject.Get("ColorStart") is JsObject colorStart)
|
||||
C0 = (SKColor)ObtainSKColorFFromJsObject(colorStart);
|
||||
if (jsObject.Get("ColorEnd") is JsObject colorEnd)
|
||||
C1 = (SKColor)ObtainSKColorFFromJsObject(colorEnd);
|
||||
if (jsObject.Get("Positions") is JsArray pos_array)
|
||||
{
|
||||
if (pos_array[0] is JsNumber P0)
|
||||
@@ -81,7 +76,7 @@ namespace Progrart.Core.JSExecution
|
||||
}
|
||||
var TileMode_str = jsObject.Get("TileMode").AsString();
|
||||
if (Enum.TryParse<SKShaderTileMode>(TileMode_str, out var SKShaderTileMode))
|
||||
return SKShader.CreateLinearGradient(new SKPoint(sx, sy), new SKPoint(ex, ey),
|
||||
return SKShader.CreateLinearGradient(s, e,
|
||||
[C0, C1], [p0, p1], SKShaderTileMode);
|
||||
}
|
||||
break;
|
||||
@@ -89,6 +84,7 @@ namespace Progrart.Core.JSExecution
|
||||
{
|
||||
var sx = (float)jsObject.Get("Center").Get("x").AsNumber();
|
||||
var sy = (float)jsObject.Get("Center").Get("y").AsNumber();
|
||||
var s = context.TranslatePoint(sx, sy);
|
||||
var radius = (float)jsObject.Get("Radius").AsNumber();
|
||||
SKColor C0 = SKColors.Black;
|
||||
SKColor C1 = SKColors.White;
|
||||
@@ -116,7 +112,7 @@ namespace Progrart.Core.JSExecution
|
||||
}
|
||||
var TileMode_str = jsObject.Get("TileMode").AsString();
|
||||
if (Enum.TryParse<SKShaderTileMode>(TileMode_str, out var SKShaderTileMode))
|
||||
return SKShader.CreateRadialGradient(new SKPoint(sx, sy), radius,
|
||||
return SKShader.CreateRadialGradient(s, radius,
|
||||
[C0, C1], [p0, p1], SKShaderTileMode);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -65,6 +65,7 @@ namespace Progrart.Core.JSExecution
|
||||
engine.Engine.SetValue("piximage", piximage);
|
||||
engine.Engine.SetValue("piximg", piximage);
|
||||
engine.Engine.SetValue("color3", color3);
|
||||
engine.Engine.SetValue("color4", color4);
|
||||
engine.Engine.SetValue("text", text);
|
||||
engine.Engine.SetValue("color_hex", color_hex);
|
||||
engine.Engine.SetValue("linear_gradient", linear_gradient);
|
||||
|
||||
@@ -47,11 +47,10 @@ namespace Progrart.Core.JSExecution
|
||||
obj.Set("End", point);
|
||||
}
|
||||
{
|
||||
obj.Set("Colors", new JsArray(engine, [
|
||||
color(engine, 1, 1, 1, 1) ,
|
||||
color(engine, 1, 1, 1, 1)
|
||||
]
|
||||
));
|
||||
obj.Set("ColorStart", color(engine, 1, 1, 1, 1));
|
||||
}
|
||||
{
|
||||
obj.Set("ColorEnd", color(engine, 1, 1, 1, 1));
|
||||
}
|
||||
{
|
||||
obj.Set("Positions", new JsArray(engine, new[] { new JsNumber(0), new JsNumber(1) }));
|
||||
|
||||
Reference in New Issue
Block a user