From 17fae55fdf48670a8e3ac6e38cbf095f05be3c36 Mon Sep 17 00:00:00 2001 From: Orange Date: Tue, 7 May 2024 02:12:16 +0300 Subject: [PATCH] fixed bug --- include/uml/color.h | 10 +++++++--- source/color.cpp | 13 ++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/include/uml/color.h b/include/uml/color.h index aeae8a8..f811395 100644 --- a/include/uml/color.h +++ b/include/uml/color.h @@ -17,9 +17,13 @@ namespace uml::color class Color : public Vector4 { public: - Color(float r, float g, float, float b, float a = 1.f); - Color(const Vector4& vec); + Color(float r, float g, float b, float a); + static Color FromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a); + explicit Color(const Vector4& vec); [[nodiscard]] Color Blend(const Color& other, float ratio) const; - explicit operator Vector4() {return {x,y,z,w};} + + [[nodiscard]] static Color Red() {return {1.f, 0.f, 0.f, 1.f};} + [[nodiscard]] static Color Green() {return {0.f, 1.f, 0.f, 1.f};} + [[nodiscard]] static Color Blue() {return {0.f, 0.f, 1.f, 1.f};} }; } \ No newline at end of file diff --git a/source/color.cpp b/source/color.cpp index 5598a56..876d056 100644 --- a/source/color.cpp +++ b/source/color.cpp @@ -14,16 +14,23 @@ namespace uml::color Color Color::Blend(const Color &other, float ratio) const { - return *this * (1.f - std::clamp(ratio, 0.f, 1.f)) + other * ratio; + return Color( (*this * (1.f - ratio)) + (other * ratio) ); } - Color::Color(float r, float g, float, float b, float a) : Vector4(r,g,b,a) + Color::Color(float r, float g, float b, float a) : Vector4(r,g,b,a) { } - Color::Color(const Vector4 &vec) : Vector4(vec.x, vec.y, vec.z, vec.w) + Color::Color(const Vector4 &vec) : Vector4(vec) { } + + Color Color::FromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) + { + + return Color{Vector4(r, g, b, a) / 255.f}; + + } } \ No newline at end of file