Revert "Reland "Revert "allow clients to opt into new didTranslate/didScale"""
This reverts commitf66bba6018
. Reason for revert: sheriff thinks it may be the bot, so landing Original change's description: > Reland "Revert "allow clients to opt into new didTranslate/didScale"" > > This reverts commitd7ce7ac8d1
. > > Reason for revert: breaks Test-Debian10-GCC-GCE-CPU-AVX2-x86-Debug-All-Docker > > Original change's description: > > Revert "Revert "allow clients to opt into new didTranslate/didScale"" > > > > This reverts commit4a46758db8
. > > > > Add guard to Flutter > > > > Change-Id: Ief0e5cb36af13c8f00a36a617d0384622012d644 > > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263937 > > Reviewed-by: Mike Reed <reed@google.com> > > Commit-Queue: Mike Reed <reed@google.com> > > TBR=reed@google.com > > Change-Id: I3291c4dfe18d6e751e61f55ed9b22a01f0c8ad72 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263860 > Reviewed-by: Mike Reed <reed@google.com> > Commit-Queue: Mike Reed <reed@google.com> TBR=reed@google.com Change-Id: I3111a034291c2320e5ff33f8c2072354f836440f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263939 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
This commit is contained in:
parent
70e9301c26
commit
9403c3897f
@ -13,6 +13,7 @@ flutter_defines = [
|
|||||||
"SK_DISABLE_AAA",
|
"SK_DISABLE_AAA",
|
||||||
|
|
||||||
# API staging
|
# API staging
|
||||||
|
"SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS",
|
||||||
|
|
||||||
# Flutter doesn't deserialize anything.
|
# Flutter doesn't deserialize anything.
|
||||||
"SK_DISABLE_READBUFFER",
|
"SK_DISABLE_READBUFFER",
|
||||||
|
@ -2554,15 +2554,18 @@ protected:
|
|||||||
virtual bool onDoSaveBehind(const SkRect*) { return true; }
|
virtual bool onDoSaveBehind(const SkRect*) { return true; }
|
||||||
virtual void willRestore() {}
|
virtual void willRestore() {}
|
||||||
virtual void didRestore() {}
|
virtual void didRestore() {}
|
||||||
|
|
||||||
|
virtual void didConcat44(const SkScalar[]) {} // colMajor
|
||||||
virtual void didConcat(const SkMatrix& ) {}
|
virtual void didConcat(const SkMatrix& ) {}
|
||||||
virtual void didSetMatrix(const SkMatrix& ) {}
|
virtual void didSetMatrix(const SkMatrix& ) {}
|
||||||
|
#ifdef SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS
|
||||||
virtual void didTranslate(SkScalar dx, SkScalar dy) {
|
virtual void didTranslate(SkScalar dx, SkScalar dy) {
|
||||||
// TODO: update all subclasses to override this, so we can remove default impl.
|
|
||||||
this->didConcat(SkMatrix::MakeTrans(dx, dy));
|
this->didConcat(SkMatrix::MakeTrans(dx, dy));
|
||||||
}
|
}
|
||||||
// just pass an array for now, until we decide on the "public" form for the matrix
|
#else
|
||||||
virtual void didConcat44(const SkScalar[]) {}
|
virtual void didTranslate(SkScalar, SkScalar) {}
|
||||||
// This is not called by SkCanvas yet. Waiting for subclasses to override it first.
|
#endif
|
||||||
|
// Called if SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS is not defined
|
||||||
virtual void didScale(SkScalar, SkScalar) {}
|
virtual void didScale(SkScalar, SkScalar) {}
|
||||||
|
|
||||||
// NOTE: If you are adding a new onDraw virtual to SkCanvas, PLEASE add an override to
|
// NOTE: If you are adding a new onDraw virtual to SkCanvas, PLEASE add an override to
|
||||||
|
@ -157,6 +157,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
SkM44& preTranslate(SkScalar x, SkScalar y);
|
SkM44& preTranslate(SkScalar x, SkScalar y);
|
||||||
|
SkM44& preScale(SkScalar x, SkScalar y);
|
||||||
SkM44& preConcat(const SkMatrix&);
|
SkM44& preConcat(const SkMatrix&);
|
||||||
|
|
||||||
const SkScalar* asColMajor() const { return fMat; }
|
const SkScalar* asColMajor() const { return fMat; }
|
||||||
|
@ -1439,9 +1439,24 @@ void SkCanvas::translate(SkScalar dx, SkScalar dy) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SkCanvas::scale(SkScalar sx, SkScalar sy) {
|
void SkCanvas::scale(SkScalar sx, SkScalar sy) {
|
||||||
|
#ifdef SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS
|
||||||
SkMatrix m;
|
SkMatrix m;
|
||||||
m.setScale(sx, sy);
|
m.setScale(sx, sy);
|
||||||
this->concat(m);
|
this->concat(m);
|
||||||
|
#else
|
||||||
|
if (sx != 1 || sy != 1) {
|
||||||
|
this->checkForDeferredSave();
|
||||||
|
fMCRec->fMatrix.preScale(sx, sy);
|
||||||
|
|
||||||
|
// shouldn't need to do this (theoretically), as the state shouldn't have changed,
|
||||||
|
// but pre-scaling by a non-finite does change it, so we have to recompute.
|
||||||
|
fIsScaleTranslate = fMCRec->fMatrix.isScaleTranslate();
|
||||||
|
|
||||||
|
FOR_EACH_TOP_DEVICE(device->setGlobalCTM(fMCRec->fMatrix));
|
||||||
|
|
||||||
|
this->didScale(sx, sy);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkCanvas::rotate(SkScalar degrees) {
|
void SkCanvas::rotate(SkScalar degrees) {
|
||||||
|
@ -18,6 +18,7 @@ public:
|
|||||||
|
|
||||||
void reset() { fM.setIdentity(); }
|
void reset() { fM.setIdentity(); }
|
||||||
void preTranslate(SkScalar x, SkScalar y) { fM.preTranslate(x, y); }
|
void preTranslate(SkScalar x, SkScalar y) { fM.preTranslate(x, y); }
|
||||||
|
void preScale(SkScalar x, SkScalar y) { fM.preScale(x, y); }
|
||||||
void preConcat(const SkMatrix& m) { fM.preConcat(m); }
|
void preConcat(const SkMatrix& m) { fM.preConcat(m); }
|
||||||
void preConcat44(const SkScalar m[]) { fM.setConcat(fM, m); }
|
void preConcat44(const SkScalar m[]) { fM.setConcat(fM, m); }
|
||||||
|
|
||||||
|
@ -97,6 +97,15 @@ SkM44& SkM44::preTranslate(SkScalar x, SkScalar y) {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SkM44& SkM44::preScale(SkScalar x, SkScalar y) {
|
||||||
|
sk4f c0 = sk4f::Load(fMat + 0);
|
||||||
|
sk4f c1 = sk4f::Load(fMat + 4);
|
||||||
|
|
||||||
|
(c0 * x).store(fMat + 0);
|
||||||
|
(c1 * y).store(fMat + 4);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/** We always perform the calculation in doubles, to avoid prematurely losing
|
/** We always perform the calculation in doubles, to avoid prematurely losing
|
||||||
|
@ -46,7 +46,7 @@ DEF_TEST(RecordDraw_LazySaves, r) {
|
|||||||
|
|
||||||
assert_type<SkRecords::DrawPaint>(r, record, 0);
|
assert_type<SkRecords::DrawPaint>(r, record, 0);
|
||||||
assert_type<SkRecords::Save> (r, record, 1);
|
assert_type<SkRecords::Save> (r, record, 1);
|
||||||
assert_type<SkRecords::Concat> (r, record, 2);
|
assert_type<SkRecords::Scale> (r, record, 2);
|
||||||
assert_type<SkRecords::Restore> (r, record, 3);
|
assert_type<SkRecords::Restore> (r, record, 3);
|
||||||
|
|
||||||
recorder.save();
|
recorder.save();
|
||||||
|
Loading…
Reference in New Issue
Block a user