package main

import (
	"image"
	"image/color"

	"git.nkpl.cc/twocookedfaggots/imageutils/util"
)

func NegateRGBA(c color.RGBA) color.RGBA {
	c.R = 255 - c.R
	c.G = 255 - c.G
	c.B = 255 - c.B
	return c
}

type Negate struct{ image.Image }

func (n Negate) ColorModel() color.Model { return n.Image.ColorModel() }
func (n Negate) Bounds() image.Rectangle { return n.Image.Bounds() }
func (n Negate) At(x, y int) color.Color {
	c := n.Image.At(x, y)
	r, g, b, a := c.RGBA()
	RGBAColor := color.RGBA{
		R: uint8(r >> 8),
		G: uint8(g >> 8),
		B: uint8(b >> 8),
		A: uint8(a >> 8),
	}
	return NegateRGBA(RGBAColor)
}

func main() {
	if err := util.ProcessStdio(func(img image.Image) image.Image {
		return Negate{img}
	}); err != nil {
		panic(err)
	}
}
