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)#include "config.h"
69e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)#include "core/dom/DOMMatrix.h"
7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)bool DOMMatrixReadOnly::is2D() const
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){
12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    return m_is2D;
13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)}
14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)bool DOMMatrixReadOnly::isIdentity() const
16c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){
179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    return m_matrix.isIdentity();
189e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)}
199e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciDOMMatrix* DOMMatrixReadOnly::multiply(DOMMatrix* other)
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return DOMMatrix::create(this)->multiplySelf(other);
237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
259e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)DOMMatrix* DOMMatrixReadOnly::translate(double tx, double ty, double tz)
269e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles){
279e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    return DOMMatrix::create(this)->translateSelf(tx, ty, tz);
289e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)}
299e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
309e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)DOMMatrix* DOMMatrixReadOnly::scale(double scale, double ox, double oy)
319e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles){
329e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    return DOMMatrix::create(this)->scaleSelf(scale, ox, oy);
339e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)}
349e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
359e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)DOMMatrix* DOMMatrixReadOnly::scale3d(double scale, double ox, double oy, double oz)
369e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles){
379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    return DOMMatrix::create(this)->scale3dSelf(scale, ox, oy, oz);
389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)}
399e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
409e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)DOMMatrix* DOMMatrixReadOnly::scaleNonUniform(double sx, double sy, double sz,
419e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    double ox, double oy, double oz)
429e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles){
439e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    return DOMMatrix::create(this)->scaleNonUniformSelf(sx, sy, sz, ox, oy, oz);
44c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)}
45c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<Float32Array> DOMMatrixReadOnly::toFloat32Array() const
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    float array[] = {
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(),
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(),
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(),
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44()
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    };
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return Float32Array::create(array, 16);
567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<Float64Array> DOMMatrixReadOnly::toFloat64Array() const
597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double array[] = {
617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(),
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(),
637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(),
647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44()
657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    };
667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return Float64Array::create(array, 16);
687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
70c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
71