1
0
Fork 0
spectre/include/Spectre/Math/Color.h
2016-01-10 09:26:43 +01:00

65 lines
1.6 KiB
C

#ifndef SPECTRE_MATH_COLOR_H
#define SPECTRE_MATH_COLOR_H
#include "Vector3.h"
#include "Vector4.h"
// Basic structure representing a color in 32bit RGBA
struct Color
{
public :
unsigned char r, g, b, a;
// Predefined colors
static const Color Black;
static const Color White;
static const Color Red;
static const Color Green;
static const Color Blue;
static const Color Transparant;
Color(unsigned char red = 0, unsigned char green = 0, unsigned char blue = 0, unsigned char alpha = 255);
// Assignment
Color(const Color& color);
Color& operator=(const Color& color);
// Convert to RGB float.
// Each component is clamped to the range [0.0f, 1.0f]
Vector3f toRGBf() const;
// Convert to RGBA float.
// Each component is clamped to the range [0.0f, 1.0f]
Vector4f toRGBAf() const;
};
// ---------
// Compare
// ---------
bool operator ==(const Color& a, const Color& b);
bool operator !=(const Color& a, const Color& b);
// ------------
// Arithmetic
// ------------
Color operator +(const Color& a, const Color& b);
Color operator -(const Color& a, const Color& b);
Color operator /(const Color& a, const Color& b);
Color operator *(const Color& a, const Color& b);
Color& operator +=(Color& a, const Color& b);
Color& operator -=(Color& a, const Color& b);
Color& operator /=(Color& a, const Color& b);
Color& operator *=(Color& a, const Color& b);
// -------------------
// Scalar arithmetic
// -------------------
Color operator +(const Color& a, unsigned int s);
Color operator -(const Color& a, unsigned int s);
Color operator /(const Color& a, unsigned int s);
Color operator *(const Color& a, unsigned int s);
#endif /* SPECTRE_MATH_COLOR_H */