Skip to content

Commit 1dd3a1b

Browse files
qarkaicaclark
authored andcommitted
Add PanItemTriangleData
1 parent fe012f6 commit 1dd3a1b

4 files changed

Lines changed: 34 additions & 23 deletions

File tree

src/pan-view/pan-folder.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,9 @@ static void pan_flower_size(PanWindow *pw, gint &width, gint &height)
7676
pi->x -= x1;
7777
pi->y -= y1;
7878

79-
if (pi->is_type(PAN_ITEM_TRIANGLE) && pi->data)
79+
if (pi->is_type(PAN_ITEM_TRIANGLE))
8080
{
81-
auto *coord = static_cast<GqPoint *>(pi->data);
82-
83-
for (gint i = 0; i < 3; ++i)
84-
{
85-
coord[i].x -= x1;
86-
coord[i].y -= y1;
87-
}
81+
pan_item_tri_shift(pi, x1, y1);
8882
}
8983
}
9084

src/pan-view/pan-item.cc

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ struct PanItemBoxShadow
4545
gint fade;
4646
};
4747

48+
struct PanItemTriangleData
49+
{
50+
GqPoint coord[3];
51+
PanBorderType borders;
52+
};
53+
4854
constexpr gint PAN_OUTLINE_THICKNESS = 1;
4955
constexpr guint8 PAN_OUTLINE_ALPHA = 180;
5056
constexpr GqColor PAN_OUTLINE_COLOR_1{255, 255, 255, PAN_OUTLINE_ALPHA};
@@ -251,23 +257,34 @@ PanItem *pan_item_tri_new(PanWindow *pw,
251257
{
252258
GdkRectangle tri_rect = util_triangle_bounding_box(c1, c2, c3);
253259

260+
auto *data = g_new0(PanItemTriangleData, 1);
261+
data->coord[0] = c1;
262+
data->coord[1] = c2;
263+
data->coord[2] = c3;
264+
data->borders = borders;
265+
254266
PanItem *pi = pan_item_new(PAN_ITEM_TRIANGLE, tri_rect.x, tri_rect.y, tri_rect.width, tri_rect.height);
255267

256268
pi->color = color;
257269
pi->color2 = border_color;
258-
pi->borders = borders;
259-
260-
auto *coord = g_new0(GqPoint, 3);
261-
coord[0] = c1;
262-
coord[1] = c2;
263-
coord[2] = c3;
264-
pi->data = coord;
270+
pi->data = data;
265271

266272
pw->list = g_list_prepend(pw->list, pi);
267273

268274
return pi;
269275
}
270276

277+
void pan_item_tri_shift(PanItem *pi, gint x, gint y)
278+
{
279+
auto *data = static_cast<PanItemTriangleData *>(pi->data);
280+
281+
for (GqPoint &coord : data->coord)
282+
{
283+
coord.x -= x;
284+
coord.y -= y;
285+
}
286+
}
287+
271288
gboolean pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *,
272289
gint x, gint y, gint width, gint height)
273290
{
@@ -279,12 +296,12 @@ gboolean pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
279296
r.x -= x;
280297
r.y -= y;
281298

282-
auto *pi_coord = static_cast<GqPoint *>(pi->data);
299+
auto *data = static_cast<PanItemTriangleData *>(pi->data);
283300
GqPoint coord[3];
284301
for (gint i = 0; i < 3; ++i)
285302
{
286-
coord[i].x = pi_coord[i].x - x;
287-
coord[i].y = pi_coord[i].y - y;
303+
coord[i].x = data->coord[i].x - x;
304+
coord[i].y = data->coord[i].y - y;
288305
}
289306

290307
pixbuf_draw_triangle(pixbuf, r, coord[0], coord[1], coord[2], pi->color);
@@ -294,9 +311,9 @@ gboolean pan_item_tri_draw(PanWindow *, PanItem *pi, GdkPixbuf *pixbuf, PixbufRe
294311
pixbuf_draw_line(pixbuf, r, start.x, start.y, end.x, end.y, pi->color2);
295312
};
296313

297-
if (pi->borders & PAN_BORDER_1) draw_line(coord[0], coord[1]);
298-
if (pi->borders & PAN_BORDER_2) draw_line(coord[1], coord[2]);
299-
if (pi->borders & PAN_BORDER_3) draw_line(coord[2], coord[0]);
314+
if (data->borders & PAN_BORDER_1) draw_line(coord[0], coord[1]);
315+
if (data->borders & PAN_BORDER_2) draw_line(coord[1], coord[2]);
316+
if (data->borders & PAN_BORDER_3) draw_line(coord[2], coord[0]);
300317
}
301318

302319
return FALSE;

src/pan-view/pan-item.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ PanItem *pan_item_tri_new(PanWindow *pw,
6262
GqPoint c1, GqPoint c2, GqPoint c3,
6363
GqColor color,
6464
PanBorderType borders, GqColor border_color);
65+
void pan_item_tri_shift(PanItem *pi, gint x, gint y);
6566
gboolean pan_item_tri_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr,
6667
gint x, gint y, gint width, gint height);
6768

src/pan-view/pan-types.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ struct PanItem {
152152
GqColor color;
153153

154154
GqColor color2;
155-
gint border; /**< size */
156-
PanBorderType borders;
155+
gint border;
157156

158157
gpointer data;
159158

0 commit comments

Comments
 (0)