aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/unicode_gen.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk/unicode_gen.h')
-rw-r--r--engines/glk/unicode_gen.h563
1 files changed, 563 insertions, 0 deletions
diff --git a/engines/glk/unicode_gen.h b/engines/glk/unicode_gen.h
new file mode 100644
index 0000000000..f601bf6b92
--- /dev/null
+++ b/engines/glk/unicode_gen.h
@@ -0,0 +1,563 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GLK_UNICODE_GEN_H
+#define GLK_UNICODE_GEN_H
+
+#include "glk/glk_types.h"
+
+namespace Gargoyle {
+
+#define GET_CASE_BLOCK(ch, blockptr) \
+ switch ((glui32)(ch) >> 8) { \
+ case 0x0: \
+ *blockptr = unigen_case_block_0x0; \
+ break; \
+ case 0x1: \
+ *blockptr = unigen_case_block_0x1; \
+ break; \
+ case 0x2: \
+ *blockptr = unigen_case_block_0x2; \
+ break; \
+ case 0x3: \
+ *blockptr = unigen_case_block_0x3; \
+ break; \
+ case 0x4: \
+ *blockptr = unigen_case_block_0x4; \
+ break; \
+ case 0x5: \
+ *blockptr = unigen_case_block_0x5; \
+ break; \
+ case 0x1e: \
+ *blockptr = unigen_case_block_0x1e; \
+ break; \
+ case 0x1f: \
+ *blockptr = unigen_case_block_0x1f; \
+ break; \
+ case 0x21: \
+ *blockptr = unigen_case_block_0x21; \
+ break; \
+ case 0x24: \
+ *blockptr = unigen_case_block_0x24; \
+ break; \
+ case 0xfb: \
+ *blockptr = unigen_case_block_0xfb; \
+ break; \
+ case 0xff: \
+ *blockptr = unigen_case_block_0xff; \
+ break; \
+ case 0x104: \
+ *blockptr = unigen_case_block_0x104; \
+ break; \
+ default: \
+ *blockptr = nullptr; \
+ }
+
+#define GET_CASE_SPECIAL(ch, specptr) \
+ switch (ch) { \
+ case 0xdf: \
+ *specptr = unigen_special_0xdf; \
+ break; \
+ case 0x130: \
+ *specptr = unigen_special_0x130; \
+ break; \
+ case 0x149: \
+ *specptr = unigen_special_0x149; \
+ break; \
+ case 0x1c4: \
+ *specptr = unigen_special_0x1c4; \
+ break; \
+ case 0x1c5: \
+ *specptr = unigen_special_0x1c5; \
+ break; \
+ case 0x1c6: \
+ *specptr = unigen_special_0x1c6; \
+ break; \
+ case 0x1c7: \
+ *specptr = unigen_special_0x1c7; \
+ break; \
+ case 0x1c8: \
+ *specptr = unigen_special_0x1c8; \
+ break; \
+ case 0x1c9: \
+ *specptr = unigen_special_0x1c9; \
+ break; \
+ case 0x1ca: \
+ *specptr = unigen_special_0x1ca; \
+ break; \
+ case 0x1cb: \
+ *specptr = unigen_special_0x1cb; \
+ break; \
+ case 0x1cc: \
+ *specptr = unigen_special_0x1cc; \
+ break; \
+ case 0x1f0: \
+ *specptr = unigen_special_0x1f0; \
+ break; \
+ case 0x1f1: \
+ *specptr = unigen_special_0x1f1; \
+ break; \
+ case 0x1f2: \
+ *specptr = unigen_special_0x1f2; \
+ break; \
+ case 0x1f3: \
+ *specptr = unigen_special_0x1f3; \
+ break; \
+ case 0x390: \
+ *specptr = unigen_special_0x390; \
+ break; \
+ case 0x3b0: \
+ *specptr = unigen_special_0x3b0; \
+ break; \
+ case 0x587: \
+ *specptr = unigen_special_0x587; \
+ break; \
+ case 0x1e96: \
+ *specptr = unigen_special_0x1e96; \
+ break; \
+ case 0x1e97: \
+ *specptr = unigen_special_0x1e97; \
+ break; \
+ case 0x1e98: \
+ *specptr = unigen_special_0x1e98; \
+ break; \
+ case 0x1e99: \
+ *specptr = unigen_special_0x1e99; \
+ break; \
+ case 0x1e9a: \
+ *specptr = unigen_special_0x1e9a; \
+ break; \
+ case 0x1f50: \
+ *specptr = unigen_special_0x1f50; \
+ break; \
+ case 0x1f52: \
+ *specptr = unigen_special_0x1f52; \
+ break; \
+ case 0x1f54: \
+ *specptr = unigen_special_0x1f54; \
+ break; \
+ case 0x1f56: \
+ *specptr = unigen_special_0x1f56; \
+ break; \
+ case 0x1f80: \
+ *specptr = unigen_special_0x1f80; \
+ break; \
+ case 0x1f81: \
+ *specptr = unigen_special_0x1f81; \
+ break; \
+ case 0x1f82: \
+ *specptr = unigen_special_0x1f82; \
+ break; \
+ case 0x1f83: \
+ *specptr = unigen_special_0x1f83; \
+ break; \
+ case 0x1f84: \
+ *specptr = unigen_special_0x1f84; \
+ break; \
+ case 0x1f85: \
+ *specptr = unigen_special_0x1f85; \
+ break; \
+ case 0x1f86: \
+ *specptr = unigen_special_0x1f86; \
+ break; \
+ case 0x1f87: \
+ *specptr = unigen_special_0x1f87; \
+ break; \
+ case 0x1f88: \
+ *specptr = unigen_special_0x1f88; \
+ break; \
+ case 0x1f89: \
+ *specptr = unigen_special_0x1f89; \
+ break; \
+ case 0x1f8a: \
+ *specptr = unigen_special_0x1f8a; \
+ break; \
+ case 0x1f8b: \
+ *specptr = unigen_special_0x1f8b; \
+ break; \
+ case 0x1f8c: \
+ *specptr = unigen_special_0x1f8c; \
+ break; \
+ case 0x1f8d: \
+ *specptr = unigen_special_0x1f8d; \
+ break; \
+ case 0x1f8e: \
+ *specptr = unigen_special_0x1f8e; \
+ break; \
+ case 0x1f8f: \
+ *specptr = unigen_special_0x1f8f; \
+ break; \
+ case 0x1f90: \
+ *specptr = unigen_special_0x1f90; \
+ break; \
+ case 0x1f91: \
+ *specptr = unigen_special_0x1f91; \
+ break; \
+ case 0x1f92: \
+ *specptr = unigen_special_0x1f92; \
+ break; \
+ case 0x1f93: \
+ *specptr = unigen_special_0x1f93; \
+ break; \
+ case 0x1f94: \
+ *specptr = unigen_special_0x1f94; \
+ break; \
+ case 0x1f95: \
+ *specptr = unigen_special_0x1f95; \
+ break; \
+ case 0x1f96: \
+ *specptr = unigen_special_0x1f96; \
+ break; \
+ case 0x1f97: \
+ *specptr = unigen_special_0x1f97; \
+ break; \
+ case 0x1f98: \
+ *specptr = unigen_special_0x1f98; \
+ break; \
+ case 0x1f99: \
+ *specptr = unigen_special_0x1f99; \
+ break; \
+ case 0x1f9a: \
+ *specptr = unigen_special_0x1f9a; \
+ break; \
+ case 0x1f9b: \
+ *specptr = unigen_special_0x1f9b; \
+ break; \
+ case 0x1f9c: \
+ *specptr = unigen_special_0x1f9c; \
+ break; \
+ case 0x1f9d: \
+ *specptr = unigen_special_0x1f9d; \
+ break; \
+ case 0x1f9e: \
+ *specptr = unigen_special_0x1f9e; \
+ break; \
+ case 0x1f9f: \
+ *specptr = unigen_special_0x1f9f; \
+ break; \
+ case 0x1fa0: \
+ *specptr = unigen_special_0x1fa0; \
+ break; \
+ case 0x1fa1: \
+ *specptr = unigen_special_0x1fa1; \
+ break; \
+ case 0x1fa2: \
+ *specptr = unigen_special_0x1fa2; \
+ break; \
+ case 0x1fa3: \
+ *specptr = unigen_special_0x1fa3; \
+ break; \
+ case 0x1fa4: \
+ *specptr = unigen_special_0x1fa4; \
+ break; \
+ case 0x1fa5: \
+ *specptr = unigen_special_0x1fa5; \
+ break; \
+ case 0x1fa6: \
+ *specptr = unigen_special_0x1fa6; \
+ break; \
+ case 0x1fa7: \
+ *specptr = unigen_special_0x1fa7; \
+ break; \
+ case 0x1fa8: \
+ *specptr = unigen_special_0x1fa8; \
+ break; \
+ case 0x1fa9: \
+ *specptr = unigen_special_0x1fa9; \
+ break; \
+ case 0x1faa: \
+ *specptr = unigen_special_0x1faa; \
+ break; \
+ case 0x1fab: \
+ *specptr = unigen_special_0x1fab; \
+ break; \
+ case 0x1fac: \
+ *specptr = unigen_special_0x1fac; \
+ break; \
+ case 0x1fad: \
+ *specptr = unigen_special_0x1fad; \
+ break; \
+ case 0x1fae: \
+ *specptr = unigen_special_0x1fae; \
+ break; \
+ case 0x1faf: \
+ *specptr = unigen_special_0x1faf; \
+ break; \
+ case 0x1fb2: \
+ *specptr = unigen_special_0x1fb2; \
+ break; \
+ case 0x1fb3: \
+ *specptr = unigen_special_0x1fb3; \
+ break; \
+ case 0x1fb4: \
+ *specptr = unigen_special_0x1fb4; \
+ break; \
+ case 0x1fb6: \
+ *specptr = unigen_special_0x1fb6; \
+ break; \
+ case 0x1fb7: \
+ *specptr = unigen_special_0x1fb7; \
+ break; \
+ case 0x1fbc: \
+ *specptr = unigen_special_0x1fbc; \
+ break; \
+ case 0x1fc2: \
+ *specptr = unigen_special_0x1fc2; \
+ break; \
+ case 0x1fc3: \
+ *specptr = unigen_special_0x1fc3; \
+ break; \
+ case 0x1fc4: \
+ *specptr = unigen_special_0x1fc4; \
+ break; \
+ case 0x1fc6: \
+ *specptr = unigen_special_0x1fc6; \
+ break; \
+ case 0x1fc7: \
+ *specptr = unigen_special_0x1fc7; \
+ break; \
+ case 0x1fcc: \
+ *specptr = unigen_special_0x1fcc; \
+ break; \
+ case 0x1fd2: \
+ *specptr = unigen_special_0x1fd2; \
+ break; \
+ case 0x1fd3: \
+ *specptr = unigen_special_0x1fd3; \
+ break; \
+ case 0x1fd6: \
+ *specptr = unigen_special_0x1fd6; \
+ break; \
+ case 0x1fd7: \
+ *specptr = unigen_special_0x1fd7; \
+ break; \
+ case 0x1fe2: \
+ *specptr = unigen_special_0x1fe2; \
+ break; \
+ case 0x1fe3: \
+ *specptr = unigen_special_0x1fe3; \
+ break; \
+ case 0x1fe4: \
+ *specptr = unigen_special_0x1fe4; \
+ break; \
+ case 0x1fe6: \
+ *specptr = unigen_special_0x1fe6; \
+ break; \
+ case 0x1fe7: \
+ *specptr = unigen_special_0x1fe7; \
+ break; \
+ case 0x1ff2: \
+ *specptr = unigen_special_0x1ff2; \
+ break; \
+ case 0x1ff3: \
+ *specptr = unigen_special_0x1ff3; \
+ break; \
+ case 0x1ff4: \
+ *specptr = unigen_special_0x1ff4; \
+ break; \
+ case 0x1ff6: \
+ *specptr = unigen_special_0x1ff6; \
+ break; \
+ case 0x1ff7: \
+ *specptr = unigen_special_0x1ff7; \
+ break; \
+ case 0x1ffc: \
+ *specptr = unigen_special_0x1ffc; \
+ break; \
+ case 0xfb00: \
+ *specptr = unigen_special_0xfb00; \
+ break; \
+ case 0xfb01: \
+ *specptr = unigen_special_0xfb01; \
+ break; \
+ case 0xfb02: \
+ *specptr = unigen_special_0xfb02; \
+ break; \
+ case 0xfb03: \
+ *specptr = unigen_special_0xfb03; \
+ break; \
+ case 0xfb04: \
+ *specptr = unigen_special_0xfb04; \
+ break; \
+ case 0xfb05: \
+ *specptr = unigen_special_0xfb05; \
+ break; \
+ case 0xfb06: \
+ *specptr = unigen_special_0xfb06; \
+ break; \
+ case 0xfb13: \
+ *specptr = unigen_special_0xfb13; \
+ break; \
+ case 0xfb14: \
+ *specptr = unigen_special_0xfb14; \
+ break; \
+ case 0xfb15: \
+ *specptr = unigen_special_0xfb15; \
+ break; \
+ case 0xfb16: \
+ *specptr = unigen_special_0xfb16; \
+ break; \
+ case 0xfb17: \
+ *specptr = unigen_special_0xfb17; \
+ break; \
+ default: \
+ *specptr = nullptr; \
+ }
+
+typedef glui32 gli_case_block_t[2]; ///< upper, lower
+typedef glui32 gli_case_special_t[3]; ///< upper, lower, title
+typedef glui32 gli_decomp_block_t[2]; ///< count, position
+
+extern gli_case_block_t unigen_case_block_0x0[256];
+extern gli_case_block_t unigen_case_block_0x1[256];
+extern gli_case_block_t unigen_case_block_0x2[256];
+extern gli_case_block_t unigen_case_block_0x3[256];
+extern gli_case_block_t unigen_case_block_0x4[256];
+extern gli_case_block_t unigen_case_block_0x5[256];
+extern gli_case_block_t unigen_case_block_0x1e[256];
+extern gli_case_block_t unigen_case_block_0x1f[256];
+extern gli_case_block_t unigen_case_block_0x21[256];
+extern gli_case_block_t unigen_case_block_0x24[256];
+extern gli_case_block_t unigen_case_block_0xfb[256];
+extern gli_case_block_t unigen_case_block_0xff[256];
+extern gli_case_block_t unigen_case_block_0x104[256];
+
+extern gli_case_special_t unigen_special_0xdf;
+extern gli_case_special_t unigen_special_0x130;
+extern gli_case_special_t unigen_special_0x149;
+extern gli_case_special_t unigen_special_0x1c4;
+extern gli_case_special_t unigen_special_0x1c5;
+extern gli_case_special_t unigen_special_0x1c6;
+extern gli_case_special_t unigen_special_0x1c7;
+extern gli_case_special_t unigen_special_0x1c8;
+extern gli_case_special_t unigen_special_0x1c9;
+extern gli_case_special_t unigen_special_0x1ca;
+extern gli_case_special_t unigen_special_0x1cb;
+extern gli_case_special_t unigen_special_0x1cc;
+extern gli_case_special_t unigen_special_0x1f0;
+extern gli_case_special_t unigen_special_0x1f1;
+extern gli_case_special_t unigen_special_0x1f2;
+extern gli_case_special_t unigen_special_0x1f3;
+extern gli_case_special_t unigen_special_0x390;
+extern gli_case_special_t unigen_special_0x3b0;
+extern gli_case_special_t unigen_special_0x587;
+extern gli_case_special_t unigen_special_0x1e96;
+extern gli_case_special_t unigen_special_0x1e97;
+extern gli_case_special_t unigen_special_0x1e98;
+extern gli_case_special_t unigen_special_0x1e99;
+extern gli_case_special_t unigen_special_0x1e9a;
+extern gli_case_special_t unigen_special_0x1f50;
+extern gli_case_special_t unigen_special_0x1f52;
+extern gli_case_special_t unigen_special_0x1f54;
+extern gli_case_special_t unigen_special_0x1f56;
+extern gli_case_special_t unigen_special_0x1f80;
+extern gli_case_special_t unigen_special_0x1f81;
+extern gli_case_special_t unigen_special_0x1f82;
+extern gli_case_special_t unigen_special_0x1f83;
+extern gli_case_special_t unigen_special_0x1f84;
+extern gli_case_special_t unigen_special_0x1f85;
+extern gli_case_special_t unigen_special_0x1f86;
+extern gli_case_special_t unigen_special_0x1f87;
+extern gli_case_special_t unigen_special_0x1f88;
+extern gli_case_special_t unigen_special_0x1f89;
+extern gli_case_special_t unigen_special_0x1f8a;
+extern gli_case_special_t unigen_special_0x1f8b;
+extern gli_case_special_t unigen_special_0x1f8c;
+extern gli_case_special_t unigen_special_0x1f8d;
+extern gli_case_special_t unigen_special_0x1f8e;
+extern gli_case_special_t unigen_special_0x1f8f;
+extern gli_case_special_t unigen_special_0x1f90;
+extern gli_case_special_t unigen_special_0x1f91;
+extern gli_case_special_t unigen_special_0x1f92;
+extern gli_case_special_t unigen_special_0x1f93;
+extern gli_case_special_t unigen_special_0x1f94;
+extern gli_case_special_t unigen_special_0x1f95;
+extern gli_case_special_t unigen_special_0x1f96;
+extern gli_case_special_t unigen_special_0x1f97;
+extern gli_case_special_t unigen_special_0x1f98;
+extern gli_case_special_t unigen_special_0x1f99;
+extern gli_case_special_t unigen_special_0x1f9a;
+extern gli_case_special_t unigen_special_0x1f9b;
+extern gli_case_special_t unigen_special_0x1f9c;
+extern gli_case_special_t unigen_special_0x1f9d;
+extern gli_case_special_t unigen_special_0x1f9e;
+extern gli_case_special_t unigen_special_0x1f9f;
+extern gli_case_special_t unigen_special_0x1fa0;
+extern gli_case_special_t unigen_special_0x1fa1;
+extern gli_case_special_t unigen_special_0x1fa2;
+extern gli_case_special_t unigen_special_0x1fa3;
+extern gli_case_special_t unigen_special_0x1fa4;
+extern gli_case_special_t unigen_special_0x1fa5;
+extern gli_case_special_t unigen_special_0x1fa6;
+extern gli_case_special_t unigen_special_0x1fa7;
+extern gli_case_special_t unigen_special_0x1fa8;
+extern gli_case_special_t unigen_special_0x1fa9;
+extern gli_case_special_t unigen_special_0x1faa;
+extern gli_case_special_t unigen_special_0x1fab;
+extern gli_case_special_t unigen_special_0x1fac;
+extern gli_case_special_t unigen_special_0x1fad;
+extern gli_case_special_t unigen_special_0x1fae;
+extern gli_case_special_t unigen_special_0x1faf;
+extern gli_case_special_t unigen_special_0x1fb2;
+extern gli_case_special_t unigen_special_0x1fb3;
+extern gli_case_special_t unigen_special_0x1fb4;
+extern gli_case_special_t unigen_special_0x1fb6;
+extern gli_case_special_t unigen_special_0x1fb7;
+extern gli_case_special_t unigen_special_0x1fbc;
+extern gli_case_special_t unigen_special_0x1fc2;
+extern gli_case_special_t unigen_special_0x1fc3;
+extern gli_case_special_t unigen_special_0x1fc4;
+extern gli_case_special_t unigen_special_0x1fc6;
+extern gli_case_special_t unigen_special_0x1fc7;
+extern gli_case_special_t unigen_special_0x1fcc;
+extern gli_case_special_t unigen_special_0x1fd2;
+extern gli_case_special_t unigen_special_0x1fd3;
+extern gli_case_special_t unigen_special_0x1fd6;
+extern gli_case_special_t unigen_special_0x1fd7;
+extern gli_case_special_t unigen_special_0x1fe2;
+extern gli_case_special_t unigen_special_0x1fe3;
+extern gli_case_special_t unigen_special_0x1fe4;
+extern gli_case_special_t unigen_special_0x1fe6;
+extern gli_case_special_t unigen_special_0x1fe7;
+extern gli_case_special_t unigen_special_0x1ff2;
+extern gli_case_special_t unigen_special_0x1ff3;
+extern gli_case_special_t unigen_special_0x1ff4;
+extern gli_case_special_t unigen_special_0x1ff6;
+extern gli_case_special_t unigen_special_0x1ff7;
+extern gli_case_special_t unigen_special_0x1ffc;
+extern gli_case_special_t unigen_special_0xfb00;
+extern gli_case_special_t unigen_special_0xfb01;
+extern gli_case_special_t unigen_special_0xfb02;
+extern gli_case_special_t unigen_special_0xfb03;
+extern gli_case_special_t unigen_special_0xfb04;
+extern gli_case_special_t unigen_special_0xfb05;
+extern gli_case_special_t unigen_special_0xfb06;
+extern gli_case_special_t unigen_special_0xfb13;
+extern gli_case_special_t unigen_special_0xfb14;
+extern gli_case_special_t unigen_special_0xfb15;
+extern gli_case_special_t unigen_special_0xfb16;
+extern gli_case_special_t unigen_special_0xfb17;
+extern glui32 unigen_special_array[];
+
+} // End of namespace Gargoyle
+
+#endif