Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / dom / DOMMatrixReadOnly.h
index 03858b0..5933420 100644 (file)
@@ -7,42 +7,59 @@
 
 #include "bindings/core/v8/ScriptWrappable.h"
 #include "platform/heap/Handle.h"
+#include "platform/transforms/TransformationMatrix.h"
+#include "wtf/Float32Array.h"
+#include "wtf/Float64Array.h"
 
 namespace blink {
 
+class DOMMatrix;
+
 class DOMMatrixReadOnly : public GarbageCollected<DOMMatrixReadOnly>, public ScriptWrappableBase {
 public:
-    double a() const { return m11(); }
-    double b() const { return m12(); }
-    double c() const { return m21(); }
-    double d() const { return m22(); }
-    double e() const { return m41(); }
-    double f() const { return m42(); }
-
-    double m11() const { return m_matrix[0][0]; }
-    double m12() const { return m_matrix[0][1]; }
-    double m13() const { return m_matrix[0][2]; }
-    double m14() const { return m_matrix[0][3]; }
-    double m21() const { return m_matrix[1][0]; }
-    double m22() const { return m_matrix[1][1]; }
-    double m23() const { return m_matrix[1][2]; }
-    double m24() const { return m_matrix[1][3]; }
-    double m31() const { return m_matrix[2][0]; }
-    double m32() const { return m_matrix[2][1]; }
-    double m33() const { return m_matrix[2][2]; }
-    double m34() const { return m_matrix[2][3]; }
-    double m41() const { return m_matrix[3][0]; }
-    double m42() const { return m_matrix[3][1]; }
-    double m43() const { return m_matrix[3][2]; }
-    double m44() const { return m_matrix[3][3]; }
+    double a() const { return m_matrix.m11(); }
+    double b() const { return m_matrix.m12(); }
+    double c() const { return m_matrix.m21(); }
+    double d() const { return m_matrix.m22(); }
+    double e() const { return m_matrix.m41(); }
+    double f() const { return m_matrix.m42(); }
+
+    double m11() const { return m_matrix.m11(); }
+    double m12() const { return m_matrix.m12(); }
+    double m13() const { return m_matrix.m13(); }
+    double m14() const { return m_matrix.m14(); }
+    double m21() const { return m_matrix.m21(); }
+    double m22() const { return m_matrix.m22(); }
+    double m23() const { return m_matrix.m23(); }
+    double m24() const { return m_matrix.m24(); }
+    double m31() const { return m_matrix.m31(); }
+    double m32() const { return m_matrix.m32(); }
+    double m33() const { return m_matrix.m33(); }
+    double m34() const { return m_matrix.m34(); }
+    double m41() const { return m_matrix.m41(); }
+    double m42() const { return m_matrix.m42(); }
+    double m43() const { return m_matrix.m43(); }
+    double m44() const { return m_matrix.m44(); }
 
     bool is2D() const;
     bool isIdentity() const;
 
+    DOMMatrix* multiply(DOMMatrix*);
+    DOMMatrix* translate(double tx, double ty, double tz = 0);
+    DOMMatrix* scale(double scale, double ox = 0, double oy = 0);
+    DOMMatrix* scale3d(double scale, double ox = 0, double oy = 0, double oz = 0);
+    DOMMatrix* scaleNonUniform(double sx, double sy = 1, double sz = 1,
+        double ox = 0, double oy = 0, double oz = 0);
+
+    PassRefPtr<Float32Array> toFloat32Array() const;
+    PassRefPtr<Float64Array> toFloat64Array() const;
+
+    const TransformationMatrix& matrix() const { return m_matrix; }
+
     void trace(Visitor*) { }
 
 protected:
-    double m_matrix[4][4];
+    TransformationMatrix m_matrix;
     bool m_is2D;
 };