From: Steve Brokenshire Date: Sun, 25 Dec 2016 01:29:21 +0000 (+0000) Subject: Added code for operator=(string) for Colour struct X-Git-Tag: release-0.02~66 X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=commitdiff_plain;h=c01a700ef20d1ee6f63deecda22e5cd23641c61f Added code for operator=(string) for Colour struct --- diff --git a/source/common/colour.h b/source/common/colour.h index 93d42a6..b950973 100644 --- a/source/common/colour.h +++ b/source/common/colour.h @@ -17,6 +17,7 @@ // with Xestia Calendar. If not, see #include +#include #include "text.h" #ifndef __COMMON_COLOUR_H__ @@ -31,6 +32,70 @@ struct Colour{ int green = 0; int alpha = 255; + Colour& operator= (string const &arg){ + + // Check if the size of the string is 9. + // Return if not. + + if (arg.size() != 9){ + + return *this; + + } + + // Check if the first character has a hash in. + // Return if not. + + if (arg.substr(0,1) != "#"){ + + return *this; + + } + + // Check each character (1-8) and make sure + // it is a number or a letter between A and F. + + for (int characterSeek = 1; characterSeek < 9; characterSeek++){ + + int characterASCII = 0; + + characterASCII = arg[characterSeek]; + + if ((characterASCII < 48 && characterASCII > 57) || (characterASCII < 65 && characterASCII > 70)){ + return *this; + } + + } + + istringstream hexNumber; + + // Set the red value. + + hexNumber.str(arg.substr(1,2)); + hexNumber >> hex >> this->red; + + // Set the green value. + + hexNumber.clear(); + hexNumber.str(arg.substr(3,2)); + hexNumber >> hex >> this->green; + + // Set the blue value. + + hexNumber.clear(); + hexNumber.str(arg.substr(5,2)); + hexNumber >> hex >> this->blue; + + // Set the alpha value. + + hexNumber.clear(); + hexNumber.str(arg.substr(7,2)); + hexNumber >> hex >> this->alpha; + + return *this; + + } + operator string() { string ColourOut;