From 3e747d769f63fde60f6095bd1ae7c651d4237f39 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 4 Jun 2016 18:36:00 +0200 Subject: Make Colour movabl;e and make Image contain a vector of Colour instead of raw char data. --- plugingui/colour.cc | 70 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 63 insertions(+), 7 deletions(-) (limited to 'plugingui/colour.cc') diff --git a/plugingui/colour.cc b/plugingui/colour.cc index 88bd75a..d8cd8e9 100644 --- a/plugingui/colour.cc +++ b/plugingui/colour.cc @@ -26,25 +26,81 @@ */ #include "colour.h" +#include + namespace GUI { Colour::Colour() { - red = blue = green = alpha = 1.0; + data = new float[4]; + data[0] = data[1] = data[2] = data[3] = 1.0f; } Colour::Colour(float grey, float a) { - red = green = blue = grey; - alpha = a; + data = new float[4]; + + data[0] = data[1] = data[2] = grey; + data[3] = a; } Colour::Colour(float r, float g, float b, float a) { - red = r; - green = g; - blue = b; - alpha = a; + data = new float[4]; + + data[0] = r; + data[1] = g; + data[2] = b; + data[3] = a; +} + +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)); +} + +Colour::~Colour() +{ + if(data) + { + delete[] data; + } +} + +Colour& Colour::operator=(const Colour& other) +{ + std::memcpy(data, other.data, 4 * sizeof(float)); + return *this; +} + +Colour& Colour::operator=(Colour&& other) +{ + if(data) + { + delete[] data; + } + + data = other.data; + other.data = nullptr; + return *this; } } // GUI:: -- cgit v1.2.3