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:
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;