/bs/palette.go
package bs

import (
    "image"

    "bytex64.net/code/bitsmash/palette"
)

func findPalette(img image.Image) int {
    selected := 0
    minimum_error := float64(1e99)
    size := img.Bounds().Size()

    for i, p := range(palette.Palettes) {
        error := float64(0)
        for y := 0; y < size.Y; y++ {
            for x := 0; x < size.X; x++ {
                pixel_color := img.At(x, y)
                _, _, _, a := pixel_color.RGBA()
                if a < 0x7FFF {
                    // Don't calculate transparent pixels
                    continue
                }
                palette_color := p.Convert(pixel_color)
                error += palette_color.(palette.RGB8).Distance(pixel_color)
            }
        }
        if error < minimum_error {
            selected = i
            minimum_error = error
        }
    }

    return selected
}

func createPaletteMap(pixels []uint8) uint32 {
    m := uint32(0);

    for _, v := range(pixels) {
        m |= 1 << v;
    }

    return m;
}