using PixiEditor.DrawingApi.Core.ColorsImpl; using PixiEditor.DrawingApi.Core.Numerics; using PixiEditor.DrawingApi.Core.Surface; namespace ChunkyImageLib.DataHolders; public record struct ShapeData { public ShapeData(VecD center, VecD size, double rotation, int strokeWidth, Color strokeColor, Color fillColor, BlendMode blendMode = BlendMode.SrcOver) { StrokeColor = strokeColor; FillColor = fillColor; Center = center; Size = size; Angle = rotation; StrokeWidth = strokeWidth; BlendMode = blendMode; } public Color StrokeColor { get; } public Color FillColor { get; } public BlendMode BlendMode { get; } public VecD Center { get; } /// Can be negative to show flipping public VecD Size { get; } public double Angle { get; } public int StrokeWidth { get; } public ShapeData AsMirroredAcrossHorAxis(double horAxisY) => new ShapeData(Center.ReflectY(horAxisY), new(Size.X, -Size.Y), -Angle, StrokeWidth, StrokeColor, FillColor, BlendMode); public ShapeData AsMirroredAcrossVerAxis(double verAxisX) => new ShapeData(Center.ReflectX(verAxisX), new(-Size.X, Size.Y), -Angle, StrokeWidth, StrokeColor, FillColor, BlendMode); }