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