From b45be5817c725eac095f45a4f474bb5e0676d6bf Mon Sep 17 00:00:00 2001 From: Jonathan Watt Date: Fri, 11 Jul 2014 08:06:39 +0100 Subject: [PATCH] Bug 1025553, part 4 - Add some missing Moz2D Matrix API to gfxMatrix. r=Bas --- gfx/thebes/gfxMatrix.cpp | 16 ++++++++++++++++ gfx/thebes/gfxMatrix.h | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gfx/thebes/gfxMatrix.cpp b/gfx/thebes/gfxMatrix.cpp index 2189982ef6ba..07bd3ce677e4 100644 --- a/gfx/thebes/gfxMatrix.cpp +++ b/gfx/thebes/gfxMatrix.cpp @@ -58,6 +58,22 @@ gfxMatrix::PreMultiply(const gfxMatrix& m) return *this; } +/* static */ gfxMatrix +gfxMatrix::Rotation(gfxFloat aAngle) +{ + gfxMatrix newMatrix; + + gfxFloat s = sin(aAngle); + gfxFloat c = cos(aAngle); + + newMatrix._11 = c; + newMatrix._12 = s; + newMatrix._21 = -s; + newMatrix._22 = c; + + return newMatrix; +} + gfxPoint gfxMatrix::Transform(const gfxPoint& point) const { diff --git a/gfx/thebes/gfxMatrix.h b/gfx/thebes/gfxMatrix.h index 5d1e1cf7e214..2e54856c9590 100644 --- a/gfx/thebes/gfxMatrix.h +++ b/gfx/thebes/gfxMatrix.h @@ -144,6 +144,23 @@ public: */ const gfxMatrix& PreMultiply(const gfxMatrix& m); + static gfxMatrix Translation(gfxFloat aX, gfxFloat aY) + { + return gfxMatrix(1.0, 0.0, 0.0, 1.0, aX, aY); + } + + static gfxMatrix Translation(gfxPoint aPoint) + { + return Translation(aPoint.x, aPoint.y); + } + + static gfxMatrix Rotation(gfxFloat aAngle); + + static gfxMatrix Scaling(gfxFloat aX, gfxFloat aY) + { + return gfxMatrix(aX, 0.0, 0.0, aY, 0.0, 0.0); + } + /** * Transforms a point according to this matrix. */