summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@nokia.com>2010-07-29 17:58:13 +0300
committerSiarhei Siamashka <siarhei.siamashka@nokia.com>2011-02-10 16:17:24 +0200
commite0c7948c970b816f323a6402241ca70fa855c12c (patch)
treec4c99738e42d8babe826cd76779b59298f1e2a37
parent3b68c295fd45297a631569b35608364dbcb6d452 (diff)
New flags for 90/180/270 rotation
These flags are set when the transform is a simple nonscaled 90/180/270 degrees rotation.
-rw-r--r--pixman/pixman-image.c17
-rw-r--r--pixman/pixman-private.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index a72299b3..e91d87ca 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -211,8 +211,25 @@ compute_image_info (pixman_image_t *image)
if (image->common.transform->matrix[0][1] == 0 &&
image->common.transform->matrix[1][0] == 0)
{
+ if (image->common.transform->matrix[0][0] == -pixman_fixed_1 &&
+ image->common.transform->matrix[1][1] == -pixman_fixed_1)
+ {
+ flags |= FAST_PATH_ROTATE_180_TRANSFORM;
+ }
flags |= FAST_PATH_SCALE_TRANSFORM;
}
+ else if (image->common.transform->matrix[0][0] == 0 &&
+ image->common.transform->matrix[1][1] == 0)
+ {
+ pixman_fixed_t m01 = image->common.transform->matrix[0][1];
+ if (m01 == -image->common.transform->matrix[1][0])
+ {
+ if (m01 == -pixman_fixed_1)
+ flags |= FAST_PATH_ROTATE_90_TRANSFORM;
+ else if (m01 == pixman_fixed_1)
+ flags |= FAST_PATH_ROTATE_270_TRANSFORM;
+ }
+ }
}
if (image->common.transform->matrix[0][0] > 0)
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index f5d0ba16..1473dc48 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -611,6 +611,9 @@ _pixman_iter_get_scanline_noop (pixman_iter_t *iter, const uint32_t *mask);
#define FAST_PATH_AFFINE_TRANSFORM (1 << 18)
#define FAST_PATH_Y_UNIT_ZERO (1 << 19)
#define FAST_PATH_BILINEAR_FILTER (1 << 20)
+#define FAST_PATH_ROTATE_90_TRANSFORM (1 << 21)
+#define FAST_PATH_ROTATE_180_TRANSFORM (1 << 22)
+#define FAST_PATH_ROTATE_270_TRANSFORM (1 << 23)
#define FAST_PATH_PAD_REPEAT \
(FAST_PATH_NO_NONE_REPEAT | \