using Hawkeye.VisionBuilder.Workflow.Datatypes;
using Hawkeye.VisionBuilder.Workflow.Operations.Attributes;
using OpenCvSharp;

namespace Hawkeye.VisionBuilder.Workflow.Operations.Image;

[Category("Image")]
public class InvertOperation:BaseOperation
{

    public InvertOperation()
    {
        CanHaveProcessingError = false;
    }

    protected override void InterpretInternal(Context context)
    {
        if (!CheckImageExists(context)) return;
        

        var res = new Mat(context.ActiveImage.ImageData.Size(), context.ActiveImage.ImageData.Type(), Scalar.All(0));
        Cv2.BitwiseNot(context.ActiveImage.ImageData, res);
        context.ActiveImage = new HawkeyeImage()
        {
            ImageData = res
        };

        Status = $"Image inverted";
        Result = true;
    }
}