timelapsenow/TimelapseExtensions/TestPattern/Extension.cs

83 lines
3.2 KiB
C#

using TimelapseApi;
using System;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing;
using SixLabors.ImageSharp.Drawing.Processing;
namespace TestPattern
{
public class TestPattern : TimelapseExtension
{
public override string Name => "Test Pattern";
public override Guid Id => Guid.Parse("{d918ac89-c07a-4ce4-a94b-c3e6c6f7a7e3}"); //https://duckduckgo.com/?q=guid&t=ffab&ia=answer
protected override void OnCreate(ExtensionFeatures features)
{
features.RegisterFrameHandler((e)=>{
if(Instance == null)
{
return true;
}
if(Instance.HasCamera)
{
return true;
}
int colW=e.Width / 7;
int widthtotalBottom = (int)(colW* 3.80);
int colH=(int)(e.Height * 0.70);
int bottomY=(int)(e.Height*0.80);
int bottomW = widthtotalBottom/3;
Action<Color,int,IImageProcessingContext> draw=(color,i,ipc)=>{
ipc.FillPolygon(color,new PointF(0+(colW*i),0),new PointF(colW + (colW*i),0),new PointF(colW + (colW*i),colH),new PointF(0+(colW*i),colH),new PointF(0+(colW*i),0));
};
Action<Color,int,IImageProcessingContext> draw_middle = (color,i,ipc)=>{
ipc.FillPolygon(color,new PointF(0+(colW*i),colH),new PointF(colW + (colW*i),colH),new PointF(colW + (colW*i),bottomY),new PointF(0+(colW*i),bottomY),new PointF(0+(colW*i),0));
};
Action<Color,int,IImageProcessingContext> draw_bottom = (color,i,ipc)=>{
ipc.FillPolygon(color,new PointF(0+(bottomW*i),bottomY),new PointF(bottomW + (bottomW*i),bottomY),new PointF(bottomW + (bottomW*i),e.Height),new PointF(0+(bottomW*i),e.Height),new PointF(0+(bottomW*i),bottomY));
};
e.Mutate((e)=>{
var white=Color.White;
var yellow = Color.Yellow;
var aqua = Color.Aqua;
var magenta =Color.Magenta;
var red=Color.Red;
var blue = Color.Blue;
var black=Color.Black;
var navy=Color.Navy;
var lime=Color.Lime;
draw(white,0,e);
draw(yellow,1,e);
draw(aqua,2,e);
draw(lime,3,e);
draw(magenta,4,e);
draw(red,5,e);
draw(blue,6,e);
draw_middle(red,2,e);
draw_middle(blue,1,e);
draw_middle(magenta,3,e);
draw_middle(lime,4,e);
draw_middle(aqua,5,e);
draw_middle(yellow,6,e);
draw_bottom(navy,0,e);
draw_bottom(white,1,e);
draw_bottom(navy,2,e);
});
return true;
},"Test Pattern",0);
}
}
}