Use references in pan_layout_compute() parameters
authorArkadiy Illarionov <qarkai@gmail.com>
Sat, 13 Apr 2024 12:31:44 +0000 (15:31 +0300)
committerColin Clark <colin.clark@cclark.uk>
Sat, 13 Apr 2024 16:54:47 +0000 (17:54 +0100)
Simplify related functions.

src/pan-view/pan-calendar.cc
src/pan-view/pan-calendar.h
src/pan-view/pan-folder.cc
src/pan-view/pan-folder.h
src/pan-view/pan-grid.cc
src/pan-view/pan-grid.h
src/pan-view/pan-item.cc
src/pan-view/pan-item.h
src/pan-view/pan-timeline.cc
src/pan-view/pan-timeline.h
src/pan-view/pan-view.cc

index 746bb70..e3faa61 100644 (file)
@@ -203,7 +203,7 @@ void pan_calendar_update(PanWindow *pw, PanItem *pi_day)
        pan_layout_resize(pw);
 }
 
-void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height)
+void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height)
 {
        GList *list;
        GList *work;
@@ -275,8 +275,8 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                end_month = pan_date_value(fd->date, PAN_DATE_LENGTH_MONTH);
                }
 
-       *width = PAN_BOX_BORDER * 2;
-       *height = PAN_BOX_BORDER * 2;
+       width = PAN_BOX_BORDER * 2;
+       height = PAN_BOX_BORDER * 2;
 
        x = PAN_BOX_BORDER;
        y = PAN_BOX_BORDER;
@@ -441,8 +441,8 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                        }
                }
 
-       *width += grid;
-       *height = MAX(*height, grid + PAN_BOX_BORDER * 2 * 2);
+       width += grid;
+       height = MAX(height, grid + PAN_BOX_BORDER * 2 * 2);
 
        g_list_free(list);
 }
index 3279303..b06a010 100644 (file)
@@ -29,6 +29,6 @@ struct PanItem;
 struct PanWindow;
 
 void pan_calendar_update(PanWindow *pw, PanItem *pi_day);
-void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height);
+void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height);
 
 #endif
index 8c8a6aa..9e3eff3 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "pan-folder.h"
 
+#include <algorithm>
 #include <cmath>
 
 #include "filedata.h"
@@ -30,7 +31,7 @@
 #include "pan-view-filter.h"
 #include "typedefs.h"
 
-static void pan_flower_size(PanWindow *pw, gint *width, gint *height)
+static void pan_flower_size(PanWindow *pw, gint &width, gint &height)
 {
        GList *work;
        gint x1;
@@ -87,8 +88,8 @@ static void pan_flower_size(PanWindow *pw, gint *width, gint *height)
                        }
                }
 
-       if (width) *width = x2 - x1;
-       if (height) *height = y2 - y1;
+       width = x2 - x1;
+       height = y2 - y1;
 }
 
 struct FlowerGroup {
@@ -350,8 +351,8 @@ static FlowerGroup *pan_flower_group(PanWindow *pw, FileData *dir_fd, gint x, gi
 }
 
 void pan_flower_compute(PanWindow *pw, FileData *dir_fd,
-                       gint *width, gint *height,
-                       gint *scroll_x, gint *scroll_y)
+                        gint &width, gint &height,
+                        gint &scroll_x, gint &scroll_y)
 {
        FlowerGroup *group;
        GList *list;
@@ -365,16 +366,16 @@ void pan_flower_compute(PanWindow *pw, FileData *dir_fd,
        if (list)
                {
                auto pi = static_cast<PanItem *>(list->data);
-               *scroll_x = pi->x + pi->width / 2;
-               *scroll_y = pi->y + pi->height / 2;
+               scroll_x = pi->x + pi->width / 2;
+               scroll_y = pi->y + pi->height / 2;
                }
        g_list_free(list);
 }
 
 static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
-                                gint *x, gint *y, gint *level,
-                                PanItem *parent,
-                                gint *width, gint *height)
+                                 gint &x, gint &y, gint level,
+                                 PanItem *parent,
+                                 gint &width, gint &height)
 {
        GList *f;
        GList *d;
@@ -390,23 +391,23 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
 
        pan_filter_fd_list(&f, pw->filter_ui->filter_elements, pw->filter_ui->filter_classes);
 
-       *x = PAN_BOX_BORDER + ((*level) * MAX(PAN_BOX_BORDER, PAN_THUMB_GAP));
+       x = PAN_BOX_BORDER + (level * MAX(PAN_BOX_BORDER, PAN_THUMB_GAP));
 
-       pi_box = pan_item_text_new(pw, *x, *y, dir_fd->path, PAN_TEXT_ATTR_NONE,
-                                  PAN_BORDER_3,
-                                  {PAN_TEXT_COLOR, 255});
+       pi_box = pan_item_text_new(pw, x, y, dir_fd->path, PAN_TEXT_ATTR_NONE,
+                                  PAN_BORDER_3,
+                                  {PAN_TEXT_COLOR, 255});
 
-       *y += pi_box->height;
+       y += pi_box->height;
 
        pi_box = pan_item_box_new(pw, file_data_ref(dir_fd),
-                                 *x, *y,
-                                 PAN_BOX_BORDER, PAN_BOX_BORDER,
-                                 PAN_BOX_OUTLINE_THICKNESS,
-                                 {PAN_BOX_COLOR, PAN_BOX_ALPHA},
-                                 {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
+                                 x, y,
+                                 PAN_BOX_BORDER, PAN_BOX_BORDER,
+                                 PAN_BOX_OUTLINE_THICKNESS,
+                                 {PAN_BOX_COLOR, PAN_BOX_ALPHA},
+                                 {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
 
-       *x += PAN_BOX_BORDER;
-       *y += PAN_BOX_BORDER;
+       x += PAN_BOX_BORDER;
+       y += PAN_BOX_BORDER;
 
        work = f;
        while (work)
@@ -419,21 +420,21 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
 
                if (pw->size > PAN_IMAGE_SIZE_THUMB_LARGE)
                        {
-                       pi = pan_item_image_new(pw, fd, *x, *y, 10, 10);
-                       *x += pi->width + PAN_THUMB_GAP;
+                       pi = pan_item_image_new(pw, fd, x, y, 10, 10);
+                       x += pi->width + PAN_THUMB_GAP;
                        if (pi->height > y_height) y_height = pi->height;
                        }
                else
                        {
-                       pi = pan_item_thumb_new(pw, fd, *x, *y);
-                       *x += PAN_THUMB_SIZE + PAN_THUMB_GAP;
+                       pi = pan_item_thumb_new(pw, fd, x, y);
+                       x += PAN_THUMB_SIZE + PAN_THUMB_GAP;
                        y_height = PAN_THUMB_SIZE;
                        }
 
                pan_item_size_by_item(pi_box, pi, PAN_BOX_BORDER);
                }
 
-       if (f) *y = pi_box->y + pi_box->height;
+       if (f) y = pi_box->y + pi_box->height;
 
        g_list_free(f);
 
@@ -447,9 +448,7 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
 
                if (!pan_is_ignored(fd->path, pw->ignore_symlinks))
                        {
-                       *level = *level + 1;
-                       pan_folder_tree_path(pw, fd, x, y, level, pi_box, width, height);
-                       *level = *level - 1;
+                       pan_folder_tree_path(pw, fd, x, y, level + 1, pi_box, width, height);
                        }
                }
 
@@ -457,29 +456,21 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
 
        pan_item_size_by_item(parent, pi_box, PAN_BOX_BORDER);
 
-       if (*y < pi_box->y + pi_box->height + PAN_BOX_BORDER)
-               *y = pi_box->y + pi_box->height + PAN_BOX_BORDER;
+       y = std::max(y, pi_box->y + pi_box->height + PAN_BOX_BORDER);
 
        pan_item_size_coordinates(pi_box, PAN_BOX_BORDER, width, height);
 }
 
-void pan_folder_tree_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height)
+void pan_folder_tree_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height)
 {
        gint x;
        gint y;
-       gint level;
-       gint w;
-       gint h;
 
-       level = 0;
        x = PAN_BOX_BORDER;
        y = PAN_BOX_BORDER;
-       w = PAN_BOX_BORDER * 2;
-       h = PAN_BOX_BORDER * 2;
-
-       pan_folder_tree_path(pw, dir_fd, &x, &y, &level, nullptr, &w, &h);
+       width = PAN_BOX_BORDER * 2;
+       height = PAN_BOX_BORDER * 2;
 
-       if (width) *width = w;
-       if (height) *height = h;
+       pan_folder_tree_path(pw, dir_fd, x, y, 0, nullptr, width, height);
 }
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index 525ab66..96031b4 100644 (file)
@@ -28,8 +28,8 @@ struct FileData;
 struct PanWindow;
 
 void pan_flower_compute(PanWindow *pw, FileData *dir_fd,
-                       gint *width, gint *height,
-                       gint *scroll_x, gint *scroll_y);
-void pan_folder_tree_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height);
+                        gint &width, gint &height,
+                        gint &scroll_x, gint &scroll_y);
+void pan_folder_tree_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height);
 
 #endif
index 4d6583d..74bbd6c 100644 (file)
@@ -29,7 +29,7 @@
 #include "pan-view-filter.h"
 #include "typedefs.h"
 
-void pan_grid_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height)
+void pan_grid_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height)
 {
        GList *list;
        GList *work;
@@ -53,8 +53,8 @@ void pan_grid_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height
 
        next_y = 0;
 
-       *width = PAN_BOX_BORDER * 2;
-       *height = PAN_BOX_BORDER * 2;
+       width = PAN_BOX_BORDER * 2;
+       height = PAN_BOX_BORDER * 2;
 
        x = PAN_THUMB_GAP;
        y = PAN_THUMB_GAP;
index b3671bd..055e310 100644 (file)
@@ -27,6 +27,6 @@
 struct FileData;
 struct PanWindow;
 
-void pan_grid_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height);
+void pan_grid_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height);
 
 #endif
index bd94503..e81fad7 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "pan-item.h"
 
+#include <algorithm>
 #include <cstring>
 
 #include <glib-object.h>
@@ -108,12 +109,12 @@ void pan_item_size_by_item(PanItem *pi, PanItem *child, gint border)
                pi->height = child->y + child->height + border - pi->y;
 }
 
-void pan_item_size_coordinates(PanItem *pi, gint border, gint *w, gint *h)
+void pan_item_size_coordinates(PanItem *pi, gint border, gint &w, gint &h)
 {
        if (!pi) return;
 
-       if (*w < pi->x + pi->width + border) *w = pi->x + pi->width + border;
-       if (*h < pi->y + pi->height + border) *h = pi->y + pi->height + border;
+       w = std::max(w, pi->x + pi->width + border);
+       h = std::max(h, pi->y + pi->height + border);
 }
 
 
index 6c916ef..a992e21 100644 (file)
@@ -38,7 +38,7 @@ void pan_item_remove(PanWindow *pw, PanItem *pi);
 
 // Determine sizes
 void pan_item_size_by_item(PanItem *pi, PanItem *child, gint border);
-void pan_item_size_coordinates(PanItem *pi, gint border, gint *w, gint *h);
+void pan_item_size_coordinates(PanItem *pi, gint border, gint &w, gint &h);
 
 // Find items
 PanItem *pan_item_find_by_key(PanWindow *pw, PanItemType type, const gchar *key);
index f0a1e08..0a4e52b 100644 (file)
@@ -38,7 +38,7 @@ constexpr gint PAN_GROUP_MAX = 16;
 
 } // namespace
 
-void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height)
+void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height)
 {
        GList *list;
        GList *work;
@@ -67,8 +67,8 @@ void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
        pw->cache_list = pan_cache_sort(pw->cache_list, SORT_TIME, TRUE, TRUE);
        list = filelist_sort(list, SORT_TIME, TRUE, TRUE);
 
-       *width = PAN_BOX_BORDER * 2;
-       *height = PAN_BOX_BORDER * 2;
+       width = PAN_BOX_BORDER * 2;
+       height = PAN_BOX_BORDER * 2;
 
        x = 0;
        y = 0;
index f8afd9d..d408a29 100644 (file)
@@ -27,6 +27,6 @@
 struct FileData;
 struct PanWindow;
 
-void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *height);
+void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint &width, gint &height);
 
 #endif
index e1d6886..82118ad 100644 (file)
@@ -894,8 +894,8 @@ static void pan_window_items_free(PanWindow *pw)
  */
 
 static void pan_layout_compute(PanWindow *pw, FileData *dir_fd,
-                              gint *width, gint *height,
-                              gint *scroll_x, gint *scroll_y)
+                               gint &width, gint &height,
+                               gint &scroll_x, gint &scroll_y)
 {
        pan_window_items_free(pw);
 
@@ -944,10 +944,10 @@ static void pan_layout_compute(PanWindow *pw, FileData *dir_fd,
                        break;
                }
 
-       *width = 0;
-       *height = 0;
-       *scroll_x = 0;
-       *scroll_y = 0;
+       width = 0;
+       height = 0;
+       scroll_x = 0;
+       scroll_y = 0;
 
        switch (pw->layout)
                {
@@ -1122,7 +1122,7 @@ static gint pan_layout_update_idle_cb(gpointer data)
                        }
                }
 
-       pan_layout_compute(pw, pw->dir_fd, &width, &height, &scroll_x, &scroll_y);
+       pan_layout_compute(pw, pw->dir_fd, width, height, scroll_x, scroll_y);
 
        pan_window_zoom_limit(pw);