// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/354829279): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #ifndef UI_GFX_GEOMETRY_MATRIX44_H_ #define UI_GFX_GEOMETRY_MATRIX44_H_ #include <optional> #include "base/check_op.h" #include "ui/gfx/geometry/double4.h" #include "ui/gfx/geometry/geometry_skia_export.h" namespace gfx { struct DecomposedTransform; // This is the underlying data structure of Transform. Don't use this type // directly. // // Throughout this class, we will be speaking in column vector convention. // i.e. Applying a transform T to vector V is T * V. // The components of the matrix and the vector look like: // \ col // r \ 0 1 2 3 // o 0 | scale_x skew_xy skew_xz trans_x | | x | // w 1 | skew_yx scale_y skew_yz trans_y | * | y | // 2 | skew_zx skew_zy scale_z trans_z | | z | // 3 | persp_x persp_y persp_z persp_w | | w | // // Note that the names are just for remembering and don't have the exact // meanings when other components exist. // // The components correspond to the DOMMatrix mij (i,j = 1..4) components: // i = col + 1 // j = row + 1 class GEOMETRY_SKIA_EXPORT Matrix44 { … }; } // namespace gfx #endif // UI_GFX_GEOMETRY_MATRIX44_H_