summaryrefslogtreecommitdiff
path: root/examples/dte/screen.c
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
commitdcacc00e3750300617ba6e16eb346713f91a783a (patch)
tree38e2d4fb5ed9d119711d4295c6eda4b014af73fd /examples/dte/screen.c
parent58dac10aeb8f5a041c46bddbeaf4c7966a99b998 (diff)
downloadcrep-dcacc00e3750300617ba6e16eb346713f91a783a.tar.gz
Remove testing data
Diffstat (limited to 'examples/dte/screen.c')
-rw-r--r--examples/dte/screen.c211
1 files changed, 0 insertions, 211 deletions
diff --git a/examples/dte/screen.c b/examples/dte/screen.c
deleted file mode 100644
index 22bbf69..0000000
--- a/examples/dte/screen.c
+++ /dev/null
@@ -1,211 +0,0 @@
-#include <string.h>
-#include "screen.h"
-#include "frame.h"
-#include "terminal/cursor.h"
-#include "terminal/ioctl.h"
-#include "util/log.h"
-
-void set_color(Terminal *term, const ColorScheme *colors, const TermColor *color)
-{
- TermColor tmp = *color;
- // NOTE: -2 (keep) is treated as -1 (default)
- if (tmp.fg < 0) {
- tmp.fg = colors->builtin[BC_DEFAULT].fg;
- }
- if (tmp.bg < 0) {
- tmp.bg = colors->builtin[BC_DEFAULT].bg;
- }
- if (same_color(&tmp, &term->obuf.color)) {
- return;
- }
- term_set_color(term, &tmp);
-}
-
-void set_builtin_color(Terminal *term, const ColorScheme *colors, BuiltinColorEnum c)
-{
- set_color(term, colors, &colors->builtin[c]);
-}
-
-static void update_cursor_style(EditorState *e)
-{
- CursorInputMode mode;
- switch (e->input_mode) {
- case INPUT_NORMAL:
- if (e->buffer->options.overwrite) {
- mode = CURSOR_MODE_OVERWRITE;
- } else {
- mode = CURSOR_MODE_INSERT;
- }
- break;
- case INPUT_COMMAND:
- case INPUT_SEARCH:
- mode = CURSOR_MODE_CMDLINE;
- break;
- default:
- BUG("unhandled input mode");
- return;
- }
-
- TermCursorStyle style = e->cursor_styles[mode];
- TermCursorStyle def = e->cursor_styles[CURSOR_MODE_DEFAULT];
- if (style.type == CURSOR_KEEP) {
- style.type = def.type;
- }
- if (style.color == COLOR_KEEP) {
- style.color = def.color;
- }
-
- e->cursor_style_changed = false;
- if (!same_cursor(&style, &e->terminal.obuf.cursor_style)) {
- term_set_cursor_style(&e->terminal, style);
- }
-}
-
-void update_term_title(Terminal *term, const Buffer *buffer, bool set_window_title)
-{
- if (!set_window_title || !(term->features & TFLAG_SET_WINDOW_TITLE)) {
- return;
- }
-
- // FIXME: title must not contain control characters
- TermOutputBuffer *obuf = &term->obuf;
- const char *filename = buffer_filename(buffer);
- term_add_literal(obuf, "\033]2;");
- term_add_bytes(obuf, filename, strlen(filename));
- term_add_byte(obuf, ' ');
- term_add_byte(obuf, buffer_modified(buffer) ? '+' : '-');
- term_add_literal(obuf, " dte\033\\");
-}
-
-void mask_color(TermColor *color, const TermColor *over)
-{
- if (over->fg != COLOR_KEEP) {
- color->fg = over->fg;
- }
- if (over->bg != COLOR_KEEP) {
- color->bg = over->bg;
- }
- if (!(over->attr & ATTR_KEEP)) {
- color->attr = over->attr;
- }
-}
-
-void restore_cursor(EditorState *e)
-{
- unsigned int x, y;
- switch (e->input_mode) {
- case INPUT_NORMAL:
- x = e->window->edit_x + e->view->cx_display - e->view->vx;
- y = e->window->edit_y + e->view->cy - e->view->vy;
- break;
- case INPUT_COMMAND:
- case INPUT_SEARCH:
- x = e->cmdline_x;
- y = e->terminal.height - 1;
- break;
- default:
- BUG("unhandled input mode");
- }
- term_move_cursor(&e->terminal.obuf, x, y);
-}
-
-static void clear_update_tabbar(Window *window, void* UNUSED_ARG(data))
-{
- window->update_tabbar = false;
-}
-
-void end_update(EditorState *e)
-{
- Terminal *term = &e->terminal;
- restore_cursor(e);
- term_show_cursor(term);
- term_end_sync_update(term);
- term_output_flush(&term->obuf);
-
- e->buffer->changed_line_min = LONG_MAX;
- e->buffer->changed_line_max = -1;
- frame_for_each_window(e->root_frame, clear_update_tabbar, NULL);
-}
-
-void start_update(Terminal *term)
-{
- term_begin_sync_update(term);
- term_hide_cursor(term);
-}
-
-void update_window_sizes(Terminal *term, Frame *frame)
-{
- set_frame_size(frame, term->width, term->height - 1);
- update_window_coordinates(frame);
-}
-
-void update_screen_size(Terminal *term, Frame *root_frame)
-{
- unsigned int width, height;
- if (!term_get_size(&width, &height)) {
- return;
- }
-
- // TODO: remove minimum width/height and instead make update_screen()
- // do something sensible when the terminal dimensions are tiny
- term->width = MAX(width, 3);
- term->height = MAX(height, 3);
-
- update_window_sizes(term, root_frame);
- LOG_INFO("terminal size: %ux%u", width, height);
-}
-
-NOINLINE
-void normal_update(EditorState *e)
-{
- Terminal *term = &e->terminal;
- start_update(term);
- update_term_title(term, e->buffer, e->options.set_window_title);
- update_all_windows(e);
- update_command_line(e);
- update_cursor_style(e);
- end_update(e);
-}
-
-void update_screen(EditorState *e, const ScreenState *s)
-{
- if (e->everything_changed) {
- e->everything_changed = false;
- normal_update(e);
- return;
- }
-
- Buffer *buffer = e->buffer;
- View *view = e->view;
- view_update_cursor_x(view);
- view_update_cursor_y(view);
- view_update(view, e->options.scroll_margin);
-
- if (s->id == buffer->id) {
- if (s->vx != view->vx || s->vy != view->vy) {
- mark_all_lines_changed(buffer);
- } else {
- // Because of trailing whitespace highlighting and highlighting
- // current line in different color, the lines cy (old cursor y) and
- // view->cy need to be updated. Always update at least current line.
- buffer_mark_lines_changed(buffer, s->cy, view->cy);
- }
- if (s->is_modified != buffer_modified(buffer)) {
- mark_buffer_tabbars_changed(buffer);
- }
- } else {
- e->window->update_tabbar = true;
- mark_all_lines_changed(buffer);
- }
-
- start_update(&e->terminal);
- if (e->window->update_tabbar) {
- update_term_title(&e->terminal, e->buffer, e->options.set_window_title);
- }
- update_buffer_windows(e, buffer);
- update_command_line(e);
- if (e->cursor_style_changed) {
- update_cursor_style(e);
- }
- end_update(e);
-}