diff --git a/include/Nazara/Core/Color.hpp b/include/Nazara/Core/Color.hpp index afac6245a..da4e11cd5 100644 --- a/include/Nazara/Core/Color.hpp +++ b/include/Nazara/Core/Color.hpp @@ -33,6 +33,8 @@ namespace Nz inline std::string ToString() const; constexpr Color operator+(const Color& color) const; + constexpr Color operator-(const Color& color) const; + constexpr Color operator*(float scale) const; constexpr Color operator*(const Color& color) const; constexpr Color& operator=(const Color&) = default; @@ -88,7 +90,9 @@ namespace Nz inline bool Serialize(SerializationContext& context, const Color& color, TypeTag); inline bool Unserialize(SerializationContext& context, Color* color, TypeTag); - std::ostream& operator<<(std::ostream& out, const Color& color); + inline std::ostream& operator<<(std::ostream& out, const Color& color); + + constexpr Color operator*(float scale, const Color& color); } #include diff --git a/include/Nazara/Core/Color.inl b/include/Nazara/Core/Color.inl index 3b764cc9b..77f99888d 100644 --- a/include/Nazara/Core/Color.inl +++ b/include/Nazara/Core/Color.inl @@ -85,6 +85,28 @@ namespace Nz return Color(r + color.r, g + color.g, b + color.b, a + color.a); } + /*! + * \brief Subtracts two colors together + * \return Color which is the subtraction + * + * \param color Other color + */ + constexpr Color Color::operator-(const Color& color) const + { + return Color(r - color.r, g - color.g, b - color.b, a - color.a); + } + + /*! + * \brief Scales a color + * \return Color which is the product + * + * \param color Other color + */ + constexpr Color Color::operator*(float scale) const + { + return Color(r * scale, g * scale, b * scale, a * scale); + } + /*! * \brief Multiplies two colors together * \return Color which is the product @@ -725,6 +747,11 @@ namespace Nz { return out << color.ToString(); } + + constexpr Color operator*(float scale, const Color& color) + { + return color * scale; + } } #include