Use new canvas virtuals for m44

Test: make

Change-Id: I83b71fc69515458946b90e96db612c11ba963e98
This commit is contained in:
Mike Reed
2020-11-25 21:31:08 -05:00
parent 31952c368f
commit 6525763ff3
4 changed files with 15 additions and 30 deletions

View File

@@ -19,7 +19,6 @@ X(Save)
X(Restore)
X(SaveLayer)
X(SaveBehind)
X(Concat44)
X(Concat)
X(SetMatrix)
X(Scale)

View File

@@ -125,24 +125,18 @@ struct SaveBehind final : Op {
}
};
struct Concat44 final : Op {
static const auto kType = Type::Concat44;
Concat44(const SkM44& m) : matrix(m) {}
SkM44 matrix;
void draw(SkCanvas* c, const SkMatrix&) const { c->concat(matrix); }
};
struct Concat final : Op {
static const auto kType = Type::Concat;
Concat(const SkMatrix& matrix) : matrix(matrix) {}
SkMatrix matrix;
Concat(const SkM44& matrix) : matrix(matrix) {}
SkM44 matrix;
void draw(SkCanvas* c, const SkMatrix&) const { c->concat(matrix); }
};
struct SetMatrix final : Op {
static const auto kType = Type::SetMatrix;
SetMatrix(const SkMatrix& matrix) : matrix(matrix) {}
SkMatrix matrix;
SetMatrix(const SkM44& matrix) : matrix(matrix) {}
SkM44 matrix;
void draw(SkCanvas* c, const SkMatrix& original) const {
c->setMatrix(SkMatrix::Concat(original, matrix));
c->setMatrix(SkM44(original) * matrix);
}
};
struct Scale final : Op {
@@ -569,12 +563,9 @@ void DisplayListData::saveBehind(const SkRect* subset) {
}
void DisplayListData::concat(const SkM44& m) {
this->push<Concat44>(0, m);
this->push<Concat>(0, m);
}
void DisplayListData::concat(const SkMatrix& matrix) {
this->push<Concat>(0, matrix);
}
void DisplayListData::setMatrix(const SkMatrix& matrix) {
void DisplayListData::setMatrix(const SkM44& matrix) {
this->push<SetMatrix>(0, matrix);
}
void DisplayListData::scale(SkScalar sx, SkScalar sy) {
@@ -834,10 +825,7 @@ bool RecordingCanvas::onDoSaveBehind(const SkRect* subset) {
void RecordingCanvas::didConcat44(const SkM44& m) {
fDL->concat(m);
}
void RecordingCanvas::didConcat(const SkMatrix& matrix) {
fDL->concat(matrix);
}
void RecordingCanvas::didSetMatrix(const SkMatrix& matrix) {
void RecordingCanvas::didSetM44(const SkM44& matrix) {
fDL->setMatrix(matrix);
}
void RecordingCanvas::didScale(SkScalar sx, SkScalar sy) {

View File

@@ -82,8 +82,7 @@ private:
void restore();
void concat(const SkM44&);
void concat(const SkMatrix&);
void setMatrix(const SkMatrix&);
void setMatrix(const SkM44&);
void scale(SkScalar, SkScalar);
void translate(SkScalar, SkScalar);
void translateZ(SkScalar);
@@ -154,8 +153,7 @@ public:
void onFlush() override;
void didConcat44(const SkM44&) override;
void didConcat(const SkMatrix&) override;
void didSetMatrix(const SkMatrix&) override;
void didSetM44(const SkM44&) override;
void didScale(SkScalar, SkScalar) override;
void didTranslate(SkScalar, SkScalar) override;

View File

@@ -1107,26 +1107,26 @@ TEST(ReorderBarrierDrawable, testShadowMatrix) {
EXPECT_EQ(dy, TRANSLATE_Y);
}
virtual void didSetMatrix(const SkMatrix& matrix) override {
virtual void didSetM44(const SkM44& matrix) override {
mDrawCounter++;
// First invocation is EndReorderBarrierDrawable::drawShadow to apply shadow matrix.
// Second invocation is preparing the matrix for an elevated RenderNodeDrawable.
EXPECT_TRUE(matrix.isIdentity());
EXPECT_TRUE(matrix == SkM44());
EXPECT_TRUE(getTotalMatrix().isIdentity());
}
virtual void didConcat(const SkMatrix& matrix) override {
virtual void didConcat44(const SkM44& matrix) override {
mDrawCounter++;
if (mFirstDidConcat) {
// First invocation is EndReorderBarrierDrawable::drawShadow to apply shadow matrix.
mFirstDidConcat = false;
EXPECT_EQ(SkMatrix::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
EXPECT_EQ(SkM44::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
matrix);
EXPECT_EQ(SkMatrix::Translate(CASTER_X + TRANSLATE_X, CASTER_Y + TRANSLATE_Y),
getTotalMatrix());
} else {
// Second invocation is preparing the matrix for an elevated RenderNodeDrawable.
EXPECT_EQ(SkMatrix::Translate(TRANSLATE_X, TRANSLATE_Y), matrix);
EXPECT_EQ(SkM44::Translate(TRANSLATE_X, TRANSLATE_Y), matrix);
EXPECT_EQ(SkMatrix::Translate(TRANSLATE_X, TRANSLATE_Y), getTotalMatrix());
}
}