From afe2510aa4aa9b24cb12a4b0d19e01b9edad1f55 Mon Sep 17 00:00:00 2001 From: Arkadiy Illarionov Date: Sat, 9 Mar 2024 18:56:22 +0300 Subject: [PATCH] Add PanColor to simplify pan functions Move some defines to cc files. --- src/pan-view/pan-calendar.cc | 101 +++++++++++++--------------------- src/pan-view/pan-folder.cc | 17 +++--- src/pan-view/pan-item.cc | 104 ++++++++++++++++------------------- src/pan-view/pan-item.h | 14 ++--- src/pan-view/pan-timeline.cc | 12 ++-- src/pan-view/pan-types.h | 37 +++---------- src/pan-view/pan-view.cc | 40 ++++++++------ 7 files changed, 138 insertions(+), 187 deletions(-) diff --git a/src/pan-view/pan-calendar.cc b/src/pan-view/pan-calendar.cc index f348140e..c376b9c9 100644 --- a/src/pan-view/pan-calendar.cc +++ b/src/pan-view/pan-calendar.cc @@ -39,46 +39,34 @@ 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(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(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(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); diff --git a/src/pan-view/pan-folder.cc b/src/pan-view/pan-folder.cc index 31b27fdb..e9f2ba49 100644 --- a/src/pan-view/pan-folder.cc +++ b/src/pan-view/pan-folder.cc @@ -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; diff --git a/src/pan-view/pan-item.cc b/src/pan-view/pan-item.cc index eda674d6..bd945037 100644 --- a/src/pan-view/pan-item.cc +++ b/src/pan-view/pan-item.cc @@ -34,6 +34,19 @@ #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(pr)); pixbuf_draw_layout(pixbuf, layout, reinterpret_cast(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(pi->x) - x, static_cast(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 diff --git a/src/pan-view/pan-item.h b/src/pan-view/pan-item.h index 6fb5b67d..6c916efe 100644 --- a/src/pan-view/pan-item.h +++ b/src/pan-view/pan-item.h @@ -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); diff --git a/src/pan-view/pan-timeline.cc b/src/pan-view/pan-timeline.cc index ee93ae96..e41a34d7 100644 --- a/src/pan-view/pan-timeline.cc +++ b/src/pan-view/pan-timeline.cc @@ -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(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; diff --git a/src/pan-view/pan-types.h b/src/pan-view/pan-types.h index e4dc1398..e50847ad 100644 --- a/src/pan-view/pan-types.h +++ b/src/pan-view/pan-types.h @@ -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; diff --git a/src/pan-view/pan-view.cc b/src/pan-view/pan-view.cc index 26c97239..b866b13f 100644 --- a/src/pan-view/pan-view.cc +++ b/src/pan-view/pan-view.cc @@ -74,17 +74,27 @@ 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), -- 2.20.1