1 // Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
2 //
3 // Permission to use, copy, modify, and distribute this software for any
4 // purpose with or without fee is hereby granted, provided that the above
5 // copyright notice and this permission notice appear in all copies.
6 //
7 // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10 // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 
15 #pragma once
16 
17 #include <string>
18 
19 namespace agi {
20 	struct Color {
21 		unsigned char r = 0;	///< Red component
22 		unsigned char g = 0;	///< Green component
23 		unsigned char b = 0;	///< Blue component
24 		unsigned char a = 0;	///< Alpha component
25 
26 		Color() = default;
27 		Color(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 0);
28 		Color(std::string const& str);
29 
30 		bool operator==(Color const& col) const;
31 		bool operator!=(Color const& col) const;
32 
33 		std::string GetAssStyleFormatted() const;
34 		std::string GetAssOverrideFormatted() const;
35 		std::string GetSsaFormatted() const;
36 		std::string GetHexFormatted(bool rgba=false) const;
37 		std::string GetRgbFormatted() const;
38 
stringColor39 		operator std::string() const { return GetRgbFormatted(); }
40 	};
41 }
42