38 template <typename = std::enable_if<std::is_same<T, SkMatrix>::value ||
39 std::is_same<T, SkM44 >::value >>
41 : fA(
std::move(
a)), fB(
std::move(
b)) {
45 this->observeInval(fA);
46 this->observeInval(fB);
50 this->unobserveInval(fA);
51 this->unobserveInval(fB);
55 SkRect onRevalidate(InvalidationController* ic,
const SkMatrix& ctm)
override {
56 fA->revalidate(ic, ctm);
57 fB->revalidate(ic, ctm);
59 fComposed.setConcat(TransformPriv::As<T>(fA),
60 TransformPriv::As<T>(fB));
64 bool is44()
const override {
return std::is_same<T, SkM44>::value; }
68 return AsSkMatrix(fComposed);
71 SkM44 asM44()
const override {
73 return AsSkM44(fComposed);
86 template <typename = std::enable_if<std::is_same<T, SkMatrix>::value ||
87 std::is_same<T, SkM44 >::value >>
92 this->observeInval(fT);
96 this->unobserveInval(fT);
100 SkRect onRevalidate(InvalidationController* ic,
const SkMatrix& ctm)
override {
101 fT->revalidate(ic, ctm);
103 if (!TransformPriv::As<T>(fT).
invert(&fInverted)) {
104 fInverted.setIdentity();
110 bool is44()
const override {
return std::is_same<T, SkM44>::value; }
112 SkMatrix asMatrix()
const override {
114 return AsSkMatrix(fInverted);
117 SkM44 asM44()
const override {
119 return AsSkM44(fInverted);
182 canvas->
concat(TransformPriv::As<SkM44>(fTransform));
188 const auto p4 = TransformPriv::As<SkM44>(fTransform).map(p.fX, p.fY, 0, 0);
197 fTransform->revalidate(ic, ctm);
200 const auto m = TransformPriv::As<SkMatrix>(fTransform);
#define INHERITED(method,...)
void concat(const SkMatrix &matrix)
static SkMatrix Concat(const SkMatrix &a, const SkMatrix &b)
const RenderNode * onNodeAt(const SkPoint &) const override
void onRender(SkCanvas *, const RenderContext *) const override
SkRect onRevalidate(InvalidationController *, const SkMatrix &) override
SkMatrix asMatrix() const override
SkM44 asM44() const override
void observeInval(const sk_sp< Node > &)
void unobserveInval(const sk_sp< Node > &)
const SkRect & bounds() const
skgpu::graphite::Transform Transform
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
static constexpr SkRect MakeEmpty()