// Copyright 2015 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. #include "sky/engine/core/painting/Matrix.h" namespace blink { // Mappings from SkMatrix-index to input-index. static const int kSkMatrixIndexToMatrix4Index[] = { 0, 4, 12, 1, 5, 13, 3, 7, 15, }; SkMatrix toSkMatrix(const Float32List& matrix4, ExceptionState& es) { ASSERT(matrix4.data()); SkMatrix sk_matrix; if (matrix4.num_elements() != 16) { es.ThrowTypeError("Incorrect number of elements in matrix."); return sk_matrix; } for (intptr_t i = 0; i < 9; ++i) sk_matrix[i] = matrix4[kSkMatrixIndexToMatrix4Index[i]]; return sk_matrix; } Float32List toMatrix4(const SkMatrix& sk_matrix) { Float32List matrix4(Dart_NewTypedData(Dart_TypedData_kFloat32, 16)); for (intptr_t i = 0; i < 9; ++i) matrix4[kSkMatrixIndexToMatrix4Index[i]] = sk_matrix[i]; matrix4[10] = 1.0; // Identity along the z axis. return matrix4; } } // namespace blink