Batman
This commit is contained in:
149
project/src/ColorRGB.h
Normal file
149
project/src/ColorRGB.h
Normal file
@@ -0,0 +1,149 @@
|
||||
#pragma once
|
||||
#include "MathHelpers.h"
|
||||
|
||||
namespace dae
|
||||
{
|
||||
struct ColorRGB
|
||||
{
|
||||
float r{};
|
||||
float g{};
|
||||
float b{};
|
||||
|
||||
void MaxToOne()
|
||||
{
|
||||
const float maxValue = std::max(r, std::max(g, b));
|
||||
if (maxValue > 1.f)
|
||||
*this /= maxValue;
|
||||
}
|
||||
|
||||
static ColorRGB Lerp(const ColorRGB& c1, const ColorRGB& c2, float factor)
|
||||
{
|
||||
return { Lerpf(c1.r, c2.r, factor), Lerpf(c1.g, c2.g, factor), Lerpf(c1.b, c2.b, factor) };
|
||||
}
|
||||
|
||||
#pragma region ColorRGB (Member) Operators
|
||||
const ColorRGB& operator+=(const ColorRGB& c)
|
||||
{
|
||||
r += c.r;
|
||||
g += c.g;
|
||||
b += c.b;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator+(const ColorRGB& c)
|
||||
{
|
||||
return *this += c;
|
||||
}
|
||||
|
||||
ColorRGB operator+(const ColorRGB& c) const
|
||||
{
|
||||
return { r + c.r, g + c.g, b + c.b };
|
||||
}
|
||||
|
||||
const ColorRGB& operator-=(const ColorRGB& c)
|
||||
{
|
||||
r -= c.r;
|
||||
g -= c.g;
|
||||
b -= c.b;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator-(const ColorRGB& c)
|
||||
{
|
||||
return *this -= c;
|
||||
}
|
||||
|
||||
ColorRGB operator-(const ColorRGB& c) const
|
||||
{
|
||||
return { r - c.r, g - c.g, b - c.b };
|
||||
}
|
||||
|
||||
const ColorRGB& operator*=(const ColorRGB& c)
|
||||
{
|
||||
r *= c.r;
|
||||
g *= c.g;
|
||||
b *= c.b;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator*(const ColorRGB& c)
|
||||
{
|
||||
return *this *= c;
|
||||
}
|
||||
|
||||
ColorRGB operator*(const ColorRGB& c) const
|
||||
{
|
||||
return { r * c.r, g * c.g, b * c.b };
|
||||
}
|
||||
|
||||
const ColorRGB& operator/=(const ColorRGB& c)
|
||||
{
|
||||
r /= c.r;
|
||||
g /= c.g;
|
||||
b /= c.b;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator/(const ColorRGB& c)
|
||||
{
|
||||
return *this /= c;
|
||||
}
|
||||
|
||||
const ColorRGB& operator*=(float s)
|
||||
{
|
||||
r *= s;
|
||||
g *= s;
|
||||
b *= s;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator*(float s)
|
||||
{
|
||||
return *this *= s;
|
||||
}
|
||||
|
||||
ColorRGB operator*(float s) const
|
||||
{
|
||||
return { r * s, g * s,b * s };
|
||||
}
|
||||
|
||||
const ColorRGB& operator/=(float s)
|
||||
{
|
||||
r /= s;
|
||||
g /= s;
|
||||
b /= s;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const ColorRGB& operator/(float s)
|
||||
{
|
||||
return *this /= s;
|
||||
}
|
||||
#pragma endregion
|
||||
};
|
||||
|
||||
//ColorRGB (Global) Operators
|
||||
inline ColorRGB operator*(float s, const ColorRGB& c)
|
||||
{
|
||||
return c * s;
|
||||
}
|
||||
|
||||
namespace colors
|
||||
{
|
||||
static ColorRGB Red{ 1,0,0 };
|
||||
static ColorRGB Blue{ 0,0,1 };
|
||||
static ColorRGB Green{ 0,1,0 };
|
||||
static ColorRGB Yellow{ 1,1,0 };
|
||||
static ColorRGB Cyan{ 0,1,1 };
|
||||
static ColorRGB Magenta{ 1,0,1 };
|
||||
static ColorRGB White{ 1,1,1 };
|
||||
static ColorRGB Black{ 0,0,0 };
|
||||
static ColorRGB Gray{ 0.5f,0.5f,0.5f };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user