diff options
Diffstat (limited to 'plugingui')
-rw-r--r-- | plugingui/colour.cc | 58 | ||||
-rw-r--r-- | plugingui/colour.h | 9 |
2 files changed, 15 insertions, 52 deletions
diff --git a/plugingui/colour.cc b/plugingui/colour.cc index dff1a82..9abe7eb 100644 --- a/plugingui/colour.cc +++ b/plugingui/colour.cc @@ -32,79 +32,41 @@ namespace GUI { Colour::Colour() { - data = new float[4]; - data[0] = data[1] = data[2] = data[3] = 1.0f; + data = {1.0f, 1.0f, 1.0f, 1.0f}; } Colour::Colour(float grey, float a) { - data = new float[4]; - - data[0] = data[1] = data[2] = grey; - data[3] = a; + data = {grey, grey, grey, a}; } Colour::Colour(float r, float g, float b, float a) { - data = new float[4]; - - data[0] = r; - data[1] = g; - data[2] = b; - data[3] = a; + data = {r, g, b, a}; } Colour::Colour(std::uint8_t r, std::uint8_t g, std::uint8_t b, std::uint8_t a) : Colour(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f) {} -Colour::Colour(Colour&& other) -{ - if(data) - { - delete[] data; - } - - data = other.data; - other.data = nullptr; -} - Colour::Colour(const Colour& other) { - if(data) - { - delete[] data; - } - - data = new float[4]; - - std::memcpy(data, other.data, 4 * sizeof(float)); + data = other.data; } -Colour::~Colour() +Colour& Colour::operator=(const Colour& other) { - if(data) - { - delete[] data; - } + data = other.data; } -Colour& Colour::operator=(const Colour& other) +bool Colour::operator==(const Colour& other) const { - std::memcpy(data, other.data, 4 * sizeof(float)); - return *this; + return data == other.data; } -Colour& Colour::operator=(Colour&& other) +bool Colour::operator!=(const Colour& other) const { - if(data) - { - delete[] data; - } - - data = other.data; - other.data = nullptr; - return *this; + return !(*this == other); } } // GUI:: diff --git a/plugingui/colour.h b/plugingui/colour.h index 26f424c..3a135fc 100644 --- a/plugingui/colour.h +++ b/plugingui/colour.h @@ -26,6 +26,7 @@ */ #pragma once +#include <array> #include <cstdint> namespace GUI @@ -37,12 +38,12 @@ public: Colour(float grey, float alpha = 1.0f); Colour(float red, float green, float blue, float alpha = 1.0f); Colour(std::uint8_t r, std::uint8_t g, std::uint8_t b, std::uint8_t a); - Colour(Colour&& other); Colour(const Colour& other); - ~Colour(); Colour& operator=(const Colour& other); - Colour& operator=(Colour&& other); + + bool operator==(const Colour& other) const; + bool operator!=(const Colour& other) const; inline float red() const { return data[0]; } inline float green() const { return data[1]; } @@ -50,7 +51,7 @@ public: inline float alpha() const { return data[3]; } private: - float *data{nullptr}; + std::array<float, 4> data; }; } // GUI:: |