Serenity Operating System
at master 61 lines 1.3 kB view raw
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}