aboutsummaryrefslogtreecommitdiff
path: root/src/viewport.c
diff options
context:
space:
mode:
authorJose Diez <jose.manuel.diez@gmail.com>2015-11-11 16:05:32 +0000
committerJose Diez <jose.manuel.diez@gmail.com>2015-11-11 16:05:32 +0000
commitc53ca5a9c59626a90551e2eaa00ad3e4247b3734 (patch)
tree52530100ced9dd7d20bc95d031a51b07a70796b3 /src/viewport.c
parentee3c3432cbc4a988c534b00cb274a11e3e23d6f8 (diff)
downloadimv-c53ca5a9c59626a90551e2eaa00ad3e4247b3734.tar.gz
Viewport: autoscale and center by default unless interacted with
Diffstat (limited to 'src/viewport.c')
-rw-r--r--src/viewport.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/viewport.c b/src/viewport.c
index 1630604..46c6ae7 100644
--- a/src/viewport.c
+++ b/src/viewport.c
@@ -26,6 +26,7 @@ void imv_init_viewport(struct imv_viewport *view, SDL_Window *window)
view->scale = 1;
view->x = view->y = view->fullscreen = view->redraw = 0;
view->playing = 1;
+ view->locked = 0;
}
void imv_destroy_viewport(struct imv_viewport *view)
@@ -59,6 +60,7 @@ void imv_viewport_reset(struct imv_viewport *view)
view->scale = 1;
view->x = view->y = 0;
view->redraw = 1;
+ view->locked = 0;
}
void imv_viewport_move(struct imv_viewport *view, int x, int y)
@@ -66,6 +68,7 @@ void imv_viewport_move(struct imv_viewport *view, int x, int y)
view->x += x;
view->y += y;
view->redraw = 1;
+ view->locked = 1;
}
void imv_viewport_zoom(struct imv_viewport *view, int amount)
@@ -76,6 +79,7 @@ void imv_viewport_zoom(struct imv_viewport *view, int amount)
else if (view->scale < 0.01)
view->scale = 0.1;
view->redraw = 1;
+ view->locked = 1;
}
void imv_viewport_center(struct imv_viewport *view, const struct imv_image* img)
@@ -86,6 +90,7 @@ void imv_viewport_center(struct imv_viewport *view, const struct imv_image* img)
view->x = (ww - img->width * view->scale) / 2;
view->y = (wh - img->height * view->scale) / 2;
+ view->locked = 0;
view->redraw = 1;
}
@@ -106,6 +111,7 @@ void imv_viewport_scale_to_window(struct imv_viewport *view, const struct imv_im
}
imv_viewport_center(view, img);
+ view->locked = 0;
}
void imv_viewport_set_redraw(struct imv_viewport *view)
@@ -117,3 +123,14 @@ void imv_viewport_set_title(struct imv_viewport *view, char* title)
{
SDL_SetWindowTitle(view->window, title);
}
+
+void imv_viewport_updated(struct imv_viewport *view, struct imv_image* img)
+{
+ view->redraw = 1;
+ if(view->locked) {
+ return;
+ }
+
+ imv_viewport_scale_to_window(view, img);
+ imv_viewport_center(view, img);
+}