1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2026-01-02 10:43:31 +00:00

Brushed up brushes

This commit is contained in:
SpoinkyNL 2016-10-28 22:47:31 +02:00
parent f797bc470a
commit a9194e6906
6 changed files with 70 additions and 29 deletions

View File

@ -16,7 +16,7 @@ namespace Artemis.Profiles.Lua.Brushes
public LuaLinearGradientBrush(Script script, LinearGradientBrush linearGradientBrush) public LuaLinearGradientBrush(Script script, LinearGradientBrush linearGradientBrush)
{ {
_script = script; _script = script;
Brush = linearGradientBrush; LinearGradientBrush = linearGradientBrush;
} }
public LuaLinearGradientBrush(Script script, Table gradientColors, public LuaLinearGradientBrush(Script script, Table gradientColors,
@ -30,13 +30,14 @@ namespace Artemis.Profiles.Lua.Brushes
/// The underlying brush /// The underlying brush
/// </summary> /// </summary>
[MoonSharpVisible(false)] [MoonSharpVisible(false)]
public new LinearGradientBrush Brush public LinearGradientBrush LinearGradientBrush
{ {
get { return _brush; } get { return _brush; }
set set
{ {
_brush = value; _brush = value;
_brush.Freeze(); _brush.Freeze();
Brush = _brush;
} }
} }
@ -45,12 +46,12 @@ namespace Artemis.Profiles.Lua.Brushes
/// </summary> /// </summary>
public Table Colors public Table Colors
{ {
get { return CreateGradientTable(_script, Brush.GradientStops); } get { return CreateGradientTable(_script, LinearGradientBrush.GradientStops); }
set set
{ {
var updatedBrush = Brush.CloneCurrentValue(); var updatedBrush = LinearGradientBrush.CloneCurrentValue();
updatedBrush.GradientStops = CreateGradientCollection(value); updatedBrush.GradientStops = CreateGradientCollection(value);
Brush = updatedBrush; LinearGradientBrush = updatedBrush;
} }
} }
@ -65,7 +66,7 @@ namespace Artemis.Profiles.Lua.Brushes
private void SetupBrush(Table gradientColors, double startX, double startY, double endX, double endY) private void SetupBrush(Table gradientColors, double startX, double startY, double endX, double endY)
{ {
var collection = CreateGradientCollection(gradientColors); var collection = CreateGradientCollection(gradientColors);
Brush = new LinearGradientBrush(collection, new Point(startX, startY), new Point(endX, endY)); LinearGradientBrush = new LinearGradientBrush(collection, new Point(startX, startY), new Point(endX, endY));
} }
/// <summary> /// <summary>

View File

@ -14,7 +14,7 @@ namespace Artemis.Profiles.Lua.Brushes
public LuaRadialGradientBrush(Script script, RadialGradientBrush radialGradientBrush) public LuaRadialGradientBrush(Script script, RadialGradientBrush radialGradientBrush)
{ {
_script = script; _script = script;
Brush = radialGradientBrush; RadialGradientBrush = radialGradientBrush;
} }
public LuaRadialGradientBrush(Script script, Table gradientColors, public LuaRadialGradientBrush(Script script, Table gradientColors,
@ -28,13 +28,14 @@ namespace Artemis.Profiles.Lua.Brushes
/// The underlying brush /// The underlying brush
/// </summary> /// </summary>
[MoonSharpVisible(false)] [MoonSharpVisible(false)]
public new RadialGradientBrush Brush public RadialGradientBrush RadialGradientBrush
{ {
get { return _brush; } get { return _brush; }
set set
{ {
_brush = value; _brush = value;
_brush.Freeze(); _brush.Freeze();
Brush = _brush;
} }
} }
@ -43,12 +44,12 @@ namespace Artemis.Profiles.Lua.Brushes
/// </summary> /// </summary>
public Table Colors public Table Colors
{ {
get { return LuaLinearGradientBrush.CreateGradientTable(_script, Brush.GradientStops); } get { return LuaLinearGradientBrush.CreateGradientTable(_script, RadialGradientBrush.GradientStops); }
set set
{ {
var updatedBrush = Brush.CloneCurrentValue(); var updatedBrush = RadialGradientBrush.CloneCurrentValue();
updatedBrush.GradientStops = LuaLinearGradientBrush.CreateGradientCollection(value); updatedBrush.GradientStops = LuaLinearGradientBrush.CreateGradientCollection(value);
Brush = updatedBrush; RadialGradientBrush = updatedBrush;
} }
} }
@ -63,7 +64,7 @@ namespace Artemis.Profiles.Lua.Brushes
private void SetupBrush(Table gradientColors, double centerX, double centerY, double originX, double originY) private void SetupBrush(Table gradientColors, double centerX, double centerY, double originX, double originY)
{ {
var collection = LuaLinearGradientBrush.CreateGradientCollection(gradientColors); var collection = LuaLinearGradientBrush.CreateGradientCollection(gradientColors);
Brush = new RadialGradientBrush(collection) RadialGradientBrush = new RadialGradientBrush(collection)
{ {
Center = new Point(centerX, centerY), Center = new Point(centerX, centerY),
GradientOrigin = new Point(originX, originY) GradientOrigin = new Point(originX, originY)

View File

@ -12,25 +12,26 @@ namespace Artemis.Profiles.Lua.Brushes
public LuaSolidColorBrush(SolidColorBrush solidColorBrush) public LuaSolidColorBrush(SolidColorBrush solidColorBrush)
{ {
Brush = solidColorBrush; SolidColorBrush = solidColorBrush;
} }
public LuaSolidColorBrush(string hexCode) public LuaSolidColorBrush(string hexCode)
{ {
Brush = new SolidColorBrush(new Color().FromHex(hexCode)); SolidColorBrush = new SolidColorBrush(new Color().FromHex(hexCode));
} }
/// <summary> /// <summary>
/// The underlying brush /// The underlying brush
/// </summary> /// </summary>
[MoonSharpVisible(false)] [MoonSharpVisible(false)]
public new SolidColorBrush Brush public SolidColorBrush SolidColorBrush
{ {
get { return _brush; } get { return _brush; }
set set
{ {
_brush = value; _brush = value;
_brush.Freeze(); _brush.Freeze();
Brush = _brush;
} }
} }
@ -39,8 +40,8 @@ namespace Artemis.Profiles.Lua.Brushes
/// </summary> /// </summary>
public string Color public string Color
{ {
get { return Brush.Color.ToHex(); } get { return SolidColorBrush.Color.ToHex(); }
set { Brush = new SolidColorBrush(new Color().FromHex(value)); } set { SolidColorBrush = new SolidColorBrush(new Color().FromHex(value)); }
} }
} }
} }

View File

@ -13,11 +13,9 @@ namespace Artemis.Profiles.Lua
_script = script; _script = script;
} }
// TODO: Check default values public LuaSolidColorBrush GetSolidColorBrush(string hexCode)
public LuaRadialGradientBrush GetSolidColorBrush(Table gradientColors,
double centerX = 0.5, double centerY = 0.5, double originX = 0.5, double originY = 0.5)
{ {
return new LuaRadialGradientBrush(_script, gradientColors, centerX, centerY, originX, originY); return new LuaSolidColorBrush(hexCode);
} }
public LuaLinearGradientBrush GetLinearGradientBrush(Table gradientColors, public LuaLinearGradientBrush GetLinearGradientBrush(Table gradientColors,
@ -26,9 +24,11 @@ namespace Artemis.Profiles.Lua
return new LuaLinearGradientBrush(_script, gradientColors, startX, startY, endX, endY); return new LuaLinearGradientBrush(_script, gradientColors, startX, startY, endX, endY);
} }
public LuaSolidColorBrush GetRadialGradientBrush(string hexCode) // TODO: Check default values
public LuaRadialGradientBrush GetRadialGradientBrush(Table gradientColors,
double centerX = 0.5, double centerY = 0.5, double originX = 0.5, double originY = 0.5)
{ {
return new LuaSolidColorBrush(hexCode); return new LuaRadialGradientBrush(_script, gradientColors, centerX, centerY, originX, originY);
} }
} }
} }

View File

@ -1,9 +1,9 @@
using System.Runtime.InteropServices; using System.Globalization;
using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using Artemis.Profiles.Lua.Brushes; using Artemis.Profiles.Lua.Brushes;
using MoonSharp.Interpreter; using MoonSharp.Interpreter;
using Pen = System.Windows.Media.Pen;
namespace Artemis.Profiles.Lua namespace Artemis.Profiles.Lua
{ {
@ -17,10 +17,32 @@ namespace Artemis.Profiles.Lua
_ctx = ctx; _ctx = ctx;
} }
public void DrawCircle(LuaBrush luaBrush, double x, double y, double height, double width) public void DrawEllipse(LuaBrush luaBrush, double x, double y, double height, double width)
{ {
var center = new Point(x + width/2, y + height/2); var center = new Point(x + width/2, y + height/2);
_ctx.DrawEllipse(luaBrush.Brush, new Pen(), center, width, height); _ctx.DrawEllipse(luaBrush.Brush, new Pen(), center, width, height);
} }
public void DrawLine(LuaBrush luaBrush, double startX, double startY, double endX, double endY,
double thickness)
{
_ctx.DrawLine(new Pen(luaBrush.Brush, thickness), new Point(startX, startY), new Point(endX, endY));
}
public void DrawRectangle(LuaBrush luaBrush, double x, double y, double height, double width)
{
_ctx.DrawRectangle(luaBrush.Brush, new Pen(), new Rect(x, y, width, height));
}
public void DrawText(string text, string fontName, int fontSize, LuaBrush luaBrush, double x, double y)
{
var font = Fonts.SystemTypefaces.FirstOrDefault(f => f.FontFamily.ToString() == fontName);
if (font == null)
throw new ScriptRuntimeException($"Font '{fontName}' not found");
var formatted = new FormattedText(text, CultureInfo.InvariantCulture, FlowDirection.LeftToRight, font,
fontSize, luaBrush.Brush);
_ctx.DrawText(formatted, new Point(x, y));
}
} }
} }

View File

@ -14,16 +14,32 @@ namespace Artemis.Profiles.Lua
public event EventHandler<LuaProfileDrawingEventArgs> LuaProfileDrawing; public event EventHandler<LuaProfileDrawingEventArgs> LuaProfileDrawing;
internal void InvokeProfileUpdate(ProfileModel profileModel, IDataModel dataModel, bool preview) internal void InvokeProfileUpdate(ProfileModel profileModel, IDataModel dataModel, bool preview)
{
try
{ {
OnLuaProfileUpdating(new LuaProfileWrapper(profileModel), OnLuaProfileUpdating(new LuaProfileWrapper(profileModel),
new LuaProfileUpdatingEventArgs(dataModel, preview)); new LuaProfileUpdatingEventArgs(dataModel, preview));
} }
catch (Exception)
{
}
}
internal void InvokeProfileDraw(ProfileModel profileModel, IDataModel dataModel, bool preview, DrawingContext c) internal void InvokeProfileDraw(ProfileModel profileModel, IDataModel dataModel, bool preview, DrawingContext c)
{
try
{ {
OnLuaProfileDrawing(new LuaProfileWrapper(profileModel), OnLuaProfileDrawing(new LuaProfileWrapper(profileModel),
new LuaProfileDrawingEventArgs(dataModel, preview, new LuaDrawWrapper(c))); new LuaProfileDrawingEventArgs(dataModel, preview, new LuaDrawWrapper(c)));
} }
catch (Exception)
{
}
}
protected virtual void OnLuaProfileUpdating(LuaProfileWrapper profileModel, LuaProfileUpdatingEventArgs e) protected virtual void OnLuaProfileUpdating(LuaProfileWrapper profileModel, LuaProfileUpdatingEventArgs e)