mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Final LUA brush implemented
This commit is contained in:
parent
2bd21bfc0e
commit
f797bc470a
@ -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
|
||||
/// </summary>
|
||||
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
|
||||
/// </summary>
|
||||
/// <param name="gradientColors"></param>
|
||||
/// <returns></returns>
|
||||
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
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
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));
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The underlying brush
|
||||
/// </summary>
|
||||
[MoonSharpVisible(false)]
|
||||
public new RadialGradientBrush Brush
|
||||
{
|
||||
@ -25,10 +38,36 @@ namespace Artemis.Profiles.Lua.Brushes
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Brush's GradientStops using a LUA table
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures the brush according to the provided values usable in LUA
|
||||
/// </summary>
|
||||
/// <param name="gradientColors"></param>
|
||||
/// <param name="centerX"></param>
|
||||
/// <param name="centerY"></param>
|
||||
/// <param name="originX"></param>
|
||||
/// <param name="originY"></param>
|
||||
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)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user