summaryrefslogtreecommitdiff
path: root/kernel/src/tty/color.c
diff options
context:
space:
mode:
authorTyler Murphy <=>2023-07-16 02:54:32 -0400
committerTyler Murphy <=>2023-07-16 02:54:32 -0400
commitfbf131b5c043b27e0b1543374bb144e3e426f723 (patch)
tree07f0ab2fc107b36621d5ae95480e6a91e332548b /kernel/src/tty/color.c
downloadfinix-fbf131b5c043b27e0b1543374bb144e3e426f723.tar.gz
finix-fbf131b5c043b27e0b1543374bb144e3e426f723.tar.bz2
finix-fbf131b5c043b27e0b1543374bb144e3e426f723.zip
initial
Diffstat (limited to 'kernel/src/tty/color.c')
-rw-r--r--kernel/src/tty/color.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/kernel/src/tty/color.c b/kernel/src/tty/color.c
new file mode 100644
index 0000000..c7258d9
--- /dev/null
+++ b/kernel/src/tty/color.c
@@ -0,0 +1,67 @@
+#include "color.h"
+#include "panic.h"
+
+bool itoac(int i, enum AnsiiColor *color) {
+ if (i < 0 || i > 15) return false;
+ *color = i;
+ return true;
+}
+
+bool itovc(int i, enum VGAColor *color) {
+ if (
+ (i >= 30 && i <= 37) ||
+ (i >= 40 && i <= 47) ||
+ (i >= 90 && i <= 97) ||
+ (i >= 100 && i <= 107)
+ ) {
+ *color = i;
+ return true;
+ }
+ return false;
+}
+
+enum VGAColor atovc(enum AnsiiColor color) {
+ switch(color) {
+ case ANSII_FRONT_BLACK:
+ case ANSII_FRONT_BLACK_EMPH:
+ case ANSII_BACK_BLACK:
+ case ANSII_BACK_BLACK_EMPH:
+ return VGA_BLACK;
+ case ANSII_FRONT_RED:
+ case ANSII_FRONT_RED_EMPH:
+ case ANSII_BACK_RED:
+ case ANSII_BACK_RED_EMPH:
+ return VGA_LIGHT_RED;
+ case ANSII_FRONT_GREEN:
+ case ANSII_FRONT_GREEN_EMPH:
+ case ANSII_BACK_GREEN:
+ case ANSII_BACK_GREEN_EMPH:
+ return VGA_LIGHT_GREEN;
+ case ANSII_FRONT_YELLOW:
+ case ANSII_FRONT_YELLOW_EMPH:
+ case ANSII_BACK_YELLOW:
+ case ANSII_BACK_YELLOW_EMPH:
+ return VGA_LIGHT_BROWN;
+ case ANSII_FRONT_BLUE:
+ case ANSII_FRONT_BLUE_EMPH:
+ case ANSII_BACK_BLUE:
+ case ANSII_BACK_BLUE_EMPH:
+ return VGA_LIGHT_BLUE;
+ case ANSII_FRONT_PURPLE:
+ case ANSII_FRONT_PURPLE_EMPH:
+ case ANSII_BACK_PURPLE:
+ case ANSII_BACK_PURPLE_EMPH:
+ return VGA_LIGHT_MAGENTA;
+ case ANSII_FRONT_CYAN:
+ case ANSII_FRONT_CYAN_EMPH:
+ case ANSII_BACK_CYAN:
+ case ANSII_BACK_CYAN_EMPH:
+ return VGA_LIGHT_CYAN;
+ case ANSII_FRONT_WHITE:
+ case ANSII_FRONT_WHITE_EMPH:
+ case ANSII_BACK_WHITE:
+ case ANSII_BACK_WHITE_EMPH:
+ return VGA_WHITE;
+ }
+ panic("this should not be reached (make gcc quiet)");
+}