Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.h

Issue 2770253003: Revert of Move geometry interface files to geometry directory. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.h
diff --git a/third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.h b/third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.h
new file mode 100644
index 0000000000000000000000000000000000000000..c78bfe50da335a02e5411f03f91910faa8aa748f
--- /dev/null
+++ b/third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.h
@@ -0,0 +1,140 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef DOMMatrixReadOnly_h
+#define DOMMatrixReadOnly_h
+
+#include "bindings/core/v8/ExceptionState.h"
+#include "bindings/core/v8/ScriptWrappable.h"
+#include "core/dom/DOMTypedArray.h"
+#include "platform/heap/Handle.h"
+#include "platform/transforms/TransformationMatrix.h"
+#include <memory>
+
+namespace blink {
+
+class DOMMatrix;
+class DOMMatrixInit;
+class DOMPoint;
+class DOMPointInit;
+
+class CORE_EXPORT DOMMatrixReadOnly
+ : public GarbageCollectedFinalized<DOMMatrixReadOnly>,
+ public ScriptWrappable {
+ DEFINE_WRAPPERTYPEINFO();
+
+ public:
+ static DOMMatrixReadOnly* create(ExceptionState&);
+ static DOMMatrixReadOnly* create(const String&, ExceptionState&);
+ static DOMMatrixReadOnly* create(Vector<double>, ExceptionState&);
+ static DOMMatrixReadOnly* fromFloat32Array(DOMFloat32Array*, ExceptionState&);
+ static DOMMatrixReadOnly* fromFloat64Array(DOMFloat64Array*, ExceptionState&);
+ static DOMMatrixReadOnly* fromMatrix(DOMMatrixInit&, ExceptionState&);
+ virtual ~DOMMatrixReadOnly();
+
+ 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(DOMMatrixInit&, ExceptionState&);
+ DOMMatrix* translate(double tx = 0, double ty = 0, double tz = 0);
+ DOMMatrix* scale(double sx = 1);
+ DOMMatrix* scale(double sx,
+ double sy,
+ double sz = 1,
+ double ox = 0,
+ double oy = 0,
+ double oz = 0);
+ DOMMatrix* scale3d(double scale = 1,
+ double ox = 0,
+ double oy = 0,
+ double oz = 0);
+ DOMMatrix* rotate(double rotX);
+ DOMMatrix* rotate(double rotX, double rotY);
+ DOMMatrix* rotate(double rotX, double rotY, double rotZ);
+ DOMMatrix* rotateFromVector(double x, double y);
+ DOMMatrix* rotateAxisAngle(double x = 0,
+ double y = 0,
+ double z = 0,
+ double angle = 0);
+ DOMMatrix* skewX(double sx);
+ DOMMatrix* skewY(double sy);
+ DOMMatrix* flipX();
+ DOMMatrix* flipY();
+ DOMMatrix* inverse();
+
+ DOMPoint* transformPoint(const DOMPointInit&);
+
+ DOMFloat32Array* toFloat32Array() const;
+ DOMFloat64Array* toFloat64Array() const;
+
+ const String toString() const;
+
+ ScriptValue toJSONForBinding(ScriptState*) const;
+
+ const TransformationMatrix& matrix() const { return *m_matrix; }
+
+ DEFINE_INLINE_TRACE() {}
+
+ protected:
+ DOMMatrixReadOnly() {}
+ DOMMatrixReadOnly(const String&, ExceptionState&);
+ DOMMatrixReadOnly(const TransformationMatrix&, bool is2D = true);
+
+ template <typename T>
+ DOMMatrixReadOnly(T sequence, int size) {
+ if (size == 6) {
+ m_matrix =
+ TransformationMatrix::create(sequence[0], sequence[1], sequence[2],
+ sequence[3], sequence[4], sequence[5]);
+ m_is2D = true;
+ } else if (size == 16) {
+ m_matrix = TransformationMatrix::create(
+ sequence[0], sequence[1], sequence[2], sequence[3], sequence[4],
+ sequence[5], sequence[6], sequence[7], sequence[8], sequence[9],
+ sequence[10], sequence[11], sequence[12], sequence[13], sequence[14],
+ sequence[15]);
+ m_is2D = false;
+ } else {
+ NOTREACHED();
+ }
+ }
+
+ void setMatrixValueFromString(const String&, ExceptionState&);
+
+ static bool validateAndFixup(DOMMatrixInit&, ExceptionState&);
+ // TransformationMatrix needs to be 16-byte aligned. PartitionAlloc
+ // supports 16-byte alignment but Oilpan doesn't. So we use an std::unique_ptr
+ // to allocate TransformationMatrix on PartitionAlloc.
+ // TODO(oilpan): Oilpan should support 16-byte aligned allocations.
+ std::unique_ptr<TransformationMatrix> m_matrix;
+ bool m_is2D;
+};
+
+} // namespace blink
+
+#endif
« no previous file with comments | « third_party/WebKit/Source/core/dom/DOMMatrixInit.idl ('k') | third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698