1 #ifndef _RIVE_COLOR_HPP_
2 #define _RIVE_COLOR_HPP_
14 Color() : m_Buffer{1.0f, 1.0f, 1.0f, 1.0f} {}
16 Color(float r, float g, float b) : m_Buffer{r, g, b, 1.0f} {}
18 Color(float r, float g, float b, float a) : m_Buffer{r, g, b, a} {}
20 Color(int r, int g, int b, int a) : m_Buffer{r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f} {}
22 Color(int r, int g, int b) : m_Buffer{r / 255.0f, g / 255.0f, b / 255.0f, 1.0f} {}
24 Color(float rgba) : m_Buffer{rgba, rgba, rgba, rgba} {}
26 inline const float* values() const { return m_Buffer; }
28 float& operator[](std::size_t idx) { return m_Buffer[idx]; }
29 const float& operator[](std::size_t idx) const { return m_Buffer[idx]; }
30 bool operator==(const Color& b) const
32 return m_Buffer[0] == b[0] && m_Buffer[1] == b[1] && m_Buffer[2] == b[2] && m_Buffer[3] == b[3];
35 void set(float r, float g, float b, float a)
43 void lerp(const Color& second, float amount)
45 float iamount = 1.0f - amount;
46 for (int i = 0; i < 4; i++)
48 m_Buffer[i] = second.m_Buffer[i] * amount + m_Buffer[i] * iamount;
52 void multiply(const Color& second)
54 for (int i = 0; i < 4; i++)
56 m_Buffer[i] *= second.m_Buffer[i];
60 void copy(const Color& second)
62 for (int i = 0; i < 4; i++)
64 m_Buffer[i] = second.m_Buffer[i];
68 void red(float r) { m_Buffer[0] = r; }
69 void green(float r) { m_Buffer[1] = r; }
70 void blue(float r) { m_Buffer[2] = r; }
71 void alpha(float r) { m_Buffer[3] = r; }
73 float red() const { return m_Buffer[0]; }
74 float green() const { return m_Buffer[1]; }
75 float blue() const { return m_Buffer[2]; }
76 float alpha() const { return m_Buffer[3]; }
78 float r() const { return m_Buffer[0]; }
79 float g() const { return m_Buffer[1]; }
80 float b() const { return m_Buffer[2]; }
81 float a() const { return m_Buffer[3]; }