package hints

import (
	"regexp"
	"strconv"
)

func init() {
	hinters = append(hinters, hintColours)
}

func hintColours(word string, context string, wordX uint16, wordY uint16) *Hint {

	item := NewHint(word, context, wordX, wordY)

	if isColour(word) {

		r, err := strconv.ParseInt(word[1:3], 16, 64)
		if err != nil {
			return nil
		}
		g, err := strconv.ParseInt(word[3:5], 16, 64)
		if err != nil {
			return nil
		}
		b, err := strconv.ParseInt(word[5:7], 16, 64)
		if err != nil {
			return nil
		}

		item.Description = word
		item.BackgroundColour = [3]float32{float32(r) / 255, float32(g) / 255, float32(b) / 255}
		if (r+g+b)/3 < 128 {
			item.ForegroundColour = [3]float32{1, 1, 1}
		} else {
			item.ForegroundColour = [3]float32{0, 0, 0}
		}
		return item
	}

	return nil
}

func isColour(s string) bool {
	re := regexp.MustCompile("#[0-9A-Fa-f]{6}")
	return re.MatchString(s)
}
