Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
colour.h: Moved #includes to after the header guard
[xestiacalendar/.git] / source / common / colour.h
index 4907aa7..c9acc08 100644 (file)
@@ -1,14 +1,14 @@
 // colour.h - Colour Structures
 //
-// (c) 2016 Xestia Software Development.
+// (c) 2016-2017 Xestia Software Development.
 //
 // This file is part of Xestia Calendar.
 //
-// Xestia Address Book is free software: you can redistribute it and/or modify
+// Xestia Calendar is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by the
 // Free Software Foundation, version 3 of the license.
 //
-// Xestia Address Book is distributed in the hope that it will be useful,
+// Xestia Calendar is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // You should have received a copy of the GNU General Public License along
 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
 
-#include <string>
-#include "text.h"
-
 #ifndef __COMMON_COLOUR_H__
 #define __COMMON_COLOUR_H__
 
+#include <string>
+#include <sstream>
+#include "text.h"
+
 using namespace std;
 
 struct Colour{
        
-       int red;
-       int blue;
-       int green;
-       int alpha;
+       int red = 0;
+       int blue = 0;
+       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;
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy