/*****************************************************************************/ /* ここから */ /*****************************************************************************/ #include #include #include #include "wonx_include/text.h" #include "WonX.h" #include "WWText.h" /*****************************************************************************/ /* 互換関数の定義 */ /*****************************************************************************/ /* * Xサーバとの同期の整合性がとれなくなるなどの問題が考えられるので, * 互換関数の内部は UNIXTimer_Pause(), UNIXTimer_Unpause() でくくり, * タイマ割り込みを一時停止して処理を行う.また,unpause するまえに, * かならず sync するようにする. */ /* * タイマの一時停止の2重解除の問題が出てくるので, * 互換関数から互換関数を呼んではいけない. * (一時停止はネストされるが,いちおう) * 似たような処理をする関数の場合は,必ず static な別関数に処理をまとめ, * そっちを呼び出すようにすること. * 引数の表示の問題もあるしね. */ static void _text_window_init(int x, int y, int w, int h, unsigned int base) { WWText ww_text; WWDisplay ww_display; ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); WWText_SetTextWindow(ww_text, x, y, w, h, base, ww_display); WWScreen_SetRollX(WWText_GetScreen(ww_text), 0); WWScreen_SetRollY(WWText_GetScreen(ww_text), 0); return; } void text_screen_init(void) { WWDisplay ww_display; WWLCDPanel ww_lcd_panel; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_screen_init() : \n"); fflush(stdout); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); ww_lcd_panel = WWDisplay_GetLCDPanel(ww_display); _text_window_init(0, 0, TEXT_SCREEN_WIDTH, TEXT_SCREEN_HEIGHT, 8); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_screen_init() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } void text_window_init(int x, int y, int w, int h, unsigned int base) { WWDisplay ww_display; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_window_init() : x = %d, y = %d, width = %d, height = %d, base = %u\n", x, y, w, h, (int)base); fflush(stdout); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); _text_window_init(x, y, w, h, base); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_window_init() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } void text_set_mode(int mode) { } int text_get_mode(void) { return (0); } static void _text_put_char(int x, int y, unsigned int c) { WWText ww_text; WWDisplay ww_display; ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); WWText_PutCharacter(ww_text, x, y, c, ww_display); return; } void text_put_char(int x, int y, unsigned int c) { if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_put_char() : x = %d, y = %d, character = %u\n", x, y, (int)c); fflush(stdout); _text_put_char(x, y, c); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_put_char() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } static int _text_put_string(int x, int y, char * string) { int i, len, ret; WWText ww_text; WWDisplay ww_display; ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); len = strlen(string); ret = 0; for (i = 0; i < len; i++) { if (WWText_PutCharacter(ww_text, x + i, y, string[i], ww_display) >= 0) ret++; } return (ret); } int text_put_string(int x, int y, char * string) { int ret; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_put_string() : x = %d, y = %d, string = %s\n", x, y, string); fflush(stdout); ret = _text_put_string(x, y, string); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_put_string() : return value = %d\n", ret); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return (ret); } int text_put_substring(int x, int y, char * s, int length) { int i, ret; WWText ww_text; WWDisplay ww_display; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_put_substring() : x = %d, y = %d, string = %s, length = %d\n", x, y, s, length); fflush(stdout); ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); ret = 0; for (i = 0; i < length; i++) { if (WWText_PutCharacter(ww_text, x + i, y, s[i], ww_display) >= 0) ret++; } WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_put_substring() : return value = %d\n", ret); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return (ret); } void text_put_numeric(int x, int y, int length, int format, int number) { char buf[20]; char f[20]; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_put_numeric() : x = %d, y = %d, length = %d, format = %04x, number = %d\n", x, y, length, format, number); fflush(stdout); strcpy(f, "%"); if (format & NUM_PADZERO) strcat(f, "0"); sprintf(f + strlen(f), "%d", length); if (format & NUM_HEXA) strcat(f, "x"); else if (format & NUM_SIGNED) strcat(f, "d"); else strcat(f, "u"); if (format & NUM_ALIGN_LEFT) { /* 未実装 */ } sprintf(buf, f, number); _text_put_string(x, y, buf); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_put_numeric() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } void text_store_numeric(char * buffer, int length, int format, int number) { } void text_fill_char(int x, int y, int length, int c) { int i; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_fill_char() : x = %d, y = %d, length = %d, character = %d\n", x, y, length, c); fflush(stdout); for (i = 0; i < length; i++) { _text_put_char(x + i, y, c); } WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_fill_char() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } void text_set_palette(int palette_num) { WWText ww_text; WWDisplay ww_display; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_set_palette() : palette = %d\n", palette_num); fflush(stdout); ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); WWText_SetPalette(ww_text, WWDisplay_GetPalette(ww_display, palette_num)); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_set_palette() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } int text_get_palette(void) { WWText ww_text; int num; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_get_palette() : \n"); fflush(stdout); ww_text = WonXText_GetWWText(WonX_GetWonXText()); num = WWPalette_GetNumber(WWText_GetPalette(ww_text)); WonXDisplay_Sync(WonX_GetWonXDisplay()); printf("call : text_get_palette() : return value = %d\n", num); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return (num); } void text_set_ank_font(int base, int color, int count, void * font) { } void text_set_sjis_font(void * p) { } void text_get_fontdata(int c, void * buffer) { } void text_set_screen(int screen) { WWText ww_text; WWDisplay ww_display; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_set_screen() : screen = %d\n", screen); fflush(stdout); ww_text = WonXText_GetWWText(WonX_GetWonXText()); ww_display = WonXDisplay_GetWWDisplay(WonX_GetWonXDisplay()); WWText_SetScreen(ww_text, WWDisplay_GetScreen(ww_display, screen)); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_set_screen() : return value = none\n"); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return; } int text_get_screen(void) { WWText ww_text; int n; if (!WonX_IsCreated()) WonX_Create(); /* タイマを一時停止する */ UNIXTimer_Pause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); printf("call : text_get_screen() : \n"); fflush(stdout); ww_text = WonXText_GetWWText(WonX_GetWonXText()); n = WWScreen_GetNumber(WWText_GetScreen(ww_text)); WonXDisplay_Flush(WonX_GetWonXDisplay()); printf("call : text_set_screen() : return value = %d\n", n); fflush(stdout); /* タイマをもとに戻す */ UNIXTimer_Unpause(WonXSystem_GetUNIXTimer(WonX_GetWonXSystem())); return (n); } void cursor_display(int flag) { } int cursor_status(void) { return (0); } void cursor_set_location(int x, int y, int w, int h) { } unsigned long int cursor_get_location(void) { return (0); } void cursor_set_type(int palette_num, int interval) { } unsigned long int cursor_get_type(void) { return (0); } int text_printf(int x, int y, const char *format, ...) { return (0); } /*****************************************************************************/ /* ここまで */ /*****************************************************************************/ /*****************************************************************************/ /* End of File. */ /*****************************************************************************/