aboutsummaryrefslogtreecommitdiff
path: root/image.c
diff options
context:
space:
mode:
authornirav <nirav@teisuu.com>2018-09-09 12:13:13 +0530
committerDandelion <nirav@teisuu.com>2018-09-09 12:46:57 +0530
commite54d8327819e310b7b148e45c15fca197be845c7 (patch)
tree04e513d52ed2191364e6b9472cd0f3882a60da4a /image.c
parent661756c9237a26562cae102f53b12aa0b403fde1 (diff)
downloadim-e54d8327819e310b7b148e45c15fca197be845c7.tar.gz
im-e54d8327819e310b7b148e45c15fca197be845c7.zip
Moved source files to src dir, updated makefile
Diffstat (limited to 'image.c')
-rw-r--r--image.c97
1 files changed, 0 insertions, 97 deletions
diff --git a/image.c b/image.c
deleted file mode 100644
index d4765fd..0000000
--- a/image.c
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "image.h"
-#include "window.h"
-#include <gtk-3.0/gtk/gtk.h>
-
-GtkWidget *new_image()
-{
- image = gtk_image_new();
- return image;
-}
-
-int load_image(char *file_name)
-{
- GError *error = NULL;
- if (pixbuf != NULL)
- g_object_unref(pixbuf);
- pixbuf = gdk_pixbuf_new_from_file(file_name, &error);
- if (error)
- return -1;
- curr_pixbuf_width = pixbuf_width = gdk_pixbuf_get_width(GDK_PIXBUF(pixbuf));
- curr_pixbuf_height = pixbuf_height =
- gdk_pixbuf_get_height(GDK_PIXBUF(pixbuf));
- aspect_ratio = (double)pixbuf_width / (double)pixbuf_height;
- curr_zoom = 1.0;
- fit_image();
- set_window_title(g_path_get_basename(file_name));
- return 1;
-}
-
-void update_pixbuf()
-{
- if (curr_pixbuf != NULL)
- g_object_unref(curr_pixbuf);
- if (pixbuf == NULL)
- return;
- curr_pixbuf =
- gdk_pixbuf_scale_simple(GDK_PIXBUF(pixbuf), curr_pixbuf_width,
- curr_pixbuf_height, GDK_INTERP_BILINEAR);
- gtk_image_set_from_pixbuf(GTK_IMAGE(image), GDK_PIXBUF(curr_pixbuf));
-}
-
-void fit_image()
-{
- gint win_width, win_height;
- get_curr_win_size(&win_width, &win_height);
- curr_scale_mod = fit;
- if (pixbuf == NULL || win_width < 1 || win_height < 1)
- return;
- if (win_width < pixbuf_width && win_height > pixbuf_height) {
- curr_pixbuf_width = win_width;
- curr_pixbuf_height = (double)curr_pixbuf_width / aspect_ratio;
- } else if (win_width > pixbuf_width && win_height < pixbuf_height) {
- curr_pixbuf_height = win_height;
- curr_pixbuf_width = (double)curr_pixbuf_height * aspect_ratio;
- } else if (win_width < pixbuf_width && win_height < pixbuf_height) {
- if (((double)win_width / (double)win_height) > aspect_ratio) {
- curr_pixbuf_height = win_height;
- curr_pixbuf_width = ((double)curr_pixbuf_height * aspect_ratio);
- } else {
- curr_pixbuf_width = win_width;
- curr_pixbuf_height = (double)curr_pixbuf_width / aspect_ratio;
- }
- } else {
- curr_pixbuf_width = pixbuf_width;
- curr_pixbuf_height = pixbuf_height;
- }
-
- curr_zoom = (double)curr_pixbuf_width / (double)pixbuf_width;
- if (curr_pixbuf_width < 1 || curr_pixbuf_height < 1)
- return;
-
- update_pixbuf();
-}
-
-void zoom(int type)
-{
- curr_scale_mod = zoomed;
- if (pixbuf == NULL)
- return;
- if (type == 0) {
- if (curr_zoom == 1.0)
- return;
- curr_zoom = 1.0;
- } else if (type < 0) {
- if (curr_zoom < 0.2)
- return;
- curr_zoom -= 0.1;
- } else if (type > 0) {
- if (curr_zoom > 2)
- return;
- curr_zoom += 0.1;
- }
-
- curr_pixbuf_width = curr_zoom * (double)pixbuf_width;
- curr_pixbuf_height = curr_zoom * (double)pixbuf_height;
-
- update_pixbuf();
-}