ded

Dramatic EDitor
Index Commits Files Refs README LICENSE
commit 8b684c9695dabad3b62167b2040d73689e4fccc1
parent fb33ce6c0c99c0dcbb1e700b3d1b7ee7d41c73ac
Author: Alexey Kutepov <reximkut@gmail.com>
Date:   Thu, 16 Feb 2023 15:10:28 +0700

Merge pull request #61 from mjkloeckner/cursor_offset

Fix cursor misaligned: add cursor offset
Diffstat:
Msrc/common.h | 1+
Msrc/editor.c | 4++--
Msrc/file_browser.c | 2+-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/common.h b/src/common.h
@@ -10,6 +10,7 @@
 #define SCREEN_HEIGHT 600
 #define FPS 60
 #define DELTA_TIME (1.0f / FPS)
+#define CURSOR_OFFSET 0.13f
 
 typedef int Errno;
 
diff --git a/src/editor.c b/src/editor.c
@@ -235,7 +235,7 @@ void editor_render(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
                 }
 
                 if (select_begin_chr <= select_end_chr) {
-                    Vec2f select_begin_scr = vec2f(0, -(float)row * FREE_GLYPH_FONT_SIZE);
+                    Vec2f select_begin_scr = vec2f(0, -((float)row + CURSOR_OFFSET) * FREE_GLYPH_FONT_SIZE);
                     free_glyph_atlas_measure_line_sized(
                         atlas, editor->data.items + line_chr.begin, select_begin_chr - line_chr.begin,
                         &select_begin_scr);
@@ -288,7 +288,7 @@ void editor_render(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
         size_t cursor_row = editor_cursor_row(editor);
         Line line = editor->lines.items[cursor_row];
         size_t cursor_col = editor->cursor - line.begin;
-        cursor_pos.y = -(float) cursor_row * FREE_GLYPH_FONT_SIZE;
+        cursor_pos.y = -((float)cursor_row + CURSOR_OFFSET) * FREE_GLYPH_FONT_SIZE;
         cursor_pos.x = free_glyph_atlas_cursor_pos(
                            atlas,
                            editor->data.items + line.begin, line.end - line.begin,
diff --git a/src/file_browser.c b/src/file_browser.c
@@ -67,7 +67,7 @@ void fb_render(const File_Browser *fb, SDL_Window *window, Free_Glyph_Atlas *atl
 
     simple_renderer_set_shader(sr, SHADER_FOR_COLOR);
     if (fb->cursor < fb->files.count) {
-        const Vec2f begin = vec2f(0, -(float)fb->cursor * FREE_GLYPH_FONT_SIZE);
+        const Vec2f begin = vec2f(0, -((float)fb->cursor + CURSOR_OFFSET) * FREE_GLYPH_FONT_SIZE);
         Vec2f end = begin;
         free_glyph_atlas_measure_line_sized(
             atlas, fb->files.items[fb->cursor], strlen(fb->files.items[fb->cursor]),