Lines Matching defs:str

205 //    void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
206 // void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
207 // int stb_textedit_cut(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
208 // int stb_textedit_paste(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_CHARTYPE *text, int len)
209 // void stb_textedit_key(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXEDIT_KEYTYPE key)
396 static int stb_text_locate_coord(STB_TEXTEDIT_STRING *str, float x, float y)
399 int n = STB_TEXTEDIT_STRINGLEN(str);
409 STB_TEXTEDIT_LAYOUTROW(&r, str, i);
436 float w = STB_TEXTEDIT_GETWIDTH(str, i, k);
449 if (STB_TEXTEDIT_GETCHAR(str, i+r.num_chars-1) == STB_TEXTEDIT_NEWLINE)
456 static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
463 STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
467 state->cursor = stb_text_locate_coord(str, x, y);
474 static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
483 STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
490 p = stb_text_locate_coord(str, x, y);
500 static void stb_text_undo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state);
501 static void stb_text_redo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state);
502 static void stb_text_makeundo_delete(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int length);
504 static void stb_text_makeundo_replace(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int old_length, int new_length);
516 static void stb_textedit_find_charpos(StbFindState *find, STB_TEXTEDIT_STRING *str, int n, int single_line)
520 int z = STB_TEXTEDIT_STRINGLEN(str);
527 STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
538 STB_TEXTEDIT_LAYOUTROW(&r, str, i);
553 STB_TEXTEDIT_LAYOUTROW(&r, str, i);
569 find->x += STB_TEXTEDIT_GETWIDTH(str, first, i);
575 static void stb_textedit_clamp(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
577 int n = STB_TEXTEDIT_STRINGLEN(str);
589 static void stb_textedit_delete(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int len)
591 stb_text_makeundo_delete(str, state, where, len);
592 STB_TEXTEDIT_DELETECHARS(str, where, len);
597 static void stb_textedit_delete_selection(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
599 stb_textedit_clamp(str, state);
602 stb_textedit_delete(str, state, state->select_start, state->select_end - state->select_start);
605 stb_textedit_delete(str, state, state->select_end, state->select_start - state->select_end);
634 static void stb_textedit_move_to_last(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
638 stb_textedit_clamp(str, state);
646 static int is_word_boundary( STB_TEXTEDIT_STRING *str, int idx )
648 return idx > 0 ? (STB_TEXTEDIT_IS_SPACE( STB_TEXTEDIT_GETCHAR(str,idx-1) ) && !STB_TEXTEDIT_IS_SPACE( STB_TEXTEDIT_GETCHAR(str, idx) ) ) : 1;
652 static int stb_textedit_move_to_word_previous( STB_TEXTEDIT_STRING *str, int c )
655 while( c >= 0 && !is_word_boundary( str, c ) )
667 static int stb_textedit_move_to_word_next( STB_TEXTEDIT_STRING *str, int c )
669 const int len = STB_TEXTEDIT_STRINGLEN(str);
671 while( c < len && !is_word_boundary( str, c ) )
694 static int stb_textedit_cut(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
697 stb_textedit_delete_selection(str,state); // implicitly clamps
705 static int stb_textedit_paste_internal(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_CHARTYPE *text, int len)
708 stb_textedit_clamp(str, state);
709 stb_textedit_delete_selection(str,state);
711 if (STB_TEXTEDIT_INSERTCHARS(str, state->cursor, text, len)) {
728 static void stb_textedit_key(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_KEYTYPE key)
741 if (state->insert_mode && !STB_TEXT_HAS_SELECTION(state) && state->cursor < STB_TEXTEDIT_STRINGLEN(str)) {
742 stb_text_makeundo_replace(str, state, state->cursor, 1, 1);
743 STB_TEXTEDIT_DELETECHARS(str, state->cursor, 1);
744 if (STB_TEXTEDIT_INSERTCHARS(str, state->cursor, &ch, 1)) {
749 stb_textedit_delete_selection(str,state); // implicitly clamps
750 if (STB_TEXTEDIT_INSERTCHARS(str, state->cursor, &ch, 1)) {
767 stb_text_undo(str, state);
772 stb_text_redo(str, state);
789 stb_textedit_move_to_last(str, state);
792 stb_textedit_clamp(str, state);
797 stb_textedit_clamp(str, state);
811 state->cursor = STB_TEXTEDIT_MOVEWORDLEFT(str, state->cursor);
812 stb_textedit_clamp( str, state );
820 state->cursor = STB_TEXTEDIT_MOVEWORDLEFT(str, state->cursor);
823 stb_textedit_clamp( str, state );
830 stb_textedit_move_to_last(str, state);
832 state->cursor = STB_TEXTEDIT_MOVEWORDRIGHT(str, state->cursor);
833 stb_textedit_clamp( str, state );
841 state->cursor = STB_TEXTEDIT_MOVEWORDRIGHT(str, state->cursor);
844 stb_textedit_clamp( str, state );
852 stb_textedit_clamp(str, state);
872 stb_textedit_move_to_last(str,state);
875 stb_textedit_clamp(str, state);
876 stb_textedit_find_charpos(&find, str, state->cursor, state->single_line);
884 STB_TEXTEDIT_LAYOUTROW(&row, str, state->cursor);
887 float dx = STB_TEXTEDIT_GETWIDTH(str, start, i);
897 stb_textedit_clamp(str, state);
926 stb_textedit_clamp(str, state);
927 stb_textedit_find_charpos(&find, str, state->cursor, state->single_line);
935 STB_TEXTEDIT_LAYOUTROW(&row, str, state->cursor);
938 float dx = STB_TEXTEDIT_GETWIDTH(str, find.prev_first, i);
948 stb_textedit_clamp(str, state);
962 stb_textedit_delete_selection(str, state);
964 int n = STB_TEXTEDIT_STRINGLEN(str);
966 stb_textedit_delete(str, state, state->cursor, 1);
974 stb_textedit_delete_selection(str, state);
976 stb_textedit_clamp(str, state);
978 stb_textedit_delete(str, state, state->cursor-1, 1);
997 state->cursor = STB_TEXTEDIT_STRINGLEN(str);
1016 state->cursor = state->select_end = STB_TEXTEDIT_STRINGLEN(str);
1025 stb_textedit_clamp(str, state);
1029 else while (state->cursor > 0 && STB_TEXTEDIT_GETCHAR(str, state->cursor-1) != STB_TEXTEDIT_NEWLINE)
1038 int n = STB_TEXTEDIT_STRINGLEN(str);
1039 stb_textedit_clamp(str, state);
1043 else while (state->cursor < n && STB_TEXTEDIT_GETCHAR(str, state->cursor) != STB_TEXTEDIT_NEWLINE)
1053 stb_textedit_clamp(str, state);
1057 else while (state->cursor > 0 && STB_TEXTEDIT_GETCHAR(str, state->cursor-1) != STB_TEXTEDIT_NEWLINE)
1067 int n = STB_TEXTEDIT_STRINGLEN(str);
1068 stb_textedit_clamp(str, state);
1072 else while (state->cursor < n && STB_TEXTEDIT_GETCHAR(str, state->cursor) != STB_TEXTEDIT_NEWLINE)
1194 static void stb_text_undo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
1242 s->undo_char[r->char_storage + i] = STB_TEXTEDIT_GETCHAR(str, u.where + i);
1246 STB_TEXTEDIT_DELETECHARS(str, u.where, u.delete_length);
1252 STB_TEXTEDIT_INSERTCHARS(str, u.where, &s->undo_char[u.char_storage], u.insert_length);
1262 static void stb_text_redo(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
1295 s->undo_char[u->char_storage + i] = STB_TEXTEDIT_GETCHAR(str, u->where + i);
1298 STB_TEXTEDIT_DELETECHARS(str, r.where, r.delete_length);
1303 STB_TEXTEDIT_INSERTCHARS(str, r.where, &s->undo_char[r.char_storage], r.insert_length);
1318 static void stb_text_makeundo_delete(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int length)
1324 p[i] = STB_TEXTEDIT_GETCHAR(str, where+i);
1328 static void stb_text_makeundo_replace(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, int where, int old_length, int new_length)
1334 p[i] = STB_TEXTEDIT_GETCHAR(str, where+i);
1366 static int stb_textedit_paste(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_CHARTYPE const *ctext, int len)
1368 return stb_textedit_paste_internal(str, state, (STB_TEXTEDIT_CHARTYPE *) ctext, len);