diff --git a/Directory.Packages.props b/Directory.Packages.props
index 72e848e..44b22ad 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -7,7 +7,7 @@
-
+
@@ -15,7 +15,7 @@
-
+
diff --git a/Progrart.Core/Graphics/BaseElement.cs b/Progrart.Core/Graphics/BaseElement.cs
index f89b449..69c4a2b 100644
--- a/Progrart.Core/Graphics/BaseElement.cs
+++ b/Progrart.Core/Graphics/BaseElement.cs
@@ -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) { }
}
}
diff --git a/Progrart.Core/Graphics/Circle.cs b/Progrart.Core/Graphics/Circle.cs
index a0a4477..dc111dc 100644
--- a/Progrart.Core/Graphics/Circle.cs
+++ b/Progrart.Core/Graphics/Circle.cs
@@ -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(
diff --git a/Progrart.Core/Graphics/Line.cs b/Progrart.Core/Graphics/Line.cs
index 3731a3d..5132414 100644
--- a/Progrart.Core/Graphics/Line.cs
+++ b/Progrart.Core/Graphics/Line.cs
@@ -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(
diff --git a/Progrart.Core/Graphics/Oval.cs b/Progrart.Core/Graphics/Oval.cs
index b4ba2df..69c38f4 100644
--- a/Progrart.Core/Graphics/Oval.cs
+++ b/Progrart.Core/Graphics/Oval.cs
@@ -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(
diff --git a/Progrart.Core/Graphics/PathElement.cs b/Progrart.Core/Graphics/PathElement.cs
index e0c90bd..dd511a0 100644
--- a/Progrart.Core/Graphics/PathElement.cs
+++ b/Progrart.Core/Graphics/PathElement.cs
@@ -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)
diff --git a/Progrart.Core/Graphics/PixImage.cs b/Progrart.Core/Graphics/PixImage.cs
index d5fbf1c..99492c9 100644
--- a/Progrart.Core/Graphics/PixImage.cs
+++ b/Progrart.Core/Graphics/PixImage.cs
@@ -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;
diff --git a/Progrart.Core/Graphics/Rectangle.cs b/Progrart.Core/Graphics/Rectangle.cs
index bb80b43..b4fef38 100644
--- a/Progrart.Core/Graphics/Rectangle.cs
+++ b/Progrart.Core/Graphics/Rectangle.cs
@@ -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(
diff --git a/Progrart.Core/Graphics/RoundRectangle.cs b/Progrart.Core/Graphics/RoundRectangle.cs
index 728db8c..7630e04 100644
--- a/Progrart.Core/Graphics/RoundRectangle.cs
+++ b/Progrart.Core/Graphics/RoundRectangle.cs
@@ -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}.");
diff --git a/Progrart.Core/Graphics/Text.cs b/Progrart.Core/Graphics/Text.cs
index 3381c41..6522d41 100644
--- a/Progrart.Core/Graphics/Text.cs
+++ b/Progrart.Core/Graphics/Text.cs
@@ -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
diff --git a/Progrart.Core/Graphics/Triangle.cs b/Progrart.Core/Graphics/Triangle.cs
index f519a91..2ca88e1 100644
--- a/Progrart.Core/Graphics/Triangle.cs
+++ b/Progrart.Core/Graphics/Triangle.cs
@@ -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);
diff --git a/Progrart.Core/Graphics/VisualRoot.cs b/Progrart.Core/Graphics/VisualRoot.cs
index dd255cf..f75fb07 100644
--- a/Progrart.Core/Graphics/VisualRoot.cs
+++ b/Progrart.Core/Graphics/VisualRoot.cs
@@ -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)
{
diff --git a/Progrart.Core/JSExecution/ProgrartConversion.cs b/Progrart.Core/JSExecution/ProgrartConversion.cs
index 158fa2e..56b2218 100644
--- a/Progrart.Core/JSExecution/ProgrartConversion.cs
+++ b/Progrart.Core/JSExecution/ProgrartConversion.cs
@@ -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(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(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(TileMode_str, out var SKShaderTileMode))
- return SKShader.CreateRadialGradient(new SKPoint(sx, sy), radius,
+ return SKShader.CreateRadialGradient(s, radius,
[C0, C1], [p0, p1], SKShaderTileMode);
}
break;
diff --git a/Progrart.Core/JSExecution/ProgrartExecutor.cs b/Progrart.Core/JSExecution/ProgrartExecutor.cs
index 484751a..1d34beb 100644
--- a/Progrart.Core/JSExecution/ProgrartExecutor.cs
+++ b/Progrart.Core/JSExecution/ProgrartExecutor.cs
@@ -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);
diff --git a/Progrart.Core/JSExecution/ProgrartFunctions.cs b/Progrart.Core/JSExecution/ProgrartFunctions.cs
index 28130b5..b5db9e7 100644
--- a/Progrart.Core/JSExecution/ProgrartFunctions.cs
+++ b/Progrart.Core/JSExecution/ProgrartFunctions.cs
@@ -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) }));
diff --git a/Progrart/Controls/FileItem.axaml.cs b/Progrart/Controls/FileItem.axaml.cs
index 841b599..8b66d11 100644
--- a/Progrart/Controls/FileItem.axaml.cs
+++ b/Progrart/Controls/FileItem.axaml.cs
@@ -165,7 +165,6 @@ public partial class FileItem : UserControl
private async void MoveToMenuItem_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
var content = new BrowserDialog();
- content.Title = "";
content.onOK = async (si) =>
{
if (si is IStorageFolder destFolder)
@@ -176,7 +175,7 @@ public partial class FileItem : UserControl
await currentItem.MoveAsync(destFolder);
}
}
- return true;
+ return false;
};
if ((root ?? this).CurrentItem is IStorageItem item)
content.SetFileITem(new FileItem(item, null, true));
@@ -194,7 +193,7 @@ public partial class FileItem : UserControl
else if (currentItem is IStorageFile file)
{
}
- return true;
+ return false;
};
if ((root ?? this).CurrentItem is IStorageItem item)
content.SetFileITem(new FileItem(item, null, true));
diff --git a/Progrart/Views/MainView.axaml b/Progrart/Views/MainView.axaml
index 9dbe4a5..e58cc54 100644
--- a/Progrart/Views/MainView.axaml
+++ b/Progrart/Views/MainView.axaml
@@ -55,7 +55,8 @@
-
+
+
Progart
diff --git a/Progrart/Views/MainView.axaml.cs b/Progrart/Views/MainView.axaml.cs
index 67f0517..0cfb2a7 100644
--- a/Progrart/Views/MainView.axaml.cs
+++ b/Progrart/Views/MainView.axaml.cs
@@ -279,4 +279,8 @@ public partial class MainView : UserControl
{
MainTabHost.AddPage(new SettingsPage());
}
+
+ private void ExitItem_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ }
}
\ No newline at end of file