summaryrefslogtreecommitdiff
path: root/gsk/gsktransform.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-07-24 18:33:33 +0200
committerTimm Bäder <mail@baedert.org>2020-07-28 05:34:12 +0200
commitfa85ec5cf533fb3e597df44c05887f61f70c1857 (patch)
tree19371232b89590aca9b59bbaffc8d3868a70a941 /gsk/gsktransform.c
parent0ce32cd4b5d4f736c9e3a2540c30115c3b70dad0 (diff)
downloadgtk+-fa85ec5cf533fb3e597df44c05887f61f70c1857.tar.gz
GskTransform: Restructure _to_affine and _to_translation
Make the simple cases more explicit.
Diffstat (limited to 'gsk/gsktransform.c')
-rw-r--r--gsk/gsktransform.c72
1 files changed, 50 insertions, 22 deletions
diff --git a/gsk/gsktransform.c b/gsk/gsktransform.c
index eabdd7861f..a12c68e557 100644
--- a/gsk/gsktransform.c
+++ b/gsk/gsktransform.c
@@ -1539,7 +1539,7 @@ gsk_transform_to_2d (GskTransform *self,
* Converts a #GskTransform to 2D affine transformation
* factors.
* @self must be a 2D transformation. If you are not
- * sure, use gsk_transform_get_category() >=
+ * sure, use gsk_transform_get_category() >=
* %GSK_TRANSFORM_CATEGORY_2D_AFFINE to check.
*/
void
@@ -1549,15 +1549,8 @@ gsk_transform_to_affine (GskTransform *self,
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE)
+ if (self == NULL)
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
- g_free (s);
- }
*out_scale_x = 1.0f;
*out_scale_y = 1.0f;
*out_dx = 0.0f;
@@ -1565,9 +1558,32 @@ gsk_transform_to_affine (GskTransform *self,
return;
}
- gsk_transform_to_affine (self->next,
- out_scale_x, out_scale_y,
- out_dx, out_dy);
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE))
+ {
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
+ g_free (s);
+
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ return;
+ }
+
+ if (self->next != NULL)
+ {
+ gsk_transform_to_affine (self->next,
+ out_scale_x, out_scale_y,
+ out_dx, out_dy);
+ }
+ else
+ {
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ }
self->transform_class->apply_affine (self,
out_scale_x, out_scale_y,
@@ -1592,22 +1608,34 @@ gsk_transform_to_translate (GskTransform *self,
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE)
+ if (self == NULL)
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not a 2D translation.", s);
- g_free (s);
- }
*out_dx = 0.0f;
*out_dy = 0.0f;
return;
}
- gsk_transform_to_translate (self->next,
- out_dx, out_dy);
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE))
+ {
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not an affine 2D translation.", s);
+ g_free (s);
+
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ return;
+ }
+
+ if (self->next != NULL)
+ {
+ gsk_transform_to_translate (self->next,
+ out_dx, out_dy);
+ }
+ else
+ {
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+ }
self->transform_class->apply_translate (self,
out_dx, out_dy);