[gtk/another-attempt-to-fix-shadertoy: 1/2] gsk: Normalize when transforming bounds
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/another-attempt-to-fix-shadertoy: 1/2] gsk: Normalize when transforming bounds
- Date: Mon, 28 Sep 2020 15:34:34 +0000 (UTC)
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]