ded

Dramatic EDitor
Index Commits Files Refs README LICENSE
commit f3e28131a5390559967331ba0584dc2648eee4d7
parent e9e7126b6ab59ab16e34c2a05f1c85e06397dd1a
Author: rexim <reximkut@gmail.com>
Date:   Thu,  9 Feb 2023 19:19:47 +0700

Don't use SCREEN_WIDTH in dynamic camera code

Diffstat:
Msrc/editor.c | 7+++----
Msrc/file_browser.c | 17++++++++++++-----
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/editor.c b/src/editor.c
@@ -314,8 +314,7 @@ void editor_render(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
             max_line_len = 1000.0f;
         }
 
-        // TODO: SCREEN_WIDTH has to be variable cause window my resize
-        float target_scale = SCREEN_WIDTH / max_line_len;
+        float target_scale = w/3/(max_line_len*0.75); // TODO: division by 0
 
         Vec2f target = cursor_pos;
         float offset = 0.0f;
@@ -323,9 +322,9 @@ void editor_render(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
         if (target_scale > 3.0f) {
             target_scale = 3.0f;
         } else {
-            offset = cursor_pos.x - SCREEN_WIDTH/sr->camera_scale;
+            offset = cursor_pos.x - w/3/sr->camera_scale;
             if (offset < 0.0f) offset = 0.0f;
-            target = vec2f(SCREEN_WIDTH/sr->camera_scale + offset, cursor_pos.y);
+            target = vec2f(w/3/sr->camera_scale + offset, cursor_pos.y);
         }
 
         sr->camera_vel = vec2f_mul(
diff --git a/src/file_browser.c b/src/file_browser.c
@@ -95,18 +95,25 @@ void fb_render(const File_Browser *fb, SDL_Window *window, Free_Glyph_Atlas *atl
 
     // Update camera
     {
-        float target_scale = 3.0f;
-        if (max_line_len > 0.0f) {
-            target_scale = SCREEN_WIDTH / max_line_len;
+        if (max_line_len > 1000.0f) {
+            max_line_len = 1000.0f;
         }
 
+        float target_scale = w/3/(max_line_len*0.75); // TODO: division by 0
+
+        Vec2f target = cursor_pos;
+        float offset = 0.0f;
+
         if (target_scale > 3.0f) {
             target_scale = 3.0f;
+        } else {
+            offset = cursor_pos.x - w/3/sr->camera_scale;
+            if (offset < 0.0f) offset = 0.0f;
+            target = vec2f(w/3/sr->camera_scale + offset, cursor_pos.y);
         }
 
-
         sr->camera_vel = vec2f_mul(
-                             vec2f_sub(cursor_pos, sr->camera_pos),
+                             vec2f_sub(target, sr->camera_pos),
                              vec2fs(2.0f));
         sr->camera_scale_vel = (target_scale - sr->camera_scale) * 2.0f;