Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 649bb21

Browse files
committed
Implement new SkCanvas virtuals in testing canvases
1 parent c3e2c0f commit 649bb21

File tree

4 files changed

+85
-0
lines changed

4 files changed

+85
-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: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,22 @@ 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+
draw_calls_.emplace_back(
71+
DrawCall{current_layer_, ScaleData{SkPoint::Make(x, y)}});
72+
}
73+
74+
void MockCanvas::didTranslate(SkScalar x, SkScalar y) {
75+
draw_calls_.emplace_back(
76+
DrawCall{current_layer_, TranslateData{SkPoint::Make(x, y)}});
77+
}
78+
6379
void MockCanvas::didSetMatrix(const SkMatrix& matrix) {
6480
draw_calls_.emplace_back(DrawCall{current_layer_, SetMatrixData{matrix}});
6581
}
@@ -346,6 +362,35 @@ std::ostream& operator<<(std::ostream& os,
346362
return os << data.matrix;
347363
}
348364

365+
bool operator==(const MockCanvas::ConcatMatrix44Data& a,
366+
const MockCanvas::ConcatMatrix44Data& b) {
367+
return a.matrix == b.matrix;
368+
}
369+
370+
std::ostream& operator<<(std::ostream& os,
371+
const MockCanvas::ConcatMatrix44Data& data) {
372+
return os << data.matrix;
373+
}
374+
375+
bool operator==(const MockCanvas::ScaleData& a,
376+
const MockCanvas::ScaleData& b) {
377+
return a.scale == b.scale;
378+
}
379+
380+
std::ostream& operator<<(std::ostream& os, const MockCanvas::ScaleData& data) {
381+
return os << data.scale;
382+
}
383+
384+
bool operator==(const MockCanvas::TranslateData& a,
385+
const MockCanvas::TranslateData& b) {
386+
return a.translation == b.translation;
387+
}
388+
389+
std::ostream& operator<<(std::ostream& os,
390+
const MockCanvas::TranslateData& data) {
391+
return os << data.translation;
392+
}
393+
349394
bool operator==(const MockCanvas::SetMatrixData& a,
350395
const MockCanvas::SetMatrixData& b) {
351396
return a.matrix == b.matrix;

testing/mock_canvas.h

Lines changed: 31 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,18 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
5556
SkMatrix matrix;
5657
};
5758

59+
struct ConcatMatrix44Data {
60+
SkMatrix44 matrix;
61+
};
62+
63+
struct ScaleData {
64+
SkPoint scale;
65+
};
66+
67+
struct TranslateData {
68+
SkPoint translation;
69+
};
70+
5871
struct SetMatrixData {
5972
SkMatrix matrix;
6073
};
@@ -109,6 +122,9 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
109122
SaveLayerData,
110123
RestoreData,
111124
ConcatMatrixData,
125+
ConcatMatrix44Data,
126+
ScaleData,
127+
TranslateData,
112128
SetMatrixData,
113129
DrawRectData,
114130
DrawPathData,
@@ -139,6 +155,9 @@ class MockCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
139155
void willRestore() override;
140156
void didRestore() override {}
141157
void didConcat(const SkMatrix& matrix) override;
158+
void didConcat44(const SkScalar matrix[]) override;
159+
void didScale(SkScalar x, SkScalar y) override;
160+
void didTranslate(SkScalar x, SkScalar y) override;
142161
void didSetMatrix(const SkMatrix& matrix) override;
143162

144163
// Draw and clip operations that we track.
@@ -269,6 +288,18 @@ extern bool operator==(const MockCanvas::ConcatMatrixData& a,
269288
const MockCanvas::ConcatMatrixData& b);
270289
extern std::ostream& operator<<(std::ostream& os,
271290
const MockCanvas::ConcatMatrixData& data);
291+
extern bool operator==(const MockCanvas::ConcatMatrix44Data& a,
292+
const MockCanvas::ConcatMatrix44Data& b);
293+
extern std::ostream& operator<<(std::ostream& os,
294+
const MockCanvas::ConcatMatrix44Data& data);
295+
extern bool operator==(const MockCanvas::ScaleData& a,
296+
const MockCanvas::ScaleData& b);
297+
extern std::ostream& operator<<(std::ostream& os,
298+
const MockCanvas::ScaleData& data);
299+
extern bool operator==(const MockCanvas::TranslateData& a,
300+
const MockCanvas::TranslateData& b);
301+
extern std::ostream& operator<<(std::ostream& os,
302+
const MockCanvas::TranslateData& data);
272303
extern bool operator==(const MockCanvas::SetMatrixData& a,
273304
const MockCanvas::SetMatrixData& b);
274305
extern std::ostream& operator<<(std::ostream& os,

0 commit comments

Comments
 (0)