Sort headers using clang-tidy
[geeqie.git] / src / pixbuf-renderer.cc
index b6716e1..d0a9440 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include "pixbuf-renderer.h"
+
 #include <cmath>
 #include <cstdlib>
 #include <cstring>
 
-#include "main.h"
-#include "pixbuf-renderer.h"
+#include <config.h>
 
+#include "debug.h"
+#include "main-defines.h"
+#include "options.h"
 #include "renderer-tiles.h"
 
 /* comment this out if not using this from within Geeqie
@@ -35,9 +39,8 @@
 #define GQ_BUILD 1
 
 #ifdef GQ_BUILD
-#include "main.h"
-#include "pixbuf-util.h"
 #include "exif.h"
+#include "pixbuf-util.h"
 #else
 enum ExifOrientationType {
        EXIF_ORIENTATION_UNKNOWN        = 0,
@@ -54,23 +57,31 @@ enum ExifOrientationType {
 
 
 /* default min and max zoom */
-#define PR_ZOOM_MIN -32.0
+#define PR_ZOOM_MIN (-32.0)
 #define PR_ZOOM_MAX 32.0
 
 /* distance to drag mouse to disable image flip */
-#define PR_DRAG_SCROLL_THRESHHOLD 4
+enum {
+       PR_DRAG_SCROLL_THRESHHOLD = 4
+};
 
 /* increase pan rate when holding down shift */
-#define PR_PAN_SHIFT_MULTIPLIER 6
+enum {
+       PR_PAN_SHIFT_MULTIPLIER = 6
+};
 
 /* scroller config */
-#define PR_SCROLLER_UPDATES_PER_SEC 30
-#define PR_SCROLLER_DEAD_ZONE 6
+enum {
+       PR_SCROLLER_UPDATES_PER_SEC = 30,
+       PR_SCROLLER_DEAD_ZONE = 6
+};
 
 /* when scaling image to below this size, use nearest pixel for scaling
  * (below about 4, the other scale types become slow generating their conversion tables)
  */
-#define PR_MIN_SCALE_SIZE 8
+//~ enum {
+//~ PR_MIN_SCALE_SIZE = 8
+//~ };
 
 enum {
        SIGNAL_ZOOM = 0,
@@ -680,7 +691,8 @@ static gboolean pr_parent_window_resize(PixbufRenderer *pr, gint w, gint h)
 {
        GtkWidget *widget;
        GtkWidget *parent;
-       gint ww, wh;
+       gint ww;
+       gint wh;
        GtkAllocation widget_allocation;
        GtkAllocation parent_allocation;
 
@@ -775,8 +787,10 @@ void pixbuf_renderer_overlay_remove(PixbufRenderer *pr, gint id)
 static gboolean pr_scroller_update_cb(gpointer data)
 {
        auto pr = static_cast<PixbufRenderer *>(data);
-       gint x, y;
-       gint xinc, yinc;
+       gint x;
+       gint y;
+       gint xinc;
+       gint yinc;
 
        /* this was a simple scroll by difference between scroller and mouse position,
         * but all this math results in a smoother result and accounts for a dead zone.
@@ -879,7 +893,8 @@ static void pr_scroller_start(PixbufRenderer *pr, gint x, gint y)
        if (pr->scroller_overlay == -1)
                {
                GdkPixbuf *pixbuf;
-               gint w, h;
+               gint w;
+               gint h;
 
 #ifdef GQ_BUILD
                pixbuf = gdk_pixbuf_new_from_resource(GQ_RESOURCE_PATH_ICONS "/" PIXBUF_INLINE_SCROLLER ".png", nullptr);
@@ -967,7 +982,10 @@ static void pr_source_tile_unset(PixbufRenderer *pr)
 
 static gboolean pr_source_tile_visible(PixbufRenderer *pr, SourceTile *st)
 {
-       gint x1, y1, x2, y2;
+       gint x1;
+       gint y1;
+       gint x2;
+       gint y2;
 
        if (!st) return FALSE;
 
@@ -1094,9 +1112,11 @@ static SourceTile *pr_source_tile_find(PixbufRenderer *pr, gint x, gint y)
 
 GList *pr_source_tile_compute_region(PixbufRenderer *pr, gint x, gint y, gint w, gint h, gboolean request)
 {
-       gint x1, y1;
+       gint x1;
+       gint y1;
        GList *list = nullptr;
-       gint sx, sy;
+       gint sx;
+       gint sy;
 
        if (x < 0) x = 0;
        if (y < 0) y = 0;
@@ -1132,7 +1152,10 @@ static void pr_source_tile_changed(PixbufRenderer *pr, gint x, gint y, gint widt
        while (work)
                {
                SourceTile *st;
-               gint rx, ry, rw, rh;
+               gint rx;
+               gint ry;
+               gint rw;
+               gint rh;
 
                st = static_cast<SourceTile *>(work->data);
                work = work->next;
@@ -1537,7 +1560,8 @@ void pr_coords_map_orientation_reverse(gint orientation,
 
 static void pixbuf_renderer_sync_scroll_center(PixbufRenderer *pr)
 {
-       gint src_x, src_y;
+       gint src_x;
+       gint src_y;
        if (!pr->width || !pr->height) return;
 
        /*
@@ -1601,7 +1625,8 @@ static gboolean pr_scroll_clamp(PixbufRenderer *pr)
 
 static gboolean pr_size_clamp(PixbufRenderer *pr)
 {
-       gint old_vw, old_vh;
+       gint old_vw;
+       gint old_vh;
 
        old_vw = pr->vis_width;
        old_vh = pr->vis_height;
@@ -1636,7 +1661,8 @@ static gboolean pr_size_clamp(PixbufRenderer *pr)
 static gboolean pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom,
                              PrZoomFlags flags)
 {
-       gint w, h;
+       gint w;
+       gint h;
        gdouble scale;
        gboolean force = !!(flags & PR_ZOOM_FORCE);
        gboolean new_z = !!(flags & PR_ZOOM_NEW);
@@ -1746,7 +1772,8 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
                         PrZoomFlags flags, gint px, gint py)
 {
        gdouble old_scale;
-       gint old_cx, old_cy;
+       gint old_cx;
+       gint old_cy;
        gboolean center_point = !!(flags & PR_ZOOM_CENTER);
        gboolean force = !!(flags & PR_ZOOM_FORCE);
        gboolean new_z = !!(flags & PR_ZOOM_NEW);
@@ -1782,13 +1809,13 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
                        {
                        case PR_SCROLL_RESET_NOCHANGE:
                                /* maintain old scroll position */
-                               pr->x_scroll = (static_cast<gdouble>(pr->image_width) * old_center_x * pr->scale) - pr->vis_width / 2;
-                               pr->y_scroll = (static_cast<gdouble>(pr->image_height) * old_center_y * pr->scale * pr->aspect_ratio) - pr->vis_height / 2;
+                               pr->x_scroll = (static_cast<gdouble>(pr->image_width) * old_center_x * pr->scale) - pr->vis_width / 2.0;
+                               pr->y_scroll = (static_cast<gdouble>(pr->image_height) * old_center_y * pr->scale * pr->aspect_ratio) - pr->vis_height / 2.0;
                                break;
                        case PR_SCROLL_RESET_CENTER:
                                /* center new image */
-                               pr->x_scroll = (static_cast<gdouble>(pr->image_width) / 2.0 * pr->scale) - pr->vis_width / 2;
-                               pr->y_scroll = (static_cast<gdouble>(pr->image_height) / 2.0 * pr->scale * pr->aspect_ratio) - pr->vis_height / 2;
+                               pr->x_scroll = (static_cast<gdouble>(pr->image_width) / 2.0 * pr->scale) - pr->vis_width / 2.0;
+                               pr->y_scroll = (static_cast<gdouble>(pr->image_height) / 2.0 * pr->scale * pr->aspect_ratio) - pr->vis_height / 2.0;
                                break;
                        case PR_SCROLL_RESET_TOPLEFT:
                        default:
@@ -1808,8 +1835,8 @@ static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
                        }
                else
                        {
-                       pr->x_scroll = old_cx / old_scale * pr->scale - (pr->vis_width / 2);
-                       pr->y_scroll = old_cy / old_scale * pr->scale * pr->aspect_ratio - (pr->vis_height / 2);
+                       pr->x_scroll = old_cx / old_scale * pr->scale - (pr->vis_width / 2.0);
+                       pr->y_scroll = old_cy / old_scale * pr->scale * pr->aspect_ratio - (pr->vis_height / 2.0);
                        }
                }
 
@@ -1899,7 +1926,8 @@ static void pr_size_sync(PixbufRenderer *pr, gint new_width, gint new_height)
 
                        if (pixbuf_renderer_overlay_get(pr, pr->scroller_overlay, &pixbuf, nullptr, nullptr))
                                {
-                               gint w, h;
+                               gint w;
+                               gint h;
 
                                w = gdk_pixbuf_get_width(pixbuf);
                                h = gdk_pixbuf_get_height(pixbuf);
@@ -1929,8 +1957,10 @@ static void pr_size_cb(GtkWidget *, GtkAllocation *allocation, gpointer data)
 
 void pixbuf_renderer_scroll(PixbufRenderer *pr, gint x, gint y)
 {
-       gint old_x, old_y;
-       gint x_off, y_off;
+       gint old_x;
+       gint old_y;
+       gint x_off;
+       gint y_off;
 
        g_return_if_fail(IS_PIXBUF_RENDERER(pr));
 
@@ -1960,8 +1990,10 @@ void pixbuf_renderer_scroll(PixbufRenderer *pr, gint x, gint y)
 void pixbuf_renderer_scroll_to_point(PixbufRenderer *pr, gint x, gint y,
                                     gdouble x_align, gdouble y_align)
 {
-       gint px, py;
-       gint ax, ay;
+       gint px;
+       gint py;
+       gint ax;
+       gint ay;
 
        x_align = CLAMP(x_align, 0.0, 1.0);
        y_align = CLAMP(y_align, 0.0, 1.0);
@@ -1985,10 +2017,11 @@ void pixbuf_renderer_get_scroll_center(PixbufRenderer *pr, gdouble *x, gdouble *
 
 void pixbuf_renderer_set_scroll_center(PixbufRenderer *pr, gdouble x, gdouble y)
 {
-       gdouble dst_x, dst_y;
+       gdouble dst_x;
+       gdouble dst_y;
 
-       dst_x = x * pr->width  - pr->vis_width  / 2 - pr->x_scroll + CLAMP(pr->subpixel_x_scroll, -1.0, 1.0);
-       dst_y = y * pr->height - pr->vis_height / 2 - pr->y_scroll + CLAMP(pr->subpixel_y_scroll, -1.0, 1.0);
+       dst_x = x * pr->width  - pr->vis_width  / 2.0 - pr->x_scroll + CLAMP(pr->subpixel_x_scroll, -1.0, 1.0);
+       dst_y = y * pr->height - pr->vis_height / 2.0 - pr->y_scroll + CLAMP(pr->subpixel_y_scroll, -1.0, 1.0);
 
        pr->subpixel_x_scroll = dst_x - static_cast<gint>(dst_x);
        pr->subpixel_y_scroll = dst_y - static_cast<gint>(dst_y);
@@ -2011,7 +2044,8 @@ static gboolean pr_mouse_motion_cb(GtkWidget *widget, GdkEventMotion *event, gpo
 
        /* This is a hack, but work far the best, at least for single pointer systems.
         * See https://bugzilla.gnome.org/show_bug.cgi?id=587714 for more. */
-       gint x, y;
+       gint x;
+       gint y;
        seat = gdk_display_get_default_seat(gdk_window_get_display(event->window));
        device = gdk_seat_get_pointer(seat);
 
@@ -2213,18 +2247,25 @@ static void pr_signals_connect(PixbufRenderer *pr)
  *-------------------------------------------------------------------
  */
 
-#define COLOR_BYTES 3   /* rgb */
-#define RC 0            /* Red-Cyan */
-#define GM 1            /* Green-Magenta */
-#define YB 2            /* Yellow-Blue */
+enum {
+       COLOR_BYTES = 3,   /* rgb */
+       RC = 0,            /* Red-Cyan */
+       GM = 1,            /* Green-Magenta */
+       YB = 2            /* Yellow-Blue */
+};
 
 static void pr_create_anaglyph_color(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
 {
-       gint srs, drs;
-       guchar *s_pix, *d_pix;
-       guchar *sp, *dp;
-       guchar *spi, *dpi;
-       gint i, j;
+       gint srs;
+       gint drs;
+       guchar *s_pix;
+       guchar *d_pix;
+       guchar *sp;
+       guchar *dp;
+       guchar *spi;
+       guchar *dpi;
+       gint i;
+       gint j;
 
        srs = gdk_pixbuf_get_rowstride(right);
        s_pix = gdk_pixbuf_get_pixels(right);
@@ -2261,11 +2302,16 @@ static void pr_create_anaglyph_color(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x
 
 static void pr_create_anaglyph_gray(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
 {
-       gint srs, drs;
-       guchar *s_pix, *d_pix;
-       guchar *sp, *dp;
-       guchar *spi, *dpi;
-       gint i, j;
+       gint srs;
+       gint drs;
+       guchar *s_pix;
+       guchar *d_pix;
+       guchar *sp;
+       guchar *dp;
+       guchar *spi;
+       guchar *dpi;
+       gint i;
+       gint j;
        const double gc[3] = {0.299, 0.587, 0.114};
 
        srs = gdk_pixbuf_get_rowstride(right);
@@ -2310,11 +2356,17 @@ static void pr_create_anaglyph_gray(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x,
 
 static void pr_create_anaglyph_dubois(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
 {
-       gint srs, drs;
-       guchar *s_pix, *d_pix;
-       guchar *sp, *dp;
-       guchar *spi, *dpi;
-       gint i, j, k;
+       gint srs;
+       gint drs;
+       guchar *s_pix;
+       guchar *d_pix;
+       guchar *sp;
+       guchar *dp;
+       guchar *spi;
+       guchar *dpi;
+       gint i;
+       gint j;
+       gint k;
        double pr_dubois_matrix[3][6];
        static const double pr_dubois_matrix_RC[3][6] = {
                { 0.456,  0.500,  0.176, -0.043, -0.088, -0.002},
@@ -2824,10 +2876,16 @@ gboolean pixbuf_renderer_get_pixel_colors(PixbufRenderer *pr, gint x_pixel, gint
                                           gint *r_mouse, gint *g_mouse, gint *b_mouse)
 {
        GdkPixbuf *pb = pr->pixbuf;
-       gint p_alpha, prs;
-       guchar *p_pix, *pp;
-       gint map_x, map_y, map_w, map_h;
-       size_t xoff, yoff;
+       gint p_alpha;
+       gint prs;
+       guchar *p_pix;
+       guchar *pp;
+       gint map_x;
+       gint map_y;
+       gint map_w;
+       gint map_h;
+       size_t xoff;
+       size_t yoff;
 
        g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
        g_return_val_if_fail(r_mouse != nullptr && g_mouse != nullptr && b_mouse != nullptr, FALSE);
@@ -2870,7 +2928,10 @@ gboolean pixbuf_renderer_get_pixel_colors(PixbufRenderer *pr, gint x_pixel, gint
 
 gboolean pixbuf_renderer_get_mouse_position(PixbufRenderer *pr, gint *x_pixel_return, gint *y_pixel_return)
 {
-       gint x_pixel, y_pixel, x_pixel_clamped, y_pixel_clamped;
+       gint x_pixel;
+       gint y_pixel;
+       gint x_pixel_clamped;
+       gint y_pixel_clamped;
 
        g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
        g_return_val_if_fail(x_pixel_return != nullptr && y_pixel_return != nullptr, FALSE);
@@ -2965,7 +3026,7 @@ gboolean pixbuf_renderer_get_visible_rect(PixbufRenderer *pr, GdkRectangle *rect
 gboolean pixbuf_renderer_get_virtual_rect_unused(PixbufRenderer *pr, GdkRectangle *rect)
 {
        g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
-       g_return_val_if_fail(rect != NULL, FALSE);
+       g_return_val_if_fail(rect != nullptr, FALSE);
 
        if ((!pr->pixbuf && !pr->source_tiles_enabled))
                {