diff --git a/Artemis/Artemis/Profiles/Lua/Brushes/LuaLinearGradientBrush.cs b/Artemis/Artemis/Profiles/Lua/Brushes/LuaLinearGradientBrush.cs
index 3c934e165..1d2508a2c 100644
--- a/Artemis/Artemis/Profiles/Lua/Brushes/LuaLinearGradientBrush.cs
+++ b/Artemis/Artemis/Profiles/Lua/Brushes/LuaLinearGradientBrush.cs
@@ -13,13 +13,14 @@ namespace Artemis.Profiles.Lua.Brushes
private readonly Script _script;
private LinearGradientBrush _brush;
- public LuaLinearGradientBrush(LinearGradientBrush linearGradientBrush)
+ public LuaLinearGradientBrush(Script script, LinearGradientBrush linearGradientBrush)
{
+ _script = script;
Brush = linearGradientBrush;
}
- public LuaLinearGradientBrush(Script script, Table gradientColors, double startX = 0.5, double startY = 0.0,
- double endX = 0.5, double endY = 1.0)
+ public LuaLinearGradientBrush(Script script, Table gradientColors,
+ double startX, double startY, double endX, double endY)
{
_script = script;
SetupBrush(gradientColors, startX, startY, endX, endY);
@@ -44,7 +45,7 @@ namespace Artemis.Profiles.Lua.Brushes
///
public Table Colors
{
- get { return CreateGradientTable(); }
+ get { return CreateGradientTable(_script, Brush.GradientStops); }
set
{
var updatedBrush = Brush.CloneCurrentValue();
@@ -72,7 +73,7 @@ namespace Artemis.Profiles.Lua.Brushes
///
///
///
- private GradientStopCollection CreateGradientCollection(Table gradientColors)
+ public static GradientStopCollection CreateGradientCollection(Table gradientColors)
{
var collection = new GradientStopCollection();
foreach (var gradientColor in gradientColors.Values)
@@ -89,12 +90,12 @@ namespace Artemis.Profiles.Lua.Brushes
/// Maps the current brush's GradientStopsCollection to a LUA table
///
///
- private Table CreateGradientTable()
+ public static Table CreateGradientTable(Script script, GradientStopCollection gradientStops)
{
- var table = new Table(_script);
- foreach (var gradientStop in Brush.GradientStops)
+ var table = new Table(script);
+ foreach (var gradientStop in gradientStops)
{
- var inner = new Table(_script);
+ var inner = new Table(script);
inner.Append(DynValue.NewString(gradientStop.Color.ToHex()));
inner.Append(DynValue.NewNumber(gradientStop.Offset));
table.Append(DynValue.NewTable(inner));
diff --git a/Artemis/Artemis/Profiles/Lua/Brushes/LuaRadialGradientBrush.cs b/Artemis/Artemis/Profiles/Lua/Brushes/LuaRadialGradientBrush.cs
index 7e692e73f..89de10cbb 100644
--- a/Artemis/Artemis/Profiles/Lua/Brushes/LuaRadialGradientBrush.cs
+++ b/Artemis/Artemis/Profiles/Lua/Brushes/LuaRadialGradientBrush.cs
@@ -1,4 +1,5 @@
-using System.Windows.Media;
+using System.Windows;
+using System.Windows.Media;
using MoonSharp.Interpreter;
using MoonSharp.Interpreter.Interop;
@@ -7,13 +8,25 @@ namespace Artemis.Profiles.Lua.Brushes
[MoonSharpUserData]
public class LuaRadialGradientBrush : LuaBrush
{
+ private readonly Script _script;
private RadialGradientBrush _brush;
- public LuaRadialGradientBrush(RadialGradientBrush radialGradientBrush)
+ public LuaRadialGradientBrush(Script script, RadialGradientBrush radialGradientBrush)
{
+ _script = script;
Brush = radialGradientBrush;
}
+ public LuaRadialGradientBrush(Script script, Table gradientColors,
+ double centerX, double centerY, double originX, double originY)
+ {
+ _script = script;
+ SetupBrush(gradientColors, centerX, centerY, originX, originY);
+ }
+
+ ///
+ /// The underlying brush
+ ///
[MoonSharpVisible(false)]
public new RadialGradientBrush Brush
{
@@ -25,10 +38,36 @@ namespace Artemis.Profiles.Lua.Brushes
}
}
+ ///
+ /// Gets or sets the Brush's GradientStops using a LUA table
+ ///
public Table Colors
{
- get { throw new System.NotImplementedException(); }
- set { throw new System.NotImplementedException(); }
+ get { return LuaLinearGradientBrush.CreateGradientTable(_script, Brush.GradientStops); }
+ set
+ {
+ var updatedBrush = Brush.CloneCurrentValue();
+ updatedBrush.GradientStops = LuaLinearGradientBrush.CreateGradientCollection(value);
+ Brush = updatedBrush;
+ }
+ }
+
+ ///
+ /// Configures the brush according to the provided values usable in LUA
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private void SetupBrush(Table gradientColors, double centerX, double centerY, double originX, double originY)
+ {
+ var collection = LuaLinearGradientBrush.CreateGradientCollection(gradientColors);
+ Brush = new RadialGradientBrush(collection)
+ {
+ Center = new Point(centerX, centerY),
+ GradientOrigin = new Point(originX, originY)
+ };
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/Lua/LuaBrushWrapper.cs b/Artemis/Artemis/Profiles/Lua/LuaBrushWrapper.cs
index 5dcdcba8c..005ed0d35 100644
--- a/Artemis/Artemis/Profiles/Lua/LuaBrushWrapper.cs
+++ b/Artemis/Artemis/Profiles/Lua/LuaBrushWrapper.cs
@@ -1,5 +1,4 @@
-using System.Windows.Media;
-using Artemis.Profiles.Lua.Brushes;
+using Artemis.Profiles.Lua.Brushes;
using MoonSharp.Interpreter;
namespace Artemis.Profiles.Lua
@@ -14,9 +13,11 @@ namespace Artemis.Profiles.Lua
_script = script;
}
- public LuaRadialGradientBrush GetSolidColorBrush(string hexCode)
+ // TODO: Check default values
+ public LuaRadialGradientBrush GetSolidColorBrush(Table gradientColors,
+ double centerX = 0.5, double centerY = 0.5, double originX = 0.5, double originY = 0.5)
{
- return new LuaRadialGradientBrush(new RadialGradientBrush());
+ return new LuaRadialGradientBrush(_script, gradientColors, centerX, centerY, originX, originY);
}
public LuaLinearGradientBrush GetLinearGradientBrush(Table gradientColors,