#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
*/
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;
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);
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],
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,
{
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,
{
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,
{
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,
{
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,
{
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;
*/
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;
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;
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)
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)
{
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)
{
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)
{
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);
}
}
}
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;
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;
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;
{
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,
{
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,
{
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,
{
pixbuf_draw_rect_fill(pixbuf,
rx - x, ry - y, rw, rh,
- PAN_OUTLINE_COLOR_2, PAN_OUTLINE_ALPHA);
+ PAN_OUTLINE_COLOR_2);
}
}
else
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);
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);
}
}
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
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