Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / dom / DOMMatrixReadOnly.h
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.
4
5 #ifndef DOMMatrixReadOnly_h
6 #define DOMMatrixReadOnly_h
7
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"
12
13 namespace blink {
14
15 class DOMMatrix;
16
17 class DOMMatrixReadOnly : public GarbageCollected<DOMMatrixReadOnly>, public ScriptWrappableBase {
18 public:
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(); }
25
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(); }
42
43     bool is2D() const;
44     bool isIdentity() const;
45
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);
52
53     PassRefPtr<DOMFloat32Array> toFloat32Array() const;
54     PassRefPtr<DOMFloat64Array> toFloat64Array() const;
55
56     const TransformationMatrix& matrix() const { return m_matrix; }
57
58     void trace(Visitor*) { }
59
60 protected:
61     TransformationMatrix m_matrix;
62     bool m_is2D;
63 };
64
65 } // namespace blink
66
67 #endif