summaryrefslogtreecommitdiff
path: root/src/ui/color.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/color.c')
-rw-r--r--src/ui/color.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/ui/color.c b/src/ui/color.c
index d6a995c7..179006c1 100644
--- a/src/ui/color.c
+++ b/src/ui/color.c
@@ -1,5 +1,7 @@
1#include "color.h" 1#include "color.h"
2 2
3#include <the_Foundation/string.h>
4
3static const iColor transparent_; 5static const iColor transparent_;
4 6
5iColor get_Color(int color) { 7iColor get_Color(int color) {
@@ -26,3 +28,65 @@ iColor get_Color(int color) {
26 } 28 }
27 return *clr; 29 return *clr;
28} 30}
31
32iColor ansi_Color(iRangecc escapeSequence, int fallback) {
33 iColor clr = get_Color(fallback);
34 for (const char *ch = escapeSequence.start; ch < escapeSequence.end; ch++) {
35 char *endPtr;
36 unsigned long arg = strtoul(ch, &endPtr, 10);
37 ch = endPtr;
38 switch (arg) {
39 default:
40 break;
41 case 30:
42 clr = (iColor){ 0, 0, 0, 255 };
43 break;
44 case 31:
45 clr = (iColor){ 170, 0, 0, 255 };
46 break;
47 case 32:
48 clr = (iColor){ 0, 170, 0, 255 };
49 break;
50 case 33:
51 clr = (iColor){ 170, 85, 0, 255 };
52 break;
53 case 34:
54 clr = (iColor){ 0, 0, 170, 255 };
55 break;
56 case 35:
57 clr = (iColor){ 170, 0, 170, 255 };
58 break;
59 case 36:
60 clr = (iColor){ 0, 170, 170, 255 };
61 break;
62 case 37:
63 clr = (iColor){ 170, 170, 170, 255 };
64 break;
65 case 90:
66 clr = (iColor){ 85, 85, 85, 255 };
67 break;
68 case 91:
69 clr = (iColor){ 255, 85, 85, 255 };
70 break;
71 case 92:
72 clr = (iColor){ 85, 255, 85, 255 };
73 break;
74 case 93:
75 clr = (iColor){ 255, 255, 85, 255 };
76 break;
77 case 94:
78 clr = (iColor){ 85, 85, 255, 255 };
79 break;
80 case 95:
81 clr = (iColor){ 255, 85, 255, 255 };
82 break;
83 case 96:
84 clr = (iColor){ 85, 255, 255, 255 };
85 break;
86 case 97:
87 clr = (iColor){ 255, 255, 255, 255 };
88 break;
89 }
90 }
91 return clr;
92}