/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkMatrixInvert_DEFINED #define SkMatrixInvert_DEFINED #include "include/core/SkScalar.h" /** * Computes the inverse of `inMatrix`, passed in column-major order. * `inMatrix` and `outMatrix` are allowed to point to the same array of scalars in memory. * `outMatrix` is allowed to be null. * The return value is the determinant of the input matrix. If zero is returned, the matrix was * non-invertible, and `outMatrix` has been left in an indeterminate state. */ SkScalar SkInvert2x2Matrix(const SkScalar inMatrix[4], SkScalar outMatrix[4]); SkScalar SkInvert3x3Matrix(const SkScalar inMatrix[9], SkScalar outMatrix[9]); SkScalar SkInvert4x4Matrix(const SkScalar inMatrix[16], SkScalar outMatrix[16]); #endif