Implement new SkCanvas virtuals in testing canvases (flutter/engine#15893)

This commit is contained in:
Brian Osman 2020-01-22 15:52:46 -05:00 committed by GitHub
parent ee7e3c82c9
commit ea2edc9a40
4 changed files with 50 additions and 0 deletions

View File

@ -53,6 +53,12 @@ void DidDrawCanvas::willRestore() {}
void DidDrawCanvas::didConcat(const SkMatrix& matrix) {}
void DidDrawCanvas::didConcat44(const SkScalar[]) {}
void DidDrawCanvas::didScale(SkScalar, SkScalar) {}
void DidDrawCanvas::didTranslate(SkScalar, SkScalar) {}
void DidDrawCanvas::didSetMatrix(const SkMatrix& matrix) {}
void DidDrawCanvas::onClipRect(const SkRect& rect,

View File

@ -71,6 +71,9 @@ class DidDrawCanvas final : public SkCanvasVirtualEnforcer<SkNoDrawCanvas> {
// |SkCanvasVirtualEnforcer<SkNoDrawCanvas>|
void didConcat(const SkMatrix&) override;
void didConcat44(const SkScalar[]) override;
void didScale(SkScalar, SkScalar) override;
void didTranslate(SkScalar, SkScalar) override;
// |SkCanvasVirtualEnforcer<SkNoDrawCanvas>|
void didSetMatrix(const SkMatrix&) override;

View File

@ -60,6 +60,24 @@ void MockCanvas::didConcat(const SkMatrix& matrix) {
draw_calls_.emplace_back(DrawCall{current_layer_, ConcatMatrixData{matrix}});
}
void MockCanvas::didConcat44(const SkScalar matrix[]) {
SkMatrix44 m44;
m44.setColMajor(matrix);
draw_calls_.emplace_back(DrawCall{current_layer_, ConcatMatrix44Data{m44}});
}
void MockCanvas::didScale(SkScalar x, SkScalar y) {
SkMatrix m;
m.setScale(x, y);
this->didConcat(m);
}
void MockCanvas::didTranslate(SkScalar x, SkScalar y) {
SkMatrix m;
m.setTranslate(x, y);
this->didConcat(m);
}
void MockCanvas::didSetMatrix(const SkMatrix& matrix) {
draw_calls_.emplace_back(DrawCall{current_layer_, SetMatrixData{matrix}});
}
@ -346,6 +364,16 @@ std::ostream& operator<<(std::ostream& os,
return os << data.matrix;
}
bool operator==(const MockCanvas::ConcatMatrix44Data& a,
const MockCanvas::ConcatMatrix44Data& b) {
return a.matrix == b.matrix;
}
std::ostream& operator<<(std::ostream& os,
const MockCanvas::ConcatMatrix44Data& data) {
return os << data.matrix;
}
bool operator==(const MockCanvas::SetMatrixData& a,
const MockCanvas::SetMatrixData& b) {
return a.matrix == b.matrix;

View File

@ -16,6 +16,7 @@
#include "third_party/skia/include/core/SkClipOp.h"
#include "third_party/skia/include/core/SkData.h"
#include "third_party/skia/include/core/SkImageFilter.h"
#include "third_party/skia/include/core/SkMatrix44.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRRect.h"
#include "third_party/skia/include/core/SkRect.h"
@ -55,6 +56,10 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
SkMatrix matrix;
};
struct ConcatMatrix44Data {
SkMatrix44 matrix;
};
struct SetMatrixData {
SkMatrix matrix;
};
@ -109,6 +114,7 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
SaveLayerData,
RestoreData,
ConcatMatrixData,
ConcatMatrix44Data,
SetMatrixData,
DrawRectData,
DrawPathData,
@ -139,6 +145,9 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
void willRestore() override;
void didRestore() override {}
void didConcat(const SkMatrix& matrix) override;
void didConcat44(const SkScalar matrix[]) override;
void didScale(SkScalar x, SkScalar y) override;
void didTranslate(SkScalar x, SkScalar y) override;
void didSetMatrix(const SkMatrix& matrix) override;
// Draw and clip operations that we track.
@ -269,6 +278,10 @@ extern bool operator==(const MockCanvas::ConcatMatrixData& a,
const MockCanvas::ConcatMatrixData& b);
extern std::ostream& operator<<(std::ostream& os,
const MockCanvas::ConcatMatrixData& data);
extern bool operator==(const MockCanvas::ConcatMatrix44Data& a,
const MockCanvas::ConcatMatrix44Data& b);
extern std::ostream& operator<<(std::ostream& os,
const MockCanvas::ConcatMatrix44Data& data);
extern bool operator==(const MockCanvas::SetMatrixData& a,
const MockCanvas::SetMatrixData& b);
extern std::ostream& operator<<(std::ostream& os,