[gtk+] cssimageradial: Handle "partial" gradients correctly
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] cssimageradial: Handle "partial" gradients correctly
- Date: Tue, 20 Dec 2016 17:16:39 +0000 (UTC)
commit 1b553478f6e0a0fa5c333409cb81f603aff0e8a3
Author: Benjamin Otte <otte redhat com>
Date: Mon Dec 19 23:30:02 2016 +0100
cssimageradial: Handle "partial" gradients correctly
When the first/last color stop is not at 0%/100%, we need to start the
repeating at their offsets and not at 0%/100%.
Attached reftest demonstrates the problem.
gtk/gtkcssimageradial.c | 2 +-
testsuite/reftests/Makefile.am | 3 +++
.../repeating-radial-gradient-at-beginning.css | 11 +++++++++++
.../repeating-radial-gradient-at-beginning.ref.ui | 11 +++++++++++
.../repeating-radial-gradient-at-beginning.ui | 10 ++++++++++
5 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkcssimageradial.c b/gtk/gtkcssimageradial.c
index e22d9b8..585d136 100644
--- a/gtk/gtkcssimageradial.c
+++ b/gtk/gtkcssimageradial.c
@@ -163,7 +163,7 @@ gtk_css_image_radial_draw (GtkCssImage *image,
gtk_css_image_radial_get_start_end (radial, radius, &start, &end);
- pattern = cairo_pattern_create_radial (0, 0, 0, 0, 0, radius);
+ pattern = cairo_pattern_create_radial (0, 0, radius * start, 0, 0, radius * end);
if (yscale != 1.0)
{
cairo_matrix_init_scale (&matrix, 1.0, 1.0 / yscale);
diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am
index c0c1bea..2dbca12 100644
--- a/testsuite/reftests/Makefile.am
+++ b/testsuite/reftests/Makefile.am
@@ -377,6 +377,9 @@ testdata = \
quit-mnemonic.css \
quit-mnemonic.ref.ui \
quit-mnemonic.ui \
+ repeating-radial-gradient-at-beginning.css \
+ repeating-radial-gradient-at-beginning.ref.ui \
+ repeating-radial-gradient-at-beginning.ui \
reset-to-defaults.css \
revealer-extra-size.ref.ui \
revealer-extra-size.ui \
diff --git a/testsuite/reftests/repeating-radial-gradient-at-beginning.css
b/testsuite/reftests/repeating-radial-gradient-at-beginning.css
new file mode 100644
index 0000000..0f4dd2e
--- /dev/null
+++ b/testsuite/reftests/repeating-radial-gradient-at-beginning.css
@@ -0,0 +1,11 @@
+window {
+ background: repeating-radial-gradient(red 50%, blue, red);
+}
+
+#reference {
+ background-image: radial-gradient(red, blue, red), repeating-radial-gradient(red 50%, blue, red);
+ background-size: 50% 50%, 100% 100%;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
diff --git a/testsuite/reftests/repeating-radial-gradient-at-beginning.ref.ui
b/testsuite/reftests/repeating-radial-gradient-at-beginning.ref.ui
new file mode 100644
index 0000000..3f0f3f1
--- /dev/null
+++ b/testsuite/reftests/repeating-radial-gradient-at-beginning.ref.ui
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="window1">
+ <property name="width_request">64</property>
+ <property name="height_request">32</property>
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
+ <property name="name">reference</property>
+ </object>
+</interface>
diff --git a/testsuite/reftests/repeating-radial-gradient-at-beginning.ui
b/testsuite/reftests/repeating-radial-gradient-at-beginning.ui
new file mode 100644
index 0000000..a6c83b8
--- /dev/null
+++ b/testsuite/reftests/repeating-radial-gradient-at-beginning.ui
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="window1">
+ <property name="width_request">64</property>
+ <property name="height_request">32</property>
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
+ </object>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]