Make converting from 4x4 to 3x3 explicit
Change-Id: I4d190d6831cb517d5e9f22b3f872013367bddc08
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264856
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/bench/GameBench.cpp b/bench/GameBench.cpp
index 036fed0..e2cca8e 100644
--- a/bench/GameBench.cpp
+++ b/bench/GameBench.cpp
@@ -367,7 +367,7 @@
case kScale_Type: canvas->scale(1.0001f, 0.9999f); break;
case k2x3_Type: canvas->concat(m); break;
case k3x3_Type: canvas->concat(m); break;
- case k4x4_Type: canvas->concat(m4); break;
+ case k4x4_Type: canvas->experimental_concat44(m4); break;
}
}
canvas->restore();
diff --git a/gm/3d.cpp b/gm/3d.cpp
index 3bbed2d..efdb080 100644
--- a/gm/3d.cpp
+++ b/gm/3d.cpp
@@ -51,7 +51,7 @@
SkMatrix44 m;
m.setRotateDegreesAbout(0, 1, 0, 30);
- canvas->concat(make_ctm(info, m, {300, 300}));
+ canvas->experimental_concat44(make_ctm(info, m, {300, 300}));
canvas->translate(150, 150);
SkPaint paint;
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 43b53f4..fee4cae 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -880,7 +880,7 @@
*/
void concat(const SkMatrix& matrix);
- void experimental_concat(const SkMatrix44&);
+ void experimental_concat44(const SkMatrix44&);
void experimental_concat44(const SkScalar[]); // column-major
/** Replaces SkMatrix with matrix.
diff --git a/include/core/SkMatrix44.h b/include/core/SkMatrix44.h
index 94fcdf3..4290c28 100644
--- a/include/core/SkMatrix44.h
+++ b/include/core/SkMatrix44.h
@@ -188,6 +188,8 @@
*/
SkMatrix44(const SkMatrix&);
SkMatrix44& operator=(const SkMatrix& src);
+
+ // TODO: make this explicit (will need to guard that change to update chrome, etc.
operator SkMatrix() const;
/**
diff --git a/modules/skottie/gm/3dgm.cpp b/modules/skottie/gm/3dgm.cpp
index 22a9357..f5b8ce1 100644
--- a/modules/skottie/gm/3dgm.cpp
+++ b/modules/skottie/gm/3dgm.cpp
@@ -33,7 +33,7 @@
class SkMetaData;
static SkMatrix operator*(const SkMatrix& a, const SkMatrix& b) {
- SkMatrix44 c;
+ SkMatrix c;
c.setConcat(a, b);
return c;
}
diff --git a/modules/sksg/include/SkSGTransform.h b/modules/sksg/include/SkSGTransform.h
index 90aaecc..da6b3c5 100644
--- a/modules/sksg/include/SkSGTransform.h
+++ b/modules/sksg/include/SkSGTransform.h
@@ -70,7 +70,7 @@
bool is44() const override { return std::is_same<T, SkMatrix44>::value; }
- SkMatrix asMatrix () const override { return fMatrix; }
+ SkMatrix asMatrix () const override { return SkMatrix(fMatrix); }
SkMatrix44 asMatrix44() const override { return fMatrix; }
private:
diff --git a/modules/sksg/src/SkSGTransform.cpp b/modules/sksg/src/SkSGTransform.cpp
index a2b79f1..9131dc0 100644
--- a/modules/sksg/src/SkSGTransform.cpp
+++ b/modules/sksg/src/SkSGTransform.cpp
@@ -47,7 +47,7 @@
SkMatrix asMatrix() const override {
SkASSERT(!this->hasInval());
- return fComposed;
+ return SkMatrix(fComposed);
}
SkMatrix44 asMatrix44() const override {
@@ -93,7 +93,7 @@
SkMatrix asMatrix() const override {
SkASSERT(!this->hasInval());
- return fInverted;
+ return SkMatrix(fInverted);
}
SkMatrix44 asMatrix44() const override {
diff --git a/samplecode/Sample3D.cpp b/samplecode/Sample3D.cpp
index df3fab1..1410fb6 100644
--- a/samplecode/Sample3D.cpp
+++ b/samplecode/Sample3D.cpp
@@ -227,7 +227,7 @@
SkMatrix44 trans;
trans.setTranslate(200, 200, 0); // center of the rotation
- canvas->concat(trans * fRot * m * inv(trans));
+ canvas->experimental_concat44(trans * fRot * m * inv(trans));
if (!front(canvas->experimental_getLocalToDevice())) {
return;
diff --git a/samplecode/SampleClip.cpp b/samplecode/SampleClip.cpp
index a25bd54..6b037c7 100644
--- a/samplecode/SampleClip.cpp
+++ b/samplecode/SampleClip.cpp
@@ -557,7 +557,7 @@
if (fShowUnclipped) {
canvas->save();
- canvas->concat(mx);
+ canvas->experimental_concat44(mx);
paint.setAlphaf(0.33f);
canvas->drawPath(fPath, paint);
paint.setAlphaf(1.f);
@@ -567,16 +567,16 @@
SkColor planeColor = SK_ColorBLUE;
SkPath clippedPath, *path = &fPath;
- if (SkPathPriv::PerspectiveClip(fPath, mx, &clippedPath)) {
+ if (SkPathPriv::PerspectiveClip(fPath, SkMatrix(mx), &clippedPath)) {
path = &clippedPath;
planeColor = SK_ColorRED;
}
canvas->save();
- canvas->concat(mx);
+ canvas->experimental_concat44(mx);
canvas->drawPath(*path, paint);
canvas->restore();
- SkHalfPlane hpw = half_plane_w0(mx);
+ SkHalfPlane hpw = half_plane_w0(SkMatrix(mx));
draw_halfplane(canvas, hpw, planeColor);
}
};
@@ -615,7 +615,7 @@
SkPaint paint;
canvas->save();
- canvas->concat(this->get44({0, 0, 300, 300}));
+ canvas->experimental_concat44(this->get44({0, 0, 300, 300}));
const SkPoint* tex = nullptr;
const SkColor* col = nullptr;
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 3f49f0c..f9d9621 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -736,7 +736,7 @@
int SkCanvas::experimental_saveCamera(const SkMatrix44& projection, const SkMatrix44& camera) {
// TODO: add a virtual for this, and update clients (e.g. chrome)
int n = this->save();
- this->concat(projection * camera);
+ this->experimental_concat44(projection * camera);
fCameraStack.push_back(CameraRec(fMCRec, camera));
return n;
}
@@ -1516,7 +1516,7 @@
this->didConcat44(m);
}
-void SkCanvas::experimental_concat(const SkMatrix44& m) {
+void SkCanvas::experimental_concat44(const SkMatrix44& m) {
this->experimental_concat44(m.values());
}
diff --git a/src/gpu/gradients/generated/GrLinearGradientLayout.cpp b/src/gpu/gradients/generated/GrLinearGradientLayout.cpp
index b4da70d..2d5ae3a 100644
--- a/src/gpu/gradients/generated/GrLinearGradientLayout.cpp
+++ b/src/gpu/gradients/generated/GrLinearGradientLayout.cpp
@@ -85,5 +85,5 @@
return nullptr;
}
matrix.postConcat(grad.getGradientMatrix());
- return std::unique_ptr<GrFragmentProcessor>(new GrLinearGradientLayout(matrix));
+ return std::unique_ptr<GrFragmentProcessor>(new GrLinearGradientLayout(SkMatrix(matrix)));
}
diff --git a/src/gpu/gradients/generated/GrLinearGradientLayout.h b/src/gpu/gradients/generated/GrLinearGradientLayout.h
index 1f711d9..c94cc79 100644
--- a/src/gpu/gradients/generated/GrLinearGradientLayout.h
+++ b/src/gpu/gradients/generated/GrLinearGradientLayout.h
@@ -31,7 +31,7 @@
GrLinearGradientLayout(SkMatrix44 gradientMatrix)
: INHERITED(kGrLinearGradientLayout_ClassID,
(OptimizationFlags)kPreservesOpaqueInput_OptimizationFlag)
- , fCoordTransform0(gradientMatrix)
+ , fCoordTransform0(SkMatrix(gradientMatrix))
, gradientMatrix(gradientMatrix) {
this->addCoordTransform(&fCoordTransform0);
}
diff --git a/src/gpu/gradients/generated/GrRadialGradientLayout.h b/src/gpu/gradients/generated/GrRadialGradientLayout.h
index 17a1b49..efbc014 100644
--- a/src/gpu/gradients/generated/GrRadialGradientLayout.h
+++ b/src/gpu/gradients/generated/GrRadialGradientLayout.h
@@ -31,7 +31,7 @@
GrRadialGradientLayout(SkMatrix44 gradientMatrix)
: INHERITED(kGrRadialGradientLayout_ClassID,
(OptimizationFlags)kPreservesOpaqueInput_OptimizationFlag)
- , fCoordTransform0(gradientMatrix)
+ , fCoordTransform0(SkMatrix(gradientMatrix))
, gradientMatrix(gradientMatrix) {
this->addCoordTransform(&fCoordTransform0);
}
diff --git a/src/gpu/gradients/generated/GrSweepGradientLayout.h b/src/gpu/gradients/generated/GrSweepGradientLayout.h
index 7703663..c35890a 100644
--- a/src/gpu/gradients/generated/GrSweepGradientLayout.h
+++ b/src/gpu/gradients/generated/GrSweepGradientLayout.h
@@ -33,7 +33,7 @@
GrSweepGradientLayout(SkMatrix44 gradientMatrix, float bias, float scale)
: INHERITED(kGrSweepGradientLayout_ClassID,
(OptimizationFlags)kPreservesOpaqueInput_OptimizationFlag)
- , fCoordTransform0(gradientMatrix)
+ , fCoordTransform0(SkMatrix(gradientMatrix))
, gradientMatrix(gradientMatrix)
, bias(bias)
, scale(scale) {
diff --git a/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h b/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
index 878b8d2..740427b 100644
--- a/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
+++ b/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
@@ -42,7 +42,7 @@
bool isNativelyFocal, SkPoint focalParams)
: INHERITED(kGrTwoPointConicalGradientLayout_ClassID,
(OptimizationFlags)kNone_OptimizationFlags)
- , fCoordTransform0(gradientMatrix)
+ , fCoordTransform0(SkMatrix(gradientMatrix))
, gradientMatrix(gradientMatrix)
, type(type)
, isRadiusIncreasing(isRadiusIncreasing)
diff --git a/tests/Matrix44Test.cpp b/tests/Matrix44Test.cpp
index 3b73acd..e24decc 100644
--- a/tests/Matrix44Test.cpp
+++ b/tests/Matrix44Test.cpp
@@ -261,7 +261,7 @@
for (int i = 0; i < 9; ++i) {
rot.setRotateDegreesAbout(0, 0, -1, SkIntToScalar(common_angles[i]));
- SkMatrix rot3x3 = rot;
+ SkMatrix rot3x3 = SkMatrix(rot);
REPORTER_ASSERT(reporter, rot3x3.rectStaysRect());
}
}
@@ -535,7 +535,7 @@
SkMatrix44 a44;
a44.setRowMajor(values4x4);
- SkMatrix a33 = a44;
+ SkMatrix a33 = SkMatrix(a44);
SkMatrix expected33;
for (int i = 0; i < 9; i++) expected33[i] = values3x3[i];
REPORTER_ASSERT(reporter, expected33 == a33);