summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-12-15 19:06:20 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-12-22 23:51:11 -0500
commitd1bcd3cecb09a211ca35fd9a7f68ca1a41f2e3a8 (patch)
tree224387f734645a8ea174cd2f8ba5f404814a476c
parentd980c8808d89f043202ba29b5e13d096e5ef949d (diff)
downloadgtk+-d1bcd3cecb09a211ca35fd9a7f68ca1a41f2e3a8.tar.gz
gsk: Add gsk_stroke_hash
Not currently used, just leaving this here for later use.
-rw-r--r--gsk/gskstroke.c17
-rw-r--r--gsk/gskstrokeprivate.h2
2 files changed, 19 insertions, 0 deletions
diff --git a/gsk/gskstroke.c b/gsk/gskstroke.c
index 514d58c279..ea9f228cf5 100644
--- a/gsk/gskstroke.c
+++ b/gsk/gskstroke.c
@@ -465,3 +465,20 @@ gsk_stroke_get_dash_offset (const GskStroke *self)
return self->dash_offset;
}
+
+guint
+gsk_stroke_hash (const GskStroke *stroke)
+{
+ guint32 h = 5381;
+
+ h = (h << 5) + h + (guint) (stroke->line_width * 100);
+ h = (h << 5) + h + stroke->line_cap;
+ h = (h << 5) + h + stroke->line_join;
+ h = (h << 5) + h + (guint) (stroke->miter_limit * 100);
+ h = (h << 5) + h + stroke->n_dash;
+ for (int i = 0; i < stroke->n_dash; i++)
+ h = (h << 5) + h + (guint) (stroke->dash[i] * 100);
+ h = (h << 5) + h + (guint) (stroke->dash_offset * 100);
+
+ return h;
+}
diff --git a/gsk/gskstrokeprivate.h b/gsk/gskstrokeprivate.h
index 9b5445094b..91694fee95 100644
--- a/gsk/gskstrokeprivate.h
+++ b/gsk/gskstrokeprivate.h
@@ -54,6 +54,8 @@ gsk_stroke_clear (GskStroke *stroke)
stroke->n_dash = 0; /* better safe than sorry */
}
+guint gsk_stroke_hash (const GskStroke *stroke);
+
G_END_DECLS
#endif /* __GSK_STROKE_PRIVATE_H__ */