#include "include/core/SkCanvas.h"
#include "include/core/SkPoint.h"
#include "include/private/base/SkAssert.h"
#include "modules/sksg/include/SkSGTransform.h"
#include "modules/sksg/src/SkSGTransformPriv.h"
namespace sksg {
namespace {
template <typename T>
SkMatrix AsSkMatrix(const T&);
template <>
SkMatrix AsSkMatrix<SkMatrix>(const SkMatrix& m) { … }
template <>
SkMatrix AsSkMatrix<SkM44>(const SkM44& m) { … }
template <typename T>
SkM44 AsSkM44(const T&);
template <>
SkM44 AsSkM44<SkMatrix>(const SkMatrix& m) { … }
template <>
SkM44 AsSkM44<SkM44>(const SkM44& m) { … }
template <typename T>
class Concat final : public Transform { … };
template <typename T>
class Inverse final : public Transform { … };
}
template <>
SkMatrix Matrix<SkMatrix>::asMatrix() const { … }
template <>
SkM44 Matrix<SkMatrix>::asM44() const { … }
template <>
SkMatrix Matrix<SkM44>::asMatrix() const { … }
template <>
SkM44 Matrix<SkM44>::asM44() const { … }
Transform::Transform() : … { … }
sk_sp<Transform> Transform::MakeConcat(sk_sp<Transform> a, sk_sp<Transform> b) { … }
sk_sp<Transform> Transform::MakeInverse(sk_sp<Transform> t) { … }
TransformEffect::TransformEffect(sk_sp<RenderNode> child, sk_sp<Transform> transform)
: … { … }
TransformEffect::~TransformEffect() { … }
void TransformEffect::onRender(SkCanvas* canvas, const RenderContext* ctx) const { … }
const RenderNode* TransformEffect::onNodeAt(const SkPoint& p) const { … }
SkRect TransformEffect::onRevalidate(InvalidationController* ic, const SkMatrix& ctm) { … }
}