[gtk/another-attempt-to-fix-shadertoy: 1/2] gsk: Normalize when transforming bounds




commit 431f144f3795c8a7ec6177cda3b0d6f14bf0200f
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Sep 28 11:23:51 2020 -0400

    gsk: Normalize when transforming bounds
    
    Bounds are assumed to be normalized, and transforms
    with negative scales or 3d rotations can make us get
    negative sizes.
    
    Fix by Benjamin Otte.

 gsk/gsktransform.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/gsk/gsktransform.c b/gsk/gsktransform.c
index 2bd1bdc920..7f9cc20e5b 100644
--- a/gsk/gsktransform.c
+++ b/gsk/gsktransform.c
@@ -1793,10 +1793,11 @@ gsk_transform_transform_bounds (GskTransform          *self,
         float dx, dy;
 
         gsk_transform_to_translate (self, &dx, &dy);
-        out_rect->origin.x = rect->origin.x + dx;
-        out_rect->origin.y = rect->origin.y + dy;
-        out_rect->size.width = rect->size.width;
-        out_rect->size.height = rect->size.height;
+        graphene_rect_init (out_rect,
+                            rect->origin.x + dx,
+                            rect->origin.y + dy,
+                            rect->size.width,
+                            rect->size.height);
       }
     break;
 
@@ -1806,10 +1807,11 @@ gsk_transform_transform_bounds (GskTransform          *self,
 
         gsk_transform_to_affine (self, &scale_x, &scale_y, &dx, &dy);
 
-        out_rect->origin.x = (rect->origin.x * scale_x) + dx;
-        out_rect->origin.y = (rect->origin.y * scale_y) + dy;
-        out_rect->size.width = rect->size.width * scale_x;
-        out_rect->size.height = rect->size.height * scale_y;
+        graphene_rect_init (out_rect,
+                            (rect->origin.x * scale_x) + dx,
+                            (rect->origin.y * scale_y) + dy,
+                            rect->size.width * scale_x,
+                            rect->size.height * scale_y);
       }
     break;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]