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; }
void Canvas::concat(const Float32List& matrix4) { if (!m_canvas) return; ASSERT(matrix4.data()); // TODO(mpcomplete): how can we raise an error in this case? if (matrix4.num_elements() != 16) return; SkMatrix sk_matrix; // Mappings from SkMatrix-index to input-index. static const int kMappings[] = { 0, 4, 12, 1, 5, 13, 3, 7, 15, }; for (intptr_t i = 0; i < 9; ++i) sk_matrix[i] = matrix4.data()[kMappings[i]]; m_canvas->concat(sk_matrix); }