mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-09-29 02:18:09 +03:00
Text hook
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#include <stdio.h>
|
||||
#include "texthook.h"
|
||||
|
||||
#ifdef __EMSCRIPTEN__ // ----------------------------------------------
|
||||
#include <emscripten.h>
|
||||
|
||||
void texthook_character(int page, int character) {
|
||||
EM_ASM_({ xsystem35.texthook.message(String.fromCharCode($0), $1); },
|
||||
character, page);
|
||||
}
|
||||
|
||||
EM_JS(void, texthook_newline, (void), {
|
||||
xsystem35.texthook.newline();
|
||||
});
|
||||
|
||||
EM_JS(void, texthook_nextpage, (void), {
|
||||
xsystem35.texthook.nextpage();
|
||||
});
|
||||
|
||||
EM_JS(void, texthook_keywait, (void), {
|
||||
xsystem35.texthook.keywait();
|
||||
});
|
||||
|
||||
#elif defined(TEXTHOOK_PRINT) // --------------------------------------
|
||||
|
||||
static int newlines = 0;
|
||||
|
||||
void texthook_character(int page, int c) {
|
||||
if (newlines)
|
||||
printf("%d:", page);
|
||||
newlines = 0;
|
||||
|
||||
if (c <= 0x7f) {
|
||||
putchar(c);
|
||||
} else if (c <= 0x7ff) {
|
||||
putchar(0xc0 | c >> 6);
|
||||
putchar(0x80 | (c & 0x3f));
|
||||
} else {
|
||||
putchar(0xe0 | c >> 12);
|
||||
putchar(0x80 | (c >> 6 & 0x3f));
|
||||
putchar(0x80 | (c & 0x3f));
|
||||
}
|
||||
}
|
||||
|
||||
void texthook_newline(void) {
|
||||
if (newlines < 2) {
|
||||
putchar('\n');
|
||||
newlines++;
|
||||
}
|
||||
}
|
||||
|
||||
void texthook_nextpage(void) {
|
||||
while (newlines < 2) {
|
||||
putchar('\n');
|
||||
newlines++;
|
||||
}
|
||||
}
|
||||
|
||||
void texthook_keywait(void) {
|
||||
texthook_newline();
|
||||
}
|
||||
|
||||
#else // --------------------------------------------------------------
|
||||
|
||||
void texthook_character(int page, int c) {
|
||||
}
|
||||
|
||||
void texthook_newline(void) {
|
||||
}
|
||||
|
||||
void texthook_nextpage(void) {
|
||||
}
|
||||
|
||||
void texthook_keywait(void) {
|
||||
}
|
||||
|
||||
#endif // -------------------------------------------------------------
|
||||
Reference in New Issue
Block a user