1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef DOMMatrixReadOnly_h
6 #define DOMMatrixReadOnly_h
8 #include "bindings/core/v8/ScriptWrappable.h"
9 #include "core/dom/DOMTypedArray.h"
10 #include "platform/heap/Handle.h"
11 #include "platform/transforms/TransformationMatrix.h"
17 class DOMMatrixReadOnly : public GarbageCollected<DOMMatrixReadOnly>, public ScriptWrappableBase {
19 double a() const { return m_matrix.m11(); }
20 double b() const { return m_matrix.m12(); }
21 double c() const { return m_matrix.m21(); }
22 double d() const { return m_matrix.m22(); }
23 double e() const { return m_matrix.m41(); }
24 double f() const { return m_matrix.m42(); }
26 double m11() const { return m_matrix.m11(); }
27 double m12() const { return m_matrix.m12(); }
28 double m13() const { return m_matrix.m13(); }
29 double m14() const { return m_matrix.m14(); }
30 double m21() const { return m_matrix.m21(); }
31 double m22() const { return m_matrix.m22(); }
32 double m23() const { return m_matrix.m23(); }
33 double m24() const { return m_matrix.m24(); }
34 double m31() const { return m_matrix.m31(); }
35 double m32() const { return m_matrix.m32(); }
36 double m33() const { return m_matrix.m33(); }
37 double m34() const { return m_matrix.m34(); }
38 double m41() const { return m_matrix.m41(); }
39 double m42() const { return m_matrix.m42(); }
40 double m43() const { return m_matrix.m43(); }
41 double m44() const { return m_matrix.m44(); }
44 bool isIdentity() const;
46 DOMMatrix* multiply(DOMMatrix*);
47 DOMMatrix* translate(double tx, double ty, double tz = 0);
48 DOMMatrix* scale(double scale, double ox = 0, double oy = 0);
49 DOMMatrix* scale3d(double scale, double ox = 0, double oy = 0, double oz = 0);
50 DOMMatrix* scaleNonUniform(double sx, double sy = 1, double sz = 1,
51 double ox = 0, double oy = 0, double oz = 0);
53 PassRefPtr<DOMFloat32Array> toFloat32Array() const;
54 PassRefPtr<DOMFloat64Array> toFloat64Array() const;
56 const TransformationMatrix& matrix() const { return m_matrix; }
58 void trace(Visitor*) { }
61 TransformationMatrix m_matrix;