package main

import (
	"errors"
	"fmt"
)

func ConvertStringToColour(colourStr string) (int, error) {
	if len(colourStr) == 0 {
		return 0xFF0000, nil // Default colour if no string is provided
	}
	if colourStr[0] == '#' {
		colourStr = colourStr[1:]
	}
	if len(colourStr) != 6 && len(colourStr) != 3 {
		return 0, errors.New("colour must be a valid hex string")
	}
	var colour int
	_, err := fmt.Sscanf(colourStr, "%x", &colour)
	if err != nil {
		return 0, fmt.Errorf("invalid colour format: %v", err)
	}
	if len(colourStr) == 3 {
		r := (colour & 0xF00) >> 8
		g := (colour & 0x0F0) >> 4
		b := (colour & 0x00F) >> 0
		colour = (r << 16 << 4) | (g << 8 << 4) | (b << 0 << 4)
	}
	return colour, nil
}

func ConvertColourToString(colour int) string {
	return fmt.Sprintf("#%06X", colour)
}