OSDN Git Service

SimpleHTMLEditorを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / textbox.c
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/textbox.c b/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/textbox.c
deleted file mode 100644 (file)
index 1402d47..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-\r
-#include "core.h"\r
-\r
-UI_TextBox *TextBox_Initialize(void)\r
-{\r
-       UI_TextBox *textbox;\r
-\r
-       textbox = (UI_TextBox *)System_CommonStruct_Allocate(SYSTEM_STRUCTID_TEXTBOX);\r
-       textbox->flags.bit.initialized = True;\r
-\r
-       textbox->forecol = 0xffffff;\r
-       textbox->backcol = 0xc6c6c6;\r
-\r
-       return textbox;\r
-}\r
-\r
-//bpp==0:\8e©\93®\91I\91ð(\8c»\8dÝ\82Ì\83V\83X\83e\83\80\83V\81[\83g\82Ì\90Ý\92è\82É\8d\87\82í\82¹\82é)\r
-uint TextBox_SetBuffer(UI_TextBox *textbox, uint xchars, uint ychars, uint bpp, UI_Sheet *parent)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetBuffer:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(xchars < 4 + 1 || ychars < 1){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetBuffer:Too small textbox.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       textbox->chars.x = xchars;\r
-       textbox->chars.y = ychars;\r
-       textbox->size_text_buf = textbox->chars.x * textbox->chars.y;\r
-\r
-       textbox->sheet = Sheet_Initialize();\r
-       Sheet_SetBuffer(textbox->sheet, Null, xchars << 3, ychars << 4, bpp);\r
-       Sheet_SetParent(textbox->sheet, parent);\r
-\r
-       Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, 0, 0, (int)textbox->sheet->size.x - 1, (int)textbox->sheet->size.y - 1);\r
-\r
-       textbox->text_buf = System_Memory_Allocate(textbox->size_text_buf);\r
-       textbox->text_buf[0] = 0x00;\r
-\r
-       textbox->flags.bit.textbuffer_configured = True;\r
-\r
-       return 0;\r
-}\r
-\r
-uint TextBox_Show(UI_TextBox *textbox, uint height, int px, int py)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Show:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(textbox->sheet == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Show:Null textbox sheet.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       return Sheet_Show(textbox->sheet, height, px, py);\r
-}\r
-\r
-//char\82ð\93n\82·\82±\82Æ\82à\89Â\94\\81B\r
-//Break\8e\9e\82Ì\83L\81[\83R\81[\83h\82Í\96³\8e\8b\82µ\82Ä\89½\82à\93ü\97Í\82µ\82È\82¢\81ikeyid\82ð\92¼\90Ú\93n\82·\82¾\82¯\82Å\93ü\97Í\82ª\82Å\82«\82é\82æ\82¤\82É\82·\82é\82½\82ß\81j\81B\r
-//\83^\83u\95\8e\9a\82Í\81A\8bL\98^\82ª\83I\83t\82Ì\8e\9e\82Ì\82Ý\93ü\97Í\89Â\94\\81B\r
-uint TextBox_Put_Key(UI_TextBox *textbox, ushort keyid)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_Key:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_Key:Buffer not configured.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       if(!(keyid & KEYID_MASK_BREAK)){\r
-               if(keyid & KEYID_MASK_EXTENDED){        /*\90§\8cä\95\8e\9a*/\r
-                       switch(keyid & KEYID_MASK_ID){\r
-                               case KEYID_ENTER:\r
-                                       TextBox_Internal_Put_Character(textbox, '\n');\r
-                                       break;\r
-                               case KEYID_BACKSPACE:\r
-                                       TextBox_Internal_Put_Character(textbox, '\b');\r
-                                       break;\r
-                               case KEYID_TAB:\r
-                                       TextBox_Internal_Put_Character(textbox, '\t');\r
-                                       break;\r
-                       }\r
-                       return 0;\r
-               } else{ /*ASCII\95\8e\9a*/\r
-                       TextBox_Internal_Put_Character(textbox, keyid & KEYID_MASK_ID);\r
-               }\r
-       }\r
-\r
-       return 0;\r
-}\r
-\r
-uint TextBox_Put_String(UI_TextBox *textbox, const uchar s[])\r
-{\r
-       uint i;\r
-\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_String:Null textbox.\n");\r
-               #endif\r
-               return 0;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_String:Buffer not configured.\n");\r
-               #endif\r
-               return 0;\r
-       }\r
-\r
-       for(i = 0; s[i] != 0x00; i++){\r
-               TextBox_Internal_Put_Character(textbox, s[i]);\r
-       }\r
-       return i;\r
-}\r
-\r
-uint TextBox_Put_Character(UI_TextBox *textbox, uchar c)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_Character:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Put_Character:Buffer not configured.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       return TextBox_Internal_Put_Character(textbox, c);\r
-}\r
-\r
-//False->True\82Å\83o\83b\83t\83@\83\8a\83Z\83b\83g\81B\r
-bool TextBox_SetEnable_RecordInputText(UI_TextBox *textbox, bool enable)\r
-{\r
-       bool old;\r
-\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetEnable_RecordInputText:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetEnable_RecordInputText:Buffer not configured.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       old = textbox->flags.bit.record_input_text;\r
-\r
-       if(old != enable){\r
-               if(enable){\r
-                       textbox->text_buf[0] = 0x00;\r
-                       textbox->using_text_buf = 0;\r
-                       textbox->location_cursor_record_started = textbox->location_cursor;\r
-               }\r
-               textbox->flags.bit.record_input_text = enable;\r
-       }\r
-\r
-       return old;\r
-}\r
-\r
-uint TextBox_SetEnable_CursorBlink(UI_TextBox *textbox, bool enable)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetEnable_CursorBlink:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_SetEnable_CursorBlink:Buffer not configured.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       textbox->flags.bit.cursor_blink = enable;\r
-       textbox->flags.bit.cursor_state = False;\r
-       TextBox_Internal_DrawCursor(textbox, False);\r
-       return 0;\r
-}\r
-\r
-uint TextBox_Cursor_Blink(UI_TextBox *textbox)\r
-{\r
-       if(textbox == Null){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Cursor_Blink:Null textbox.\n");\r
-               #endif\r
-               return 1;\r
-       }\r
-\r
-       if(!textbox->flags.bit.textbuffer_configured){\r
-               #ifdef CHNOSPROJECT_DEBUG_TEXTBOX\r
-                       debug("TextBox_Cursor_Blink:Buffer not configured.\n");\r
-               #endif\r
-               return 2;\r
-       }\r
-\r
-       if(!textbox->flags.bit.cursor_blink){\r
-               return 3;\r
-       }\r
-\r
-       textbox->flags.bit.cursor_state = !textbox->flags.bit.cursor_state;\r
-       TextBox_Internal_DrawCursor(textbox, textbox->flags.bit.cursor_state);\r
-       return 0;\r
-}\r
-\r
-//--------//\r
-\r
-uint TextBox_Internal_Put_Character(UI_TextBox *textbox, uchar c)\r
-{\r
-       uint i;\r
-       uchar s[2];\r
-\r
-       s[1] = 0x00;\r
-\r
-       if(textbox->flags.bit.cursor_blink){\r
-               Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-               Sheet_RefreshSheet(textbox->sheet, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-       }\r
-       /*ASCII\95\8e\9a*/\r
-       if(c == '\n'){\r
-               if(TextBox_Internal_Put_Character_TextBuffer(textbox, '\n')){\r
-                       textbox->location_cursor.x = 0;\r
-                       textbox->location_cursor.y += 16;\r
-               }\r
-       } else if(c == '\b'){\r
-               if(!(textbox->location_cursor.x <= 0 && textbox->location_cursor.y <= 0)){\r
-                       if(TextBox_Internal_Put_Character_TextBuffer(textbox, '\b')){\r
-                               textbox->location_cursor.x -= 8;\r
-                       }\r
-                       if(textbox->location_cursor.x < 0){\r
-                               textbox->location_cursor.x = 0;\r
-                               textbox->location_cursor.y -= 16;\r
-                               if(textbox->flags.bit.record_input_text){\r
-                                       for(i = 0; i < textbox->using_text_buf; i++){\r
-                                               if(textbox->text_buf[textbox->using_text_buf - i - 1] == '\n'){\r
-                                                       break;\r
-                                               }\r
-                                               textbox->location_cursor.x += 8;\r
-                                               if(textbox->location_cursor.x >= (int)textbox->sheet->size.x - (8 - 1)){\r
-                                                       textbox->location_cursor.x = 0;\r
-                                               }\r
-                                       }\r
-                                       if(i == textbox->using_text_buf){\r
-                                               textbox->location_cursor.x += textbox->location_cursor_record_started.x;\r
-                                               if(textbox->location_cursor.x >= (int)textbox->sheet->size.x - (8 - 1)){\r
-                                                       textbox->location_cursor.x -= textbox->sheet->size.x;\r
-                                               }\r
-                                       }\r
-                               } else{\r
-                                       textbox->location_cursor.x = (int)textbox->sheet->size.x - 8;\r
-                               }\r
-                       }\r
-               }\r
-       } else if(c == '\t'){\r
-               if(!textbox->flags.bit.record_input_text && TextBox_Internal_Put_Character_TextBuffer(textbox, '\t')){\r
-                       textbox->location_cursor.x += 8 * (4 - ((textbox->location_cursor.x >> 3) & 3));\r
-               }\r
-               if(textbox->location_cursor.x > (int)textbox->sheet->size.x){\r
-                       textbox->location_cursor.x = 8 * 4;\r
-                       textbox->location_cursor.y += 16;\r
-               } else if(textbox->location_cursor.x == (int)textbox->sheet->size.x){\r
-                       textbox->location_cursor.x = 0;\r
-                       textbox->location_cursor.y += 16;\r
-               }\r
-       } else if(c == '\r'){\r
-\r
-       } else if(TextBox_Internal_Put_Character_TextBuffer(textbox, c)){\r
-               s[0] = c;\r
-               Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-               Sheet_Drawing_Put_String(textbox->sheet, textbox->location_cursor.x, textbox->location_cursor.y, textbox->forecol, s);\r
-               Sheet_RefreshSheet(textbox->sheet, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-               textbox->location_cursor.x += 8;\r
-               if(textbox->location_cursor.x >= (int)textbox->sheet->size.x - (8 - 1)){\r
-                       textbox->location_cursor.x = 0;\r
-                       textbox->location_cursor.y += 16;\r
-               }\r
-       }\r
-       if(textbox->location_cursor.y >= (int)textbox->sheet->size.y - (16 - 1)){\r
-               Sheet_Drawing_Scroll_Vertical(textbox->sheet, 16);\r
-               Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, 0, (int)textbox->sheet->size.y - 16, (int)textbox->sheet->size.x - 1, (int)textbox->sheet->size.y - 1);\r
-               textbox->location_cursor.y -= 16;\r
-               Sheet_RefreshSheet_All(textbox->sheet);\r
-       }\r
-       Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-       Sheet_RefreshSheet(textbox->sheet, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-\r
-       return 0;\r
-}\r
-\r
-bool TextBox_Internal_Put_Character_TextBuffer(UI_TextBox *textbox, uchar c)\r
-{\r
-       if(!textbox->flags.bit.record_input_text){\r
-               return True;\r
-       }\r
-\r
-       switch(c){\r
-               case '\b':\r
-                       if(textbox->using_text_buf > 0){\r
-                               textbox->using_text_buf--;\r
-                               textbox->text_buf[textbox->using_text_buf] = 0x00;\r
-                               return True;\r
-                       }\r
-                       break;\r
-               default:\r
-                       if(textbox->using_text_buf < textbox->size_text_buf - 1){\r
-                               textbox->text_buf[textbox->using_text_buf] = c;\r
-                               textbox->using_text_buf++;\r
-                               textbox->text_buf[textbox->using_text_buf] = 0x00;\r
-                               return True;\r
-                       }\r
-                       break;\r
-       }\r
-       return False;\r
-}\r
-\r
-uint TextBox_Internal_DrawCursor(UI_TextBox *textbox, bool cursor)\r
-{\r
-       if(cursor){\r
-               Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->forecol, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-       } else{\r
-               Sheet_Drawing_Fill_Rectangle(textbox->sheet, textbox->backcol, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-       }\r
-       Sheet_RefreshSheet(textbox->sheet, textbox->location_cursor.x, textbox->location_cursor.y, textbox->location_cursor.x + 8 - 1, textbox->location_cursor.y + 16 - 1);\r
-\r
-       return 0;\r
-}\r