blob: eda4cb90445a24c455aad7b789408a3594a06d45 [file] [log] [blame]
/*
* 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