Serenity Operating System
1/*
2 * Copyright (c) 2021, The SerenityOS Developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Types.h>
10
11namespace VT {
12
13enum CharacterSet {
14 Iso_8859_1,
15 Null,
16 UserDefined,
17 VT100,
18};
19
20class CharacterSetTranslator {
21public:
22 u32 translate_code_point(CharacterSet active_set, u32 code_point)
23 {
24 // Only translate 0x7F and lower
25 if (code_point > 127)
26 return code_point;
27
28 // FIXME: implement other character sets
29 if (active_set != CharacterSet::VT100)
30 return code_point;
31
32 // VT100 translation table - https://en.wikipedia.org/wiki/Box-drawing_character#Unix,_CP/M,_BBS
33 switch (code_point) {
34 case 0x6A:
35 return 0x2518;
36 case 0x6B:
37 return 0x2510;
38 case 0x6C:
39 return 0x250C;
40 case 0x6D:
41 return 0x2514;
42 case 0x6E:
43 return 0x253C;
44 case 0x71:
45 return 0x2500;
46 case 0x74:
47 return 0x251C;
48 case 0x75:
49 return 0x2524;
50 case 0x76:
51 return 0x2534;
52 case 0x77:
53 return 0x252C;
54 case 0x78:
55 return 0x2502;
56 }
57 return code_point;
58 }
59};
60
61}