Files
omath/include/uml/color.h
2024-05-18 13:58:54 +03:00

47 lines
1.1 KiB
C++

//
// Created by vlad on 2/4/24.
//
#pragma once
#include "uml/Vector3.h"
#include <cstdint>
#include "uml/Vector4.h"
namespace uml::color
{
struct HSV
{
float m_hue{};
float m_saturation{};
float m_value{};
};
[[nodiscard]]
Vector3 Blend(const Vector3& first, const Vector3& second, float ratio);
class Color : public Vector4
{
public:
Color(float r, float g, float b, float a);
[[nodiscard]]
static Color FromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a);
[[nodiscard]]
static Color FromHSV(float hue, float saturation, float value);
[[nodiscard]]
HSV ToHSV() const;
explicit Color(Vector4 vec);
[[nodiscard]]
Color Blend(const Color& other, float ratio) const;
[[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};}
};
}