[gtk+] css: Handle repeating gradients with only one offset
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] css: Handle repeating gradients with only one offset
- Date: Mon, 26 Dec 2016 16:22:52 +0000 (UTC)
commit 599cc995f3532ba85a96d2409ef5589508785faf
Author: Benjamin Otte <otte redhat com>
Date: Mon Dec 26 17:04:56 2016 +0100
css: Handle repeating gradients with only one offset
Example:
repeating-linear-gradient(red 50%, blue 50%)
Those gradients in Firefox draw a solid image of the last color, so do
the same here.
gtk/gtkcssimagelinear.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c
index 17318ca..5841e15 100644
--- a/gtk/gtkcssimagelinear.c
+++ b/gtk/gtkcssimagelinear.c
@@ -181,6 +181,19 @@ gtk_css_image_linear_snapshot (GtkCssImage *image,
length = sqrt (x * x + y * y);
gtk_css_image_linear_get_start_end (linear, length, &start, &end);
+ if (start == end)
+ {
+ /* repeating gradients with all color stops sharing the same offset
+ * get the color of the last color stop */
+ GtkCssImageLinearColorStop *stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop,
linear->stops->len - 1);
+
+ gtk_snapshot_append_color_node (snapshot,
+ _gtk_css_rgba_value_get_rgba (stop->color),
+ &GRAPHENE_RECT_INIT (0, 0, width, height),
+ "RepeatingLinearGradient<degenerate>");
+ return;
+ }
+
offset = start;
last = -1;
stops = g_newa (GskColorStop, linear->stops->len);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]