Add PanColor to simplify pan functions
authorArkadiy Illarionov <qarkai@gmail.com>
Sat, 9 Mar 2024 15:56:22 +0000 (18:56 +0300)
committerColin Clark <colin.clark@cclark.uk>
Sat, 9 Mar 2024 16:31:54 +0000 (16:31 +0000)
Move some defines to cc files.

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

index f348140..c376b9c 100644 (file)
 namespace
 {
 
+constexpr gint PAN_CAL_POPUP_BORDER = 1;
+constexpr guint8 PAN_CAL_POPUP_ALPHA = 255;
+constexpr PanColor PAN_CAL_POPUP_COLOR{220, 220, 220, PAN_CAL_POPUP_ALPHA};
+constexpr PanColor PAN_CAL_POPUP_BORDER_COLOR{0, 0, 0, PAN_CAL_POPUP_ALPHA};
+constexpr PanColor PAN_CAL_POPUP_TEXT_COLOR{0, 0, 0, 255};
+
+constexpr gint PAN_CAL_DAY_WIDTH = 100;
+constexpr gint PAN_CAL_DAY_HEIGHT = 80;
+constexpr gint PAN_CAL_DAY_BORDER = 2;
+constexpr guint8 PAN_CAL_DAY_ALPHA = 220;
+constexpr PanColor PAN_CAL_DAY_COLOR{255, 255, 255, PAN_CAL_DAY_ALPHA};
+constexpr PanColor PAN_CAL_DAY_BORDER_COLOR{0, 0, 0, PAN_CAL_DAY_ALPHA};
+constexpr PanColor PAN_CAL_DAY_TEXT_COLOR{0, 0, 0, 255};
+
+constexpr gint PAN_CAL_MONTH_BORDER = 4;
+constexpr guint8 PAN_CAL_MONTH_ALPHA = 200;
+constexpr PanColor PAN_CAL_MONTH_COLOR{255, 255, 255, PAN_CAL_MONTH_ALPHA};
+constexpr PanColor PAN_CAL_MONTH_BORDER_COLOR{0, 0, 0, PAN_CAL_MONTH_ALPHA};
+constexpr PanColor PAN_CAL_MONTH_TEXT_COLOR{0, 0, 0, 255};
+
+constexpr gint PAN_CAL_DOT_SIZE = 3;
+constexpr gint PAN_CAL_DOT_GAP = 2;
 constexpr guint8 PAN_CAL_DOT_ALPHA = 128;
+constexpr PanColor PAN_CAL_DOT_COLOR{128, 128, 128, PAN_CAL_DOT_ALPHA};
 
-} // namespace
+constexpr PanColor PAN_CAL_DAY_OF_WEEK_COLOR{128, 128, 128, 255};
 
-#define PAN_CAL_POPUP_COLOR 220, 220, 220
-enum {
-       PAN_CAL_POPUP_ALPHA = 255,
-       PAN_CAL_POPUP_BORDER = 1
-};
-#define PAN_CAL_POPUP_BORDER_COLOR 0, 0, 0
-#define PAN_CAL_POPUP_TEXT_COLOR 0, 0, 0
-
-enum {
-       PAN_CAL_DAY_WIDTH = 100,
-       PAN_CAL_DAY_HEIGHT = 80
-};
-
-#define PAN_CAL_DAY_COLOR 255, 255, 255
-enum {
-       PAN_CAL_DAY_ALPHA = 220,
-       PAN_CAL_DAY_BORDER = 2
-};
-#define PAN_CAL_DAY_BORDER_COLOR 0, 0, 0
-#define PAN_CAL_DAY_TEXT_COLOR 0, 0, 0
-
-#define PAN_CAL_MONTH_COLOR 255, 255, 255
-enum {
-       PAN_CAL_MONTH_ALPHA = 200,
-       PAN_CAL_MONTH_BORDER = 4
-};
-#define PAN_CAL_MONTH_BORDER_COLOR 0, 0, 0
-#define PAN_CAL_MONTH_TEXT_COLOR 0, 0, 0
-
-enum {
-       PAN_CAL_DOT_SIZE = 3,
-       PAN_CAL_DOT_GAP = 2
-};
-#define PAN_CAL_DOT_COLOR 128, 128, 128
-
-#define PAN_CAL_DAY_OF_WEEK_COLOR 128, 128, 128
+} // namespace
 
 /*
  *-----------------------------------------------------------------------------
@@ -135,9 +123,7 @@ void pan_calendar_update(PanWindow *pw, PanItem *pi_day)
        y = pi_day->y;
 
        pbox = pan_item_box_new(pw, nullptr, x, y, PAN_BOX_BORDER, PAN_BOX_BORDER,
-                               PAN_CAL_POPUP_BORDER,
-                               PAN_CAL_POPUP_COLOR, PAN_CAL_POPUP_ALPHA,
-                               PAN_CAL_POPUP_BORDER_COLOR, PAN_CAL_POPUP_ALPHA);
+                               PAN_CAL_POPUP_BORDER, PAN_CAL_POPUP_COLOR, PAN_CAL_POPUP_BORDER_COLOR);
        pan_item_set_key(pbox, "day_bubble");
 
        if (pi_day->fd)
@@ -147,8 +133,7 @@ void pan_calendar_update(PanWindow *pw, PanItem *pi_day)
 
                buf = pan_date_value_string(pi_day->fd->date, PAN_DATE_LENGTH_WEEK);
                plabel = pan_item_text_new(pw, x, y, buf, static_cast<PanTextAttrType>(PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING),
-                                          PAN_BORDER_3,
-                                          PAN_CAL_POPUP_TEXT_COLOR, 255);
+                                          PAN_BORDER_3, PAN_CAL_POPUP_TEXT_COLOR);
                pan_item_set_key(plabel, "day_bubble");
                g_free(buf);
 
@@ -207,8 +192,8 @@ void pan_calendar_update(PanWindow *pw, PanItem *pi_day)
 
        pi = pan_item_tri_new(pw, nullptr, x, y, w, h,
                              x1, y1, x2, y2, x3, y3,
-                             PAN_CAL_POPUP_COLOR, PAN_CAL_POPUP_ALPHA);
-       pan_item_tri_border(pi, PAN_BORDER_1 | PAN_BORDER_3, PAN_CAL_POPUP_BORDER_COLOR, PAN_CAL_POPUP_ALPHA);
+                             PAN_CAL_POPUP_COLOR);
+       pan_item_tri_border(pi, PAN_BORDER_1 | PAN_BORDER_3, PAN_CAL_POPUP_BORDER_COLOR);
        pan_item_set_key(pi, "day_bubble");
        pan_item_added(pw, pi);
 
@@ -333,14 +318,11 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                x = PAN_BOX_BORDER;
 
                pi_month = pan_item_box_new(pw, nullptr, x, y, PAN_CAL_DAY_WIDTH * 7, PAN_CAL_DAY_HEIGHT / 4,
-                                           PAN_CAL_MONTH_BORDER,
-                                           PAN_CAL_MONTH_COLOR, PAN_CAL_MONTH_ALPHA,
-                                           PAN_CAL_MONTH_BORDER_COLOR, PAN_CAL_MONTH_ALPHA);
+                                           PAN_CAL_MONTH_BORDER, PAN_CAL_MONTH_COLOR, PAN_CAL_MONTH_BORDER_COLOR);
                buf = pan_date_value_string(dt, PAN_DATE_LENGTH_MONTH);
                pi_text = pan_item_text_new(pw, x, y, buf,
                                            static_cast<PanTextAttrType>(PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING),
-                                           PAN_BORDER_3,
-                                           PAN_CAL_MONTH_TEXT_COLOR, 255);
+                                           PAN_BORDER_3, PAN_CAL_MONTH_TEXT_COLOR);
                g_free(buf);
                pi_text->x = pi_month->x + (pi_month->width - pi_text->width) / 2;
 
@@ -369,9 +351,7 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                        fd = file_data_new_no_grouping(fake_path);
                        fd->date = dt;
                        pi_day = pan_item_box_new(pw, fd, x, y, PAN_CAL_DAY_WIDTH, PAN_CAL_DAY_HEIGHT,
-                                                 PAN_CAL_DAY_BORDER,
-                                                 PAN_CAL_DAY_COLOR, PAN_CAL_DAY_ALPHA,
-                                                 PAN_CAL_DAY_BORDER_COLOR, PAN_CAL_DAY_ALPHA);
+                                                 PAN_CAL_DAY_BORDER, PAN_CAL_DAY_COLOR, PAN_CAL_DAY_BORDER_COLOR);
                        pan_item_set_key(pi_day, "day");
 
                        dx = x + PAN_CAL_DOT_GAP * 2;
@@ -384,8 +364,8 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
 
                                pi = pan_item_box_new(pw, fd, dx, dy, PAN_CAL_DOT_SIZE, PAN_CAL_DOT_SIZE,
                                                      0,
-                                                     PAN_CAL_DOT_COLOR, PAN_CAL_DOT_ALPHA,
-                                                     0, 0, 0, 0);
+                                                     PAN_CAL_DOT_COLOR,
+                                                     {0, 0, 0, 0});
                                pan_item_set_key(pi, "dot");
 
                                dx += PAN_CAL_DOT_SIZE + PAN_CAL_DOT_GAP;
@@ -410,13 +390,12 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                                {
                                PanItem *pi;
 
-                               pi_day->color_r = MAX(pi_day->color_r - 61 - n * 3, 80);
-                               pi_day->color_g = pi_day->color_r;
+                               pi_day->color.r = MAX(pi_day->color.r - 61 - n * 3, 80);
+                               pi_day->color.g = pi_day->color.r;
 
                                buf = g_strdup_printf("( %d )", n);
                                pi = pan_item_text_new(pw, x, y, buf, PAN_TEXT_ATTR_NONE,
-                                                      PAN_BORDER_3,
-                                                      PAN_CAL_DAY_TEXT_COLOR, 255);
+                                                      PAN_BORDER_3, PAN_CAL_DAY_TEXT_COLOR);
                                g_free(buf);
 
                                pi->x = pi_day->x + (pi_day->width - pi->width) / 2;
@@ -425,8 +404,7 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
 
                        buf = g_strdup_printf("%d", day);
                        pi_day_number = pan_item_text_new(pw, x + 4, y + 4, buf, static_cast<PanTextAttrType>(PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING),
-                                         PAN_BORDER_3,
-                                         PAN_CAL_DAY_TEXT_COLOR, 255);
+                                         PAN_BORDER_3, PAN_CAL_DAY_TEXT_COLOR);
                        g_free(buf);
 
                        day_of_week = date_get_first_day_of_week() + col;
@@ -434,8 +412,7 @@ void pan_calendar_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
 
                        buf = date_get_abbreviated_day_name(day_of_week);
                        pan_item_text_new(pw, x + 4 + pi_day_number->width + 4, y + 4, buf, PAN_TEXT_ATTR_NONE,
-                                         PAN_BORDER_3,
-                                         PAN_CAL_DAY_OF_WEEK_COLOR, 255);
+                                         PAN_BORDER_3, PAN_CAL_DAY_OF_WEEK_COLOR);
                        g_free(buf);
 
                        pan_item_size_coordinates(pi_day, PAN_BOX_BORDER, width, height);
index 31b27fd..e9f2ba4 100644 (file)
@@ -203,9 +203,8 @@ static void pan_flower_build(PanWindow *pw, FlowerGroup *group, FlowerGroup *par
 
                pi = pan_item_tri_new(pw, nullptr, x1, y1, x2 - x1, y2 - y1,
                                      px, py, gx, gy, gx + 5, gy + 5,
-                                     255, 40, 40, 128);
-               pan_item_tri_border(pi, PAN_BORDER_1 | PAN_BORDER_3,
-                                   255, 0, 0, 128);
+                                     {255, 40, 40, 128});
+               pan_item_tri_border(pi, PAN_BORDER_1 | PAN_BORDER_3, {255, 0, 0, 128});
                }
 
        pw->list = g_list_concat(group->items, pw->list);
@@ -260,7 +259,7 @@ static FlowerGroup *pan_flower_group(PanWindow *pw, FileData *dir_fd, gint x, gi
 
        pi_box = pan_item_text_new(pw, x, y, dir_fd->path, PAN_TEXT_ATTR_NONE,
                                   PAN_BORDER_3,
-                                  PAN_TEXT_COLOR, 255);
+                                  {PAN_TEXT_COLOR, 255});
 
        y += pi_box->height;
 
@@ -268,8 +267,8 @@ static FlowerGroup *pan_flower_group(PanWindow *pw, FileData *dir_fd, gint x, gi
                                  x, y,
                                  PAN_BOX_BORDER * 2, PAN_BOX_BORDER * 2,
                                  PAN_BOX_OUTLINE_THICKNESS,
-                                 PAN_BOX_COLOR, PAN_BOX_ALPHA,
-                                 PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA);
+                                 {PAN_BOX_COLOR, PAN_BOX_ALPHA},
+                                 {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
 
        x += PAN_BOX_BORDER;
        y += PAN_BOX_BORDER;
@@ -397,7 +396,7 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *dir_fd,
 
        pi_box = pan_item_text_new(pw, *x, *y, dir_fd->path, PAN_TEXT_ATTR_NONE,
                                   PAN_BORDER_3,
-                                  PAN_TEXT_COLOR, 255);
+                                  {PAN_TEXT_COLOR, 255});
 
        *y += pi_box->height;
 
@@ -405,8 +404,8 @@ static void pan_folder_tree_path(PanWindow *pw, FileData *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);
+                                 {PAN_BOX_COLOR, PAN_BOX_ALPHA},
+                                 {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
 
        *x += PAN_BOX_BORDER;
        *y += PAN_BOX_BORDER;
index eda674d..bd94503 100644 (file)
 #include "pixbuf-util.h"
 #include "ui-misc.h"
 
+namespace
+{
+
+constexpr gint PAN_OUTLINE_THICKNESS = 1;
+#define PAN_OUTLINE_ALPHA 180
+#define PAN_OUTLINE_COLOR_1 255, 255, 255, PAN_OUTLINE_ALPHA
+#define PAN_OUTLINE_COLOR_2 64, 64, 64, PAN_OUTLINE_ALPHA
+
+/* popup info box */
+constexpr PanColor PAN_POPUP_TEXT_COLOR{0, 0, 0, 225};
+
+} // namespace
+
 /*
  *-----------------------------------------------------------------------------
  * item base functions
@@ -111,9 +124,7 @@ void pan_item_size_coordinates(PanItem *pi, gint border, gint *w, gint *h)
  */
 
 PanItem *pan_item_box_new(PanWindow *pw, FileData *fd, gint x, gint y, gint width, gint height,
-                         gint border_size,
-                         guint8 base_r, guint8 base_g, guint8 base_b, guint8 base_a,
-                         guint8 bord_r, guint8 bord_g, guint8 bord_b, guint8 bord_a)
+                          gint border_size, const PanColor &base, const PanColor &bord)
 {
        PanItem *pi;
 
@@ -125,15 +136,9 @@ PanItem *pan_item_box_new(PanWindow *pw, FileData *fd, gint x, gint y, gint widt
        pi->width = width;
        pi->height = height;
 
-       pi->color_r = base_r;
-       pi->color_g = base_g;
-       pi->color_b = base_b;
-       pi->color_a = base_a;
+       pi->color = base;
 
-       pi->color2_r = bord_r;
-       pi->color2_g = bord_g;
-       pi->color2_b = bord_b;
-       pi->color2_a = bord_a;
+       pi->color2 = bord;
        pi->border = border_size;
 
        pw->list = g_list_prepend(pw->list, pi);
@@ -185,7 +190,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                bw -= shadow[0];
                bh -= shadow[0];
 
-               if (pi->color_a > 254)
+               if (pi->color.a > 254)
                        {
                        pixbuf_draw_shadow(pixbuf, pi->x - x + bw, pi->y - y + shadow[0],
                                           shadow[0], bh - shadow[0],
@@ -201,7 +206,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                else
                        {
                        gint a;
-                       a = pi->color_a * PAN_SHADOW_ALPHA >> 8;
+                       a = pi->color.a * PAN_SHADOW_ALPHA >> 8;
                        pixbuf_draw_shadow(pixbuf, pi->x - x + shadow[0], pi->y - y + shadow[0],
                                           bw, bh,
                                           pi->x - x + shadow[0], pi->y - y + shadow[0], bw, bh,
@@ -216,7 +221,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                {
                pixbuf_draw_rect_fill(pixbuf,
                                      rx - x, ry - y, rw, rh,
-                                     pi->color_r, pi->color_g, pi->color_b, pi->color_a);
+                                     pi->color.r, pi->color.g, pi->color.b, pi->color.a);
                }
        if (util_clip_region(x, y, width, height,
                             pi->x, pi->y, bw, pi->border,
@@ -224,7 +229,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                {
                pixbuf_draw_rect_fill(pixbuf,
                                      rx - x, ry - y, rw, rh,
-                                     pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                     pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                }
        if (util_clip_region(x, y, width, height,
                             pi->x, pi->y + pi->border, pi->border, bh - pi->border * 2,
@@ -232,7 +237,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                {
                pixbuf_draw_rect_fill(pixbuf,
                                      rx - x, ry - y, rw, rh,
-                                     pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                     pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                }
        if (util_clip_region(x, y, width, height,
                             pi->x + bw - pi->border, pi->y + pi->border,
@@ -241,7 +246,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                {
                pixbuf_draw_rect_fill(pixbuf,
                                      rx - x, ry - y, rw, rh,
-                                     pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                     pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                }
        if (util_clip_region(x, y, width, height,
                             pi->x, pi->y + bh - pi->border,
@@ -250,7 +255,7 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                {
                pixbuf_draw_rect_fill(pixbuf,
                                      rx - x, ry - y, rw, rh,
-                                     pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                     pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                }
 
        return FALSE;
@@ -264,8 +269,8 @@ gint pan_item_box_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
  */
 
 PanItem *pan_item_tri_new(PanWindow *pw, FileData *, gint x, gint y, gint width, gint height,
-                         gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
-                         guint8 r, guint8 g, guint8 b, guint8 a)
+                          gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
+                          const PanColor &color)
 {
        PanItem *pi;
        gint *coord;
@@ -277,10 +282,7 @@ PanItem *pan_item_tri_new(PanWindow *pw, FileData *, gint x, gint y, gint width,
        pi->width = width;
        pi->height = height;
 
-       pi->color_r = r;
-       pi->color_g = g;
-       pi->color_b = b;
-       pi->color_a = a;
+       pi->color = color;
 
        coord = g_new0(gint, 6);
        coord[0] = x1;
@@ -299,17 +301,13 @@ PanItem *pan_item_tri_new(PanWindow *pw, FileData *, gint x, gint y, gint width,
        return pi;
 }
 
-void pan_item_tri_border(PanItem *pi, gint borders,
-                        guint8 r, guint8 g, guint8 b, guint8 a)
+void pan_item_tri_border(PanItem *pi, gint borders, const PanColor &color)
 {
        if (!pi || pi->type != PAN_ITEM_TRIANGLE) return;
 
        pi->border = borders;
 
-       pi->color2_r = r;
-       pi->color2_g = g;
-       pi->color2_b = b;
-       pi->color2_a = a;
+       pi->color2 = color;
 }
 
 gint pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *, gint x, gint y, gint width, gint height)
@@ -329,7 +327,7 @@ gint pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                                     coord[0] - x, coord[1] - y,
                                     coord[2] - x, coord[3] - y,
                                     coord[4] - x, coord[5] - y,
-                                    pi->color_r, pi->color_g, pi->color_b, pi->color_a);
+                                    pi->color.r, pi->color.g, pi->color.b, pi->color.a);
 
                if (pi->border & PAN_BORDER_1)
                        {
@@ -337,7 +335,7 @@ gint pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                                         rx - x, ry - y, rw, rh,
                                         coord[0] - x, coord[1] - y,
                                         coord[2] - x, coord[3] - y,
-                                        pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                        pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                        }
                if (pi->border & PAN_BORDER_2)
                        {
@@ -345,7 +343,7 @@ gint pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                                         rx - x, ry - y, rw, rh,
                                         coord[2] - x, coord[3] - y,
                                         coord[4] - x, coord[5] - y,
-                                        pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                        pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                        }
                if (pi->border & PAN_BORDER_3)
                        {
@@ -353,7 +351,7 @@ gint pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRender
                                         rx - x, ry - y, rw, rh,
                                         coord[4] - x, coord[5] - y,
                                         coord[0] - x, coord[1] - y,
-                                        pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                        pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                        }
                }
 
@@ -423,8 +421,7 @@ static void pan_item_text_compute_size(PanItem *pi, GtkWidget *widget)
 }
 
 PanItem *pan_item_text_new(PanWindow *pw, gint x, gint y, const gchar *text,
-                          PanTextAttrType attr, PanBorderType border,
-                          guint8 r, guint8 g, guint8 b, guint8 a)
+                           PanTextAttrType attr, PanBorderType border, const PanColor &color)
 {
        PanItem *pi;
 
@@ -435,10 +432,7 @@ PanItem *pan_item_text_new(PanWindow *pw, gint x, gint y, const gchar *text,
        pi->text = g_strdup(text);
        pi->text_attr = attr;
 
-       pi->color_r = r;
-       pi->color_g = g;
-       pi->color_b = b;
-       pi->color_a = a;
+       pi->color = color;
 
        pi->border = border;
 
@@ -456,7 +450,7 @@ gint pan_item_text_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRende
        layout = pan_item_text_layout(pi, reinterpret_cast<GtkWidget *>(pr));
        pixbuf_draw_layout(pixbuf, layout, reinterpret_cast<GtkWidget *>(pr),
                           pi->x - x + pi->border, pi->y - y + pi->border,
-                          pi->color_r, pi->color_g, pi->color_b, pi->color_a);
+                          pi->color.r, pi->color.g, pi->color.b, pi->color.a);
        g_object_unref(G_OBJECT(layout));
 
        return FALSE;
@@ -561,7 +555,7 @@ gint pan_item_thumb_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_OUTLINE_COLOR_1, PAN_OUTLINE_ALPHA);
+                                             PAN_OUTLINE_COLOR_1);
                        }
                if (util_clip_region(x, y, width, height,
                                     tx, ty, PAN_OUTLINE_THICKNESS, th,
@@ -569,7 +563,7 @@ gint pan_item_thumb_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_OUTLINE_COLOR_1, PAN_OUTLINE_ALPHA);
+                                             PAN_OUTLINE_COLOR_1);
                        }
                if (util_clip_region(x, y, width, height,
                                     tx + tw - PAN_OUTLINE_THICKNESS, ty +  PAN_OUTLINE_THICKNESS,
@@ -578,7 +572,7 @@ gint pan_item_thumb_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_OUTLINE_COLOR_2, PAN_OUTLINE_ALPHA);
+                                             PAN_OUTLINE_COLOR_2);
                        }
                if (util_clip_region(x, y, width, height,
                                     tx +  PAN_OUTLINE_THICKNESS, ty + th - PAN_OUTLINE_THICKNESS,
@@ -587,7 +581,7 @@ gint pan_item_thumb_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_OUTLINE_COLOR_2, PAN_OUTLINE_ALPHA);
+                                             PAN_OUTLINE_COLOR_2);
                        }
                }
        else
@@ -663,12 +657,12 @@ PanItem *pan_item_image_new(PanWindow *pw, FileData *fd, gint x, gint y, gint w,
        pi->x = x;
        pi->y = y;
 
-       pi->color_a = 255;
+       pi->color.a = 255;
 
-       pi->color2_r = 0;
-       pi->color2_g = 0;
-       pi->color2_b = 0;
-       pi->color2_a = PAN_SHADOW_ALPHA / 2;
+       pi->color2.r = 0;
+       pi->color2.g = 0;
+       pi->color2.b = 0;
+       pi->color2.a = PAN_SHADOW_ALPHA / 2;
 
        pan_item_image_find_size(pw, pi, w, h);
 
@@ -694,13 +688,13 @@ gint pan_item_image_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRend
                                             static_cast<gdouble>(pi->x) - x,
                                             static_cast<gdouble>(pi->y) - y,
                                             1.0, 1.0, GDK_INTERP_NEAREST,
-                                            pi->color_a);
+                                            pi->color.a);
                        }
                else
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             pi->color2_r, pi->color2_g, pi->color2_b, pi->color2_a);
+                                             pi->color2.r, pi->color2.g, pi->color2.b, pi->color2.a);
                        }
                }
 
@@ -901,8 +895,7 @@ PanItem *pan_text_alignment_add(PanTextAlignment *ta, const gchar *label, const
        if (label)
                {
                item = pan_item_text_new(ta->pw, ta->x, ta->y, label,
-                                        PAN_TEXT_ATTR_BOLD, PAN_BORDER_NONE,
-                                        PAN_POPUP_TEXT_COLOR, 255);
+                                        PAN_TEXT_ATTR_BOLD, PAN_BORDER_NONE, PAN_POPUP_TEXT_COLOR);
                pan_item_set_key(item, ta->key);
                }
        else
@@ -914,8 +907,7 @@ PanItem *pan_text_alignment_add(PanTextAlignment *ta, const gchar *label, const
        if (text)
                {
                item = pan_item_text_new(ta->pw, ta->x, ta->y, text,
-                                        PAN_TEXT_ATTR_NONE, PAN_BORDER_NONE,
-                                        PAN_POPUP_TEXT_COLOR, 255);
+                                        PAN_TEXT_ATTR_NONE, PAN_BORDER_NONE, PAN_POPUP_TEXT_COLOR);
                pan_item_set_key(item, ta->key);
                }
        else
index 6fb5b67..6c916ef 100644 (file)
@@ -51,26 +51,22 @@ PanItem *pan_item_find_by_coord(PanWindow *pw, PanItemType type,
 
 // Item box type
 PanItem *pan_item_box_new(PanWindow *pw, FileData *fd, gint x, gint y, gint width, gint height,
-                         gint border_size,
-                         guint8 base_r, guint8 base_g, guint8 base_b, guint8 base_a,
-                         guint8 bord_r, guint8 bord_g, guint8 bord_b, guint8 bord_a);
+                          gint border_size, const PanColor &base, const PanColor &bord);
 void pan_item_box_shadow(PanItem *pi, gint offset, gint fade);
 gint pan_item_box_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr,
                       gint x, gint y, gint width, gint height);
 
 // Item triangle type
 PanItem *pan_item_tri_new(PanWindow *pw, FileData *fd, gint x, gint y, gint width, gint height,
-                         gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
-                         guint8 r, guint8 g, guint8 b, guint8 a);
-void pan_item_tri_border(PanItem *pi, gint borders,
-                        guint8 r, guint8 g, guint8 b, guint8 a);
+                          gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
+                          const PanColor &color);
+void pan_item_tri_border(PanItem *pi, gint borders, const PanColor &color);
 gint pan_item_tri_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr,
                       gint x, gint y, gint width, gint height);
 
 // Item text type
 PanItem *pan_item_text_new(PanWindow *pw, gint x, gint y, const gchar *text,
-                          PanTextAttrType attr, PanBorderType border,
-                          guint8 r, guint8 g, guint8 b, guint8 a);
+                           PanTextAttrType attr, PanBorderType border, const PanColor &color);
 gint pan_item_text_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr,
                        gint x, gint y, gint width, gint height);
 
index ee93ae9..e41a34d 100644 (file)
@@ -108,15 +108,15 @@ void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                                pi = pan_item_text_new(pw, x, y, buf,
                                                       static_cast<PanTextAttrType>(PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING),
                                                       PAN_BORDER_3,
-                                                      PAN_TEXT_COLOR, 255);
+                                                      {PAN_TEXT_COLOR, 255});
                                g_free(buf);
                                y += pi->height;
 
                                pi_month = pan_item_box_new(pw, file_data_ref(fd),
                                                            x, y, 0, 0,
                                                            PAN_BOX_OUTLINE_THICKNESS,
-                                                           PAN_BOX_COLOR, PAN_BOX_ALPHA,
-                                                           PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA);
+                                                           {PAN_BOX_COLOR, PAN_BOX_ALPHA},
+                                                           {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
 
                                x += PAN_BOX_BORDER;
                                y += PAN_BOX_BORDER;
@@ -149,15 +149,15 @@ void pan_timeline_compute(PanWindow *pw, FileData *dir_fd, gint *width, gint *he
                        buf = pan_date_value_string(fd->date, PAN_DATE_LENGTH_WEEK);
                        pi = pan_item_text_new(pw, x, y, buf, PAN_TEXT_ATTR_NONE,
                                               PAN_BORDER_3,
-                                              PAN_TEXT_COLOR, 255);
+                                              {PAN_TEXT_COLOR, 255});
                        g_free(buf);
 
                        y += pi->height;
 
                        pi_day = pan_item_box_new(pw, file_data_ref(fd), x, y, 0, 0,
                                                  PAN_BOX_OUTLINE_THICKNESS,
-                                                 PAN_BOX_COLOR, PAN_BOX_ALPHA,
-                                                 PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA);
+                                                 {PAN_BOX_COLOR, PAN_BOX_ALPHA},
+                                                 {PAN_BOX_OUTLINE_COLOR, PAN_BOX_OUTLINE_ALPHA});
 
                        x += PAN_BOX_BORDER;
                        y += PAN_BOX_BORDER;
index e4dc139..e50847a 100644 (file)
@@ -54,17 +54,6 @@ struct ThumbLoader;
 #define PAN_SHADOW_COLOR 0, 0, 0
 #define PAN_SHADOW_ALPHA 64
 
-#define PAN_OUTLINE_THICKNESS 1
-#define PAN_OUTLINE_COLOR_1 255, 255, 255
-#define PAN_OUTLINE_COLOR_2 64, 64, 64
-#define PAN_OUTLINE_ALPHA 180
-
-#define PAN_BACKGROUND_COLOR 150, 150, 150
-
-#define PAN_GRID_SIZE 60
-#define PAN_GRID_COLOR 0, 0, 0
-#define PAN_GRID_ALPHA 20
-
 #define PAN_BOX_COLOR 255, 255, 255
 #define PAN_BOX_ALPHA 100
 #define PAN_BOX_BORDER 20
@@ -73,17 +62,8 @@ struct ThumbLoader;
 #define PAN_BOX_OUTLINE_COLOR 0, 0, 0
 #define PAN_BOX_OUTLINE_ALPHA 128
 
-#define PAN_TEXT_BORDER_SIZE 4
 #define PAN_TEXT_COLOR 0, 0, 0
 
-/* popup info box */
-
-#define PAN_POPUP_COLOR 255, 255, 225
-#define PAN_POPUP_ALPHA 255
-#define PAN_POPUP_BORDER 1
-#define PAN_POPUP_BORDER_COLOR 0, 0, 0
-#define PAN_POPUP_TEXT_COLOR 0, 0, 0
-
 
 #define PAN_GROUP_MAX 16
 
@@ -142,6 +122,13 @@ enum PanBorderType {
 #define PAN_BORDER_LEFT                PAN_BORDER_4
 
 
+struct PanColor {
+       guint8 r;
+       guint8 g;
+       guint8 b;
+       guint8 a;
+};
+
 struct PanItem {
        PanItemType type;
        gint x;
@@ -158,15 +145,9 @@ struct PanItem {
        gchar *text;
        PanTextAttrType text_attr;
 
-       guint8 color_r;
-       guint8 color_g;
-       guint8 color_b;
-       guint8 color_a;
+       PanColor color;
 
-       guint8 color2_r;
-       guint8 color2_g;
-       guint8 color2_b;
-       guint8 color2_a;
+       PanColor color2;
        gint border;
 
        gpointer data;
index 26c9723..b866b13 100644 (file)
 namespace
 {
 
+constexpr gint PAN_WINDOW_DEFAULT_WIDTH = 720;
+constexpr gint PAN_WINDOW_DEFAULT_HEIGHT = 500;
+
 constexpr gint PAN_TILE_SIZE = 512;
+
+constexpr gdouble ZOOM_INCREMENT = 1.0;
 constexpr gint ZOOM_LABEL_WIDTH = 64;
 
-} // namespace
+constexpr gint PAN_GRID_SIZE = 60;
+constexpr gint PAN_GRID_ALPHA = 20;
+#define PAN_GRID_COLOR 0, 0, 0, PAN_GRID_ALPHA
 
-enum {
-       PAN_WINDOW_DEFAULT_WIDTH = 720,
-       PAN_WINDOW_DEFAULT_HEIGHT = 500
-};
+#define PAN_BACKGROUND_COLOR 150, 150, 150, 255
+
+/* popup info box */
+constexpr gint PAN_POPUP_BORDER = 1;
+constexpr guint8 PAN_POPUP_ALPHA = 255;
+constexpr PanColor PAN_POPUP_COLOR{255, 255, 225, PAN_POPUP_ALPHA};
+constexpr PanColor PAN_POPUP_BORDER_COLOR{0, 0, 0, PAN_POPUP_ALPHA};
 
-#define ZOOM_INCREMENT 1.0
+} // namespace
 
 #define PAN_PREF_GROUP         "pan_view_options"
 #define PAN_PREF_HIDE_WARNING  "hide_performance_warning"
@@ -355,7 +365,7 @@ static gboolean pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
 
        pixbuf_set_rect_fill(pixbuf,
                             0, 0, width, height,
-                            PAN_BACKGROUND_COLOR, 255);
+                            PAN_BACKGROUND_COLOR);
 
        for (i = (x / PAN_GRID_SIZE) * PAN_GRID_SIZE; i < x + width; i += PAN_GRID_SIZE)
                {
@@ -370,7 +380,7 @@ static gboolean pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_GRID_COLOR, PAN_GRID_ALPHA);
+                                             PAN_GRID_COLOR);
                        }
                }
        for (i = (y / PAN_GRID_SIZE) * PAN_GRID_SIZE; i < y + height; i += PAN_GRID_SIZE)
@@ -386,7 +396,7 @@ static gboolean pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
                        {
                        pixbuf_draw_rect_fill(pixbuf,
                                              rx - x, ry - y, rw, rh,
-                                             PAN_GRID_COLOR, PAN_GRID_ALPHA);
+                                             PAN_GRID_COLOR);
                        }
                }
 
@@ -1449,9 +1459,7 @@ void pan_info_update(PanWindow *pw, PanItem *pi)
        DEBUG_1("info set to %s", pi->fd->path);
 
        pbox = pan_item_box_new(pw, nullptr, pi->x + pi->width + 4, pi->y, 10, 10,
-                               PAN_POPUP_BORDER,
-                               PAN_POPUP_COLOR, PAN_POPUP_ALPHA,
-                               PAN_POPUP_BORDER_COLOR, PAN_POPUP_ALPHA);
+                               PAN_POPUP_BORDER, PAN_POPUP_COLOR, PAN_POPUP_BORDER_COLOR);
        pan_item_set_key(pbox, "info");
 
        if (pi->type == PAN_ITEM_THUMB && pi->pixbuf)
@@ -1477,8 +1485,8 @@ void pan_info_update(PanWindow *pw, PanItem *pi)
 
        p = pan_item_tri_new(pw, nullptr, x, y, w, h,
                             x1, y1, x2, y2, x3, y3,
-                            PAN_POPUP_COLOR, PAN_POPUP_ALPHA);
-       pan_item_tri_border(p, PAN_BORDER_1 | PAN_BORDER_3, PAN_POPUP_BORDER_COLOR, PAN_POPUP_ALPHA);
+                            PAN_POPUP_COLOR);
+       pan_item_tri_border(p, PAN_BORDER_1 | PAN_BORDER_3, PAN_POPUP_BORDER_COLOR);
        pan_item_set_key(p, "info");
        pan_item_added(pw, p);
 
@@ -1535,9 +1543,7 @@ void pan_info_update(PanWindow *pw, PanItem *pi)
                        ih = MAX(1, ih * scale / 100);
 
                        pbox = pan_item_box_new(pw, nullptr, pbox->x, pbox->y + pbox->height + 8, 10, 10,
-                                               PAN_POPUP_BORDER,
-                                               PAN_POPUP_COLOR, PAN_POPUP_ALPHA,
-                                               PAN_POPUP_BORDER_COLOR, PAN_POPUP_ALPHA);
+                                               PAN_POPUP_BORDER, PAN_POPUP_COLOR, PAN_POPUP_BORDER_COLOR);
                        pan_item_set_key(pbox, "info");
 
                        p = pan_item_image_new(pw, file_data_new_group(pi->fd->path),