-
Notifications
You must be signed in to change notification settings - Fork 1
/
property.hpp
49 lines (36 loc) · 1.24 KB
/
property.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#pragma once
#include "error.hpp"
namespace blessings {
//Color
struct ColorANSI {
class Error : public BlessingsError {};
class InitError : public Error {};
enum ColorT {BLACK=0, RED=1, GREEN=2, YELLOW=3, BLUE=4, MAGENTA=5, CYAN=6, WHITE=7, NONE=8};
ColorT color;
const static ColorANSI defaultColor;
ColorANSI(ColorT col) : color(col) {}
ColorANSI(int c) : color(ColorT(c)) {if(c>8 || c<0) throw InitError();}
ColorANSI() : color(defaultColor.color) {}
operator ColorT() {return color;}
};
inline bool operator==(const ColorANSI& a, const ColorANSI& b) {
return a.color==b.color;
}
inline bool operator!=(const ColorANSI& a, const ColorANSI& b) {
return a.color!=b.color;
}
//Property
struct PropertyANSI {
ColorANSI color;
ColorANSI backgroundColor;
bool italics;
bool bold;
static const PropertyANSI empty;
static const PropertyANSI highlight;
PropertyANSI(ColorANSI clr=ColorANSI::NONE, \
ColorANSI bgclr=ColorANSI::NONE, bool itl=false, bool bld=false) :
color(clr), backgroundColor(bgclr), italics(itl), bold(bld) {}
};
bool operator==(const PropertyANSI&, const PropertyANSI&);
bool operator!=(const PropertyANSI&, const PropertyANSI&);
}