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 DOMMatrix_h
6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define DOMMatrix_h
7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "core/dom/DOMMatrixReadOnly.h"
9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class DOMMatrix : public DOMMatrixReadOnly {
13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)public:
14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    static DOMMatrix* create();
15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    static DOMMatrix* create(DOMMatrixReadOnly*);
16c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setA(double value) { m_matrix.setM11(value); }
189e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setB(double value) { m_matrix.setM12(value); }
199e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setC(double value) { m_matrix.setM21(value); }
209e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setD(double value) { m_matrix.setM22(value); }
219e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setE(double value) { m_matrix.setM41(value); }
229e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setF(double value) { m_matrix.setM42(value); }
239e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM11(double value) { m_matrix.setM11(value); }
259e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM12(double value) { m_matrix.setM12(value); }
269e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM13(double value) { m_matrix.setM13(value); setIs2D(!value); }
279e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM14(double value) { m_matrix.setM14(value); setIs2D(!value); }
289e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM21(double value) { m_matrix.setM21(value); }
299e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM22(double value) { m_matrix.setM22(value); }
309e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM23(double value) { m_matrix.setM23(value); setIs2D(!value); }
319e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM24(double value) { m_matrix.setM24(value); setIs2D(!value); }
329e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM31(double value) { m_matrix.setM31(value); setIs2D(!value); }
339e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM32(double value) { m_matrix.setM32(value); setIs2D(!value); }
349e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM33(double value) { m_matrix.setM33(value); setIs2D(value != 1); }
359e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM34(double value) { m_matrix.setM34(value); setIs2D(!value); }
369e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM41(double value) { m_matrix.setM41(value); }
379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM42(double value) { m_matrix.setM42(value); }
389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM43(double value) { m_matrix.setM43(value); setIs2D(!value); }
399e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setM44(double value) { m_matrix.setM44(value); setIs2D(value != 1); }
409e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DOMMatrix* multiplySelf(DOMMatrix*);
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DOMMatrix* preMultiplySelf(DOMMatrix*);
439e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    DOMMatrix* translateSelf(double tx, double ty, double tz = 0);
449e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    DOMMatrix* scaleSelf(double scale, double ox = 0, double oy = 0);
459e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    DOMMatrix* scale3dSelf(double scale, double ox = 0, double oy = 0, double oz = 0);
469e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    DOMMatrix* scaleNonUniformSelf(double sx, double sy = 1, double sz = 1,
479e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)        double ox = 0, double oy = 0, double oz = 0);
48c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
49c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)private:
509e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    DOMMatrix(const TransformationMatrix&, bool is2D = true);
51c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
52c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    void setIs2D(bool value);
53c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)};
54c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
55c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
57c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#endif
58