Skip to content

Commit 14fefe3

Browse files
authored
Implement new SkCanvas virtuals in testing canvases (flutter#15893)
1 parent 80bc855 commit 14fefe3

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

shell/common/canvas_spy.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ void DidDrawCanvas::willRestore() {}
5353

5454
void DidDrawCanvas::didConcat(const SkMatrix& matrix) {}
5555

56+
void DidDrawCanvas::didConcat44(const SkScalar[]) {}
57+
58+
void DidDrawCanvas::didScale(SkScalar, SkScalar) {}
59+
60+
void DidDrawCanvas::didTranslate(SkScalar, SkScalar) {}
61+
5662
void DidDrawCanvas::didSetMatrix(const SkMatrix& matrix) {}
5763

5864
void DidDrawCanvas::onClipRect(const SkRect& rect,

shell/common/canvas_spy.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ class DidDrawCanvas final : public SkCanvasVirtualEnforcer<SkNoDrawCanvas> {
7171

7272
// |SkCanvasVirtualEnforcer<SkNoDrawCanvas>|
7373
void didConcat(const SkMatrix&) override;
74+
void didConcat44(const SkScalar[]) override;
75+
void didScale(SkScalar, SkScalar) override;
76+
void didTranslate(SkScalar, SkScalar) override;
7477

7578
// |SkCanvasVirtualEnforcer<SkNoDrawCanvas>|
7679
void didSetMatrix(const SkMatrix&) override;

testing/mock_canvas.cc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,24 @@ void MockCanvas::didConcat(const SkMatrix& matrix) {
6060
draw_calls_.emplace_back(DrawCall{current_layer_, ConcatMatrixData{matrix}});
6161
}
6262

63+
void MockCanvas::didConcat44(const SkScalar matrix[]) {
64+
SkMatrix44 m44;
65+
m44.setColMajor(matrix);
66+
draw_calls_.emplace_back(DrawCall{current_layer_, ConcatMatrix44Data{m44}});
67+
}
68+
69+
void MockCanvas::didScale(SkScalar x, SkScalar y) {
70+
SkMatrix m;
71+
m.setScale(x, y);
72+
this->didConcat(m);
73+
}
74+
75+
void MockCanvas::didTranslate(SkScalar x, SkScalar y) {
76+
SkMatrix m;
77+
m.setTranslate(x, y);
78+
this->didConcat(m);
79+
}
80+
6381
void MockCanvas::didSetMatrix(const SkMatrix& matrix) {
6482
draw_calls_.emplace_back(DrawCall{current_layer_, SetMatrixData{matrix}});
6583
}
@@ -346,6 +364,16 @@ std::ostream& operator<<(std::ostream& os,
346364
return os << data.matrix;
347365
}
348366

367+
bool operator==(const MockCanvas::ConcatMatrix44Data& a,
368+
const MockCanvas::ConcatMatrix44Data& b) {
369+
return a.matrix == b.matrix;
370+
}
371+
372+
std::ostream& operator<<(std::ostream& os,
373+
const MockCanvas::ConcatMatrix44Data& data) {
374+
return os << data.matrix;
375+
}
376+
349377
bool operator==(const MockCanvas::SetMatrixData& a,
350378
const MockCanvas::SetMatrixData& b) {
351379
return a.matrix == b.matrix;

testing/mock_canvas.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "third_party/skia/include/core/SkClipOp.h"
1717
#include "third_party/skia/include/core/SkData.h"
1818
#include "third_party/skia/include/core/SkImageFilter.h"
19+
#include "third_party/skia/include/core/SkMatrix44.h"
1920
#include "third_party/skia/include/core/SkPath.h"
2021
#include "third_party/skia/include/core/SkRRect.h"
2122
#include "third_party/skia/include/core/SkRect.h"
@@ -55,6 +56,10 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
5556
SkMatrix matrix;
5657
};
5758

59+
struct ConcatMatrix44Data {
60+
SkMatrix44 matrix;
61+
};
62+
5863
struct SetMatrixData {
5964
SkMatrix matrix;
6065
};
@@ -109,6 +114,7 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
109114
SaveLayerData,
110115
RestoreData,
111116
ConcatMatrixData,
117+
ConcatMatrix44Data,
112118
SetMatrixData,
113119
DrawRectData,
114120
DrawPathData,
@@ -139,6 +145,9 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
139145
void willRestore() override;
140146
void didRestore() override {}
141147
void didConcat(const SkMatrix& matrix) override;
148+
void didConcat44(const SkScalar matrix[]) override;
149+
void didScale(SkScalar x, SkScalar y) override;
150+
void didTranslate(SkScalar x, SkScalar y) override;
142151
void didSetMatrix(const SkMatrix& matrix) override;
143152

144153
// Draw and clip operations that we track.
@@ -269,6 +278,10 @@ extern bool operator==(const MockCanvas::ConcatMatrixData& a,
269278
const MockCanvas::ConcatMatrixData& b);
270279
extern std::ostream& operator<<(std::ostream& os,
271280
const MockCanvas::ConcatMatrixData& data);
281+
extern bool operator==(const MockCanvas::ConcatMatrix44Data& a,
282+
const MockCanvas::ConcatMatrix44Data& b);
283+
extern std::ostream& operator<<(std::ostream& os,
284+
const MockCanvas::ConcatMatrix44Data& data);
272285
extern bool operator==(const MockCanvas::SetMatrixData& a,
273286
const MockCanvas::SetMatrixData& b);
274287
extern std::ostream& operator<<(std::ostream& os,

0 commit comments

Comments
 (0)