summaryrefslogtreecommitdiff
path: root/src/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/input.c')
-rw-r--r--src/input.c239
1 files changed, 0 insertions, 239 deletions
diff --git a/src/input.c b/src/input.c
deleted file mode 100644
index 4ee795b..0000000
--- a/src/input.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
-* BSD 2-Clause “Simplified” License
-* Copyright (c) 2019, Aldrik Ramaekers, aldrik.ramaekers@protonmail.com
-* All rights reserved.
-*/
-
-inline bool is_left_down(mouse_input *input)
-{
- return input->left_state & MOUSE_DOWN;
-}
-
-inline bool is_left_released(mouse_input *input)
-{
- return input->left_state & MOUSE_RELEASE;
-}
-
-inline bool is_left_clicked(mouse_input *input)
-{
- return input->left_state & MOUSE_CLICK;
-}
-
-inline bool is_left_double_clicked(mouse_input *input)
-{
- return input->left_state & MOUSE_DOUBLE_CLICK;
-}
-
-inline bool is_right_down(mouse_input *input)
-{
- return input->right_state & MOUSE_DOWN;
-}
-
-inline bool is_right_released(mouse_input *input)
-{
- return input->right_state & MOUSE_RELEASE;
-}
-
-inline bool is_right_clicked(mouse_input *input)
-{
- return input->right_state & MOUSE_CLICK;
-}
-
-inline bool keyboard_is_key_down(keyboard_input *keyboard, s16 key)
-{
- return keyboard->keys[key];
-}
-
-inline bool keyboard_is_key_pressed(keyboard_input *keyboard, s16 key)
-{
- return keyboard->input_keys[key];
-}
-
-inline void keyboard_set_input_text(keyboard_input *keyboard, char *text)
-{
- string_copyn(keyboard->input_text, text, MAX_INPUT_LENGTH);
- u32 len = utf8len(keyboard->input_text);
- keyboard->cursor = len;
- keyboard->input_text_len = len;
-}
-
-mouse_input mouse_input_create()
-{
- mouse_input mouse;
- mouse.x = -1;
- mouse.y = -1;
- mouse.move_x = 0;
- mouse.move_y = 0;
- mouse.left_state = 0;
- mouse.right_state = 0;
-
- return mouse;
-}
-
-keyboard_input keyboard_input_create()
-{
- keyboard_input keyboard;
- keyboard.modifier_state = 0;
- keyboard.input_text = mem_alloc(MAX_INPUT_LENGTH);
- keyboard.input_text[0] = '\0';
- keyboard.take_input = false;
- keyboard.cursor = 0;
- keyboard.input_text_len = 0;
- keyboard.input_mode = INPUT_FULL;
- keyboard.has_selection = false;
- keyboard.selection_begin_offset = 0;
- keyboard.selection_length = 0;
- memset(keyboard.keys, 0, MAX_KEYCODE);
-
- return keyboard;
-}
-
-void keyboard_set_input_mode(keyboard_input *keyboard, keyboard_input_mode mode)
-{
- keyboard->input_mode = mode;
-}
-
-inline void keyboard_input_destroy(keyboard_input *keyboard)
-{
- mem_free(keyboard->input_text);
-}
-
-static void keyboard_handle_input_copy_and_paste(platform_window *window, keyboard_input *keyboard)
-{
- bool is_lctrl_down = keyboard->keys[KEY_LEFT_CONTROL];
-
- if (is_lctrl_down && keyboard_is_key_pressed(keyboard, KEY_V))
- {
- char buf[MAX_INPUT_LENGTH];
- bool result = platform_get_clipboard(window, buf);
-
- if (keyboard->input_mode == INPUT_NUMERIC && !is_string_numeric(buf))
- {
- return;
- }
-
- if (keyboard->has_selection)
- {
- keyboard->cursor = keyboard->selection_begin_offset;
- utf8_str_remove_range(keyboard->input_text, keyboard->selection_begin_offset,
- keyboard->selection_begin_offset + keyboard->selection_length);
- keyboard->has_selection = false;
- keyboard->text_changed = true;
- }
-
- if (result)
- {
- s32 len = utf8len(buf);
- utf8_str_insert_utf8str(keyboard->input_text, keyboard->cursor, buf);
-
- keyboard->cursor += len;
- keyboard->input_text_len += len;
- keyboard->text_changed = true;
- }
- }
- else if (is_lctrl_down && keyboard_is_key_pressed(keyboard, KEY_C))
- {
- char buffer[MAX_INPUT_LENGTH];
- utf8_str_copy_range(keyboard->input_text,
- keyboard->selection_begin_offset,
- keyboard->selection_begin_offset+keyboard->selection_length,
- buffer);
-
- if (!string_equals(buffer, ""))
- platform_set_clipboard(window, buffer);
- }
-}
-
-void keyboard_handle_input_string(platform_window *window, keyboard_input *keyboard, char *ch)
-{
- keyboard_handle_input_copy_and_paste(window, keyboard);
-
- bool is_lctrl_down = keyboard->keys[KEY_LEFT_CONTROL];
-
- if (ch)
- {
- if (keyboard->input_text_len < MAX_INPUT_LENGTH && !is_lctrl_down)
- {
- if (keyboard->has_selection)
- {
- keyboard->cursor = keyboard->selection_begin_offset;
- utf8_str_remove_range(keyboard->input_text, keyboard->selection_begin_offset,
- keyboard->selection_begin_offset + keyboard->selection_length);
- keyboard->has_selection = false;
- keyboard->text_changed = true;
- }
-
- if (keyboard->input_text_len)
- {
- utf8_str_insert_at(keyboard->input_text, keyboard->cursor, *ch);
- keyboard->text_changed = true;
- }
- else
- {
- string_appendn(keyboard->input_text, ch, MAX_INPUT_LENGTH);
- keyboard->text_changed = true;
- }
-
- keyboard->cursor++;
- keyboard->input_text_len = utf8len(keyboard->input_text);
- }
- }
- else
- {
- bool is_lctrl_down = keyboard->keys[KEY_LEFT_CONTROL];
-
- // cursor movement
- if (keyboard_is_key_down(keyboard, KEY_LEFT) && keyboard->cursor > 0)
- {
- if (is_lctrl_down)
- keyboard->cursor = 0;
- else
- keyboard->cursor--;
- }
- if (keyboard_is_key_down(keyboard, KEY_RIGHT) && keyboard->cursor < keyboard->input_text_len)
- {
- if (is_lctrl_down)
- keyboard->cursor = utf8len(keyboard->input_text);
- else
- keyboard->cursor++;
- }
- }
-
- if (keyboard_is_key_down(keyboard, KEY_BACKSPACE))
- {
- current_keyboard_to_handle->keys[KEY_BACKSPACE] = false;
-
- bool is_lctrl_down = keyboard->keys[KEY_LEFT_CONTROL];
-
- if (keyboard->has_selection)
- {
- utf8_str_remove_range(keyboard->input_text, keyboard->selection_begin_offset,
- keyboard->selection_begin_offset + keyboard->selection_length);
- keyboard->has_selection = false;
- keyboard->text_changed = true;
-
- if (keyboard->selection_begin_offset < keyboard->cursor)
- {
- keyboard->cursor -= keyboard->selection_length-1;
- }
- }
- else if (is_lctrl_down)
- {
- for (s32 i = 0; i < keyboard->cursor; i++)
- {
- utf8_str_remove_at(keyboard->input_text, 0);
- }
- keyboard->cursor = 0;
- keyboard->text_changed = true;
- }
- else if (keyboard->cursor > 0)
- {
- utf8_str_remove_at(keyboard->input_text, keyboard->cursor-1);
-
- keyboard->cursor--;
- keyboard->text_changed = true;
- }
-
- keyboard->input_text_len = utf8len(keyboard->input_text);
- }
-} \ No newline at end of file