[gtk+] gsk: Insist on ordered color stops
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gsk: Insist on ordered color stops
- Date: Mon, 26 Dec 2016 16:22:47 +0000 (UTC)
commit 5017c3be65a8f07178f48042170d93000131980b
Author: Benjamin Otte <otte redhat com>
Date: Mon Dec 26 17:04:01 2016 +0100
gsk: Insist on ordered color stops
I don't want to sort them later for the shader preparation, so make
sure they come in ordered.
gsk/gskrendernodeimpl.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 3cea64c..4e02546 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -321,11 +321,20 @@ gsk_linear_gradient_node_new (const graphene_rect_t *bounds,
gsize n_color_stops)
{
GskLinearGradientNode *self;
+ gsize i;
g_return_val_if_fail (bounds != NULL, NULL);
g_return_val_if_fail (start != NULL, NULL);
g_return_val_if_fail (end != NULL, NULL);
g_return_val_if_fail (color_stops != NULL, NULL);
+ g_return_val_if_fail (n_color_stops >= 2, NULL);
+ g_return_val_if_fail (color_stops[0].offset >= 0, NULL);
+ for (i = 1; i < n_color_stops; i++)
+ {
+ g_return_val_if_fail (color_stops[i].offset >= color_stops[i-1].offset, NULL);
+
+ }
+ g_return_val_if_fail (color_stops[n_color_stops - 1].offset <= 1, NULL);
self = (GskLinearGradientNode *) gsk_render_node_new (&GSK_LINEAR_GRADIENT_NODE_CLASS, sizeof
(GskColorStop) * n_color_stops);
@@ -347,11 +356,20 @@ gsk_repeating_linear_gradient_node_new (const graphene_rect_t *bounds,
gsize n_color_stops)
{
GskLinearGradientNode *self;
+ gsize i;
g_return_val_if_fail (bounds != NULL, NULL);
g_return_val_if_fail (start != NULL, NULL);
g_return_val_if_fail (end != NULL, NULL);
g_return_val_if_fail (color_stops != NULL, NULL);
+ g_return_val_if_fail (n_color_stops >= 2, NULL);
+ g_return_val_if_fail (color_stops[0].offset >= 0, NULL);
+ for (i = 1; i < n_color_stops; i++)
+ {
+ g_return_val_if_fail (color_stops[i].offset >= color_stops[i-1].offset, NULL);
+
+ }
+ g_return_val_if_fail (color_stops[n_color_stops - 1].offset <= 1, NULL);
self = (GskLinearGradientNode *) gsk_render_node_new (&GSK_REPEATING_LINEAR_GRADIENT_NODE_CLASS, sizeof
(GskColorStop) * n_color_stops);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]