1c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// found in the LICENSE file. 4c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#ifndef DOMMatrixReadOnly_h 6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define DOMMatrixReadOnly_h 7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 8e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "bindings/core/v8/ScriptWrappable.h" 9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "platform/heap/Handle.h" 109e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)#include "platform/transforms/TransformationMatrix.h" 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/Float32Array.h" 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/Float64Array.h" 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 169e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class DOMMatrix; 179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 18e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class DOMMatrixReadOnly : public GarbageCollected<DOMMatrixReadOnly>, public ScriptWrappableBase { 19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)public: 209e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double a() const { return m_matrix.m11(); } 219e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double b() const { return m_matrix.m12(); } 229e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double c() const { return m_matrix.m21(); } 239e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double d() const { return m_matrix.m22(); } 249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double e() const { return m_matrix.m41(); } 259e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double f() const { return m_matrix.m42(); } 269e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 279e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m11() const { return m_matrix.m11(); } 289e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m12() const { return m_matrix.m12(); } 299e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m13() const { return m_matrix.m13(); } 309e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m14() const { return m_matrix.m14(); } 319e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m21() const { return m_matrix.m21(); } 329e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m22() const { return m_matrix.m22(); } 339e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m23() const { return m_matrix.m23(); } 349e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m24() const { return m_matrix.m24(); } 359e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m31() const { return m_matrix.m31(); } 369e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m32() const { return m_matrix.m32(); } 379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m33() const { return m_matrix.m33(); } 389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m34() const { return m_matrix.m34(); } 399e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m41() const { return m_matrix.m41(); } 409e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m42() const { return m_matrix.m42(); } 419e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m43() const { return m_matrix.m43(); } 429e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double m44() const { return m_matrix.m44(); } 43c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 44c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool is2D() const; 45c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool isIdentity() const; 46c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DOMMatrix* multiply(DOMMatrix*); 489e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) DOMMatrix* translate(double tx, double ty, double tz = 0); 499e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) DOMMatrix* scale(double scale, double ox = 0, double oy = 0); 509e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) DOMMatrix* scale3d(double scale, double ox = 0, double oy = 0, double oz = 0); 519e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) DOMMatrix* scaleNonUniform(double sx, double sy = 1, double sz = 1, 529e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) double ox = 0, double oy = 0, double oz = 0); 539e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtr<Float32Array> toFloat32Array() const; 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtr<Float64Array> toFloat64Array() const; 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 579e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) const TransformationMatrix& matrix() const { return m_matrix; } 589e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 59c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void trace(Visitor*) { } 60c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)protected: 629e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) TransformationMatrix m_matrix; 63c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool m_is2D; 64c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)}; 65c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 67c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 68c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#endif 69