#pragma once

namespace kek {

struct Color {
	float r, g, b, a;

	constexpr Color(float r, float g, float b, float a): r(r), g(g), b(b), a(a) {}

	constexpr Color(float r, float g, float b): Color(r, g, b, 1.0) {}

	constexpr Color(): Color(0,0,0,1) {}

	float *valuePointer() {
		return &r;
	}

};

class Colors {

public:
	static constexpr Color RED =			Color(1.0, 0.0, 0.0);
	static constexpr Color ORANGE =			Color(1.0, 0.5, 0.0);
	static constexpr Color YELLOW =			Color(1.0, 1.0, 0.0);
	static constexpr Color GREEN =			Color(0.0, 1.0, 0.0);
	static constexpr Color CYAN =			Color(0.0, 1.0, 1.0);
	static constexpr Color BLUE =			Color(0.0, 0.0, 1.0);
	static constexpr Color PURPLE =			Color(0.5, 0.0, 0.5);
	static constexpr Color MAGENTA =		Color(1.0, 0.0, 1.0);
	static constexpr Color GRAY =			Color(0.5, 0.5, 0.5);
	static constexpr Color WHITE =			Color(1.0, 1.0, 1.0);
	static constexpr Color BLACK =			Color(0.0, 0.0, 0.0);
	static constexpr Color TRANSPARENT =	Color(0.0, 0.0, 0.0, 0.0);

	Colors() = delete;
};

}
