, fM0(SkMatrix44::kUninitialized_Constructor)
, fM1(SkMatrix44::kUninitialized_Constructor)
{
- fM0.set(0, 0, -1.1);
- fM0.set(0, 1, 2.1);
- fM0.set(0, 2, -3.1);
- fM0.set(0, 3, 4.1);
- fM0.set(1, 0, 5.1);
- fM0.set(1, 1, -6.1);
- fM0.set(1, 2, 7.1);
- fM0.set(1, 3, 8.1);
- fM0.set(2, 0, -9.1);
- fM0.set(2, 1, 10.1);
- fM0.set(2, 2, 11.1);
- fM0.set(2, 3, -12.1);
- fM0.set(3, 0, -13.1);
- fM0.set(3, 1, 14.1);
- fM0.set(3, 2, -15.1);
- fM0.set(3, 3, 16.1);
+ fM0.setDouble(0, 0, -1.1);
+ fM0.setDouble(0, 1, 2.1);
+ fM0.setDouble(0, 2, -3.1);
+ fM0.setDouble(0, 3, 4.1);
+ fM0.setDouble(1, 0, 5.1);
+ fM0.setDouble(1, 1, -6.1);
+ fM0.setDouble(1, 2, 7.1);
+ fM0.setDouble(1, 3, 8.1);
+ fM0.setDouble(2, 0, -9.1);
+ fM0.setDouble(2, 1, 10.1);
+ fM0.setDouble(2, 2, 11.1);
+ fM0.setDouble(2, 3, -12.1);
+ fM0.setDouble(3, 0, -13.1);
+ fM0.setDouble(3, 1, 14.1);
+ fM0.setDouble(3, 2, -15.1);
+ fM0.setDouble(3, 3, 16.1);
}
protected:
virtual void performTest() {
, fM0(SkMatrix44::kIdentity_Constructor)
, fM1(SkMatrix44::kUninitialized_Constructor)
{
- fM0.set(0, 0, -1.1);
- fM0.set(0, 1, 2.1);
- fM0.set(0, 2, -3.1);
- fM0.set(0, 3, 4.1);
- fM0.set(1, 0, 5.1);
- fM0.set(1, 1, -6.1);
- fM0.set(1, 2, 7.1);
- fM0.set(1, 3, 8.1);
- fM0.set(2, 0, -9.1);
- fM0.set(2, 1, 10.1);
- fM0.set(2, 2, 11.1);
- fM0.set(2, 3, -12.1);
+ fM0.setDouble(0, 0, -1.1);
+ fM0.setDouble(0, 1, 2.1);
+ fM0.setDouble(0, 2, -3.1);
+ fM0.setDouble(0, 3, 4.1);
+ fM0.setDouble(1, 0, 5.1);
+ fM0.setDouble(1, 1, -6.1);
+ fM0.setDouble(1, 2, 7.1);
+ fM0.setDouble(1, 3, 8.1);
+ fM0.setDouble(2, 0, -9.1);
+ fM0.setDouble(2, 1, 10.1);
+ fM0.setDouble(2, 2, 11.1);
+ fM0.setDouble(2, 3, -12.1);
// bottom row (perspective component) remains (0, 0, 0, 1).
}
protected:
, fM0(SkMatrix44::kIdentity_Constructor)
, fM1(SkMatrix44::kUninitialized_Constructor)
{
- fM0.set(0, 0, -1.1);
- fM0.set(0, 3, 4.1);
+ fM0.setDouble(0, 0, -1.1);
+ fM0.setDouble(0, 3, 4.1);
- fM0.set(1, 1, -6.1);
- fM0.set(1, 3, 8.1);
+ fM0.setDouble(1, 1, -6.1);
+ fM0.setDouble(1, 3, 8.1);
- fM0.set(2, 2, 11.1);
- fM0.set(2, 3, -12.1);
+ fM0.setDouble(2, 2, 11.1);
+ fM0.setDouble(2, 3, -12.1);
}
protected:
virtual void performTest() {
, fM0(SkMatrix44::kIdentity_Constructor)
, fM1(SkMatrix44::kUninitialized_Constructor)
{
- fM0.set(0, 3, 4.1);
- fM0.set(1, 3, 8.1);
- fM0.set(2, 3, -12.1);
+ fM0.setDouble(0, 3, 4.1);
+ fM0.setDouble(1, 3, 8.1);
+ fM0.setDouble(2, 3, -12.1);
}
protected:
virtual void performTest() {
#define sk_float_log(x) logf(x)
#endif
+#define sk_float_round(x) sk_float_floor((x) + 0.5f)
+
// can't find log2f on android, but maybe that just a tool bug?
#ifdef SK_BUILD_FOR_ANDROID
static inline float sk_float_log2(float x) {
double invYScale = 1 / fMat[1][1];
double invZScale = 1 / fMat[2][2];
- inverse->fMat[0][0] = invXScale;
+ inverse->fMat[0][0] = SkDoubleToMScalar(invXScale);
inverse->fMat[0][1] = 0;
inverse->fMat[0][2] = 0;
inverse->fMat[0][3] = 0;
inverse->fMat[1][0] = 0;
- inverse->fMat[1][1] = invYScale;
+ inverse->fMat[1][1] = SkDoubleToMScalar(invYScale);
inverse->fMat[1][2] = 0;
inverse->fMat[1][3] = 0;
inverse->fMat[2][0] = 0;
inverse->fMat[2][1] = 0;
- inverse->fMat[2][2] = invZScale;
+ inverse->fMat[2][2] = SkDoubleToMScalar(invZScale);
inverse->fMat[2][3] = 0;
- inverse->fMat[3][0] = -fMat[3][0] * invXScale;
- inverse->fMat[3][1] = -fMat[3][1] * invYScale;
- inverse->fMat[3][2] = -fMat[3][2] * invZScale;
+ inverse->fMat[3][0] = SkDoubleToMScalar(-fMat[3][0] * invXScale);
+ inverse->fMat[3][1] = SkDoubleToMScalar(-fMat[3][1] * invYScale);
+ inverse->fMat[3][2] = SkDoubleToMScalar(-fMat[3][2] * invZScale);
inverse->fMat[3][3] = 1;
inverse->setTypeMask(this->getType());
SkMScalar dstA[4], dstB[4];
for (int i = 0; i < 4; ++i) {
- dstA[i] = 123456789;
- dstB[i] = 987654321;
+ dstA[i] = SkDoubleToMScalar(123456789);
+ dstB[i] = SkDoubleToMScalar(987654321);
}
mat.map2(src2, 1, dstA);
static void test_has_perspective(skiatest::Reporter* reporter) {
SkMatrix44 transform(SkMatrix44::kIdentity_Constructor);
- transform.set(3, 2, -0.1);
+ transform.setDouble(3, 2, -0.1);
REPORTER_ASSERT(reporter, transform.hasPerspective());
transform.reset();
REPORTER_ASSERT(reporter, !transform.hasPerspective());
- transform.set(3, 0, -1.0);
+ transform.setDouble(3, 0, -1.0);
REPORTER_ASSERT(reporter, transform.hasPerspective());
transform.reset();
- transform.set(3, 1, -1.0);
+ transform.setDouble(3, 1, -1.0);
REPORTER_ASSERT(reporter, transform.hasPerspective());
transform.reset();
- transform.set(3, 2, -0.3);
+ transform.setDouble(3, 2, -0.3);
REPORTER_ASSERT(reporter, transform.hasPerspective());
transform.reset();
- transform.set(3, 3, 0.5);
+ transform.setDouble(3, 3, 0.5);
REPORTER_ASSERT(reporter, transform.hasPerspective());
-
+
transform.reset();
- transform.set(3, 3, 0.0);
+ transform.setDouble(3, 3, 0.0);
REPORTER_ASSERT(reporter, transform.hasPerspective());
}
// Perspective cases.
transform.setIdentity();
- transform.set(3, 2, -0.1); // Perspective depth 10
+ transform.setDouble(3, 2, -0.1); // Perspective depth 10
transform2.setRotateDegreesAbout(0.0, 1.0, 0.0, 45.0);
transform.preConcat(transform2);
test(false, reporter, transform);
transform.setIdentity();
- transform.set(3, 2, -0.1); // Perspective depth 10
+ transform.setDouble(3, 2, -0.1); // Perspective depth 10
transform2.setRotateDegreesAbout(0.0, 0.0, 1.0, 90.0);
transform.preConcat(transform2);
test(true, reporter, transform);
// test tiny-valued matrix inverse
mat.reset();
- mat.setScale(1.0e-12, 1.0e-12, 1.0e-12);
+ auto v = SkDoubleToMScalar(1.0e-12);
+ mat.setScale(v,v,v);
rot.setRotateDegreesAbout(0, 0, -1, 90);
mat.postConcat(rot);
- mat.postTranslate(1.0e-12, 1.0e-12, 1.0e-12);
+ mat.postTranslate(v,v,v);
REPORTER_ASSERT(reporter, mat.invert(NULL));
mat.invert(&inverse);
iden1.setConcat(mat, inverse);
// test mixed-valued matrix inverse
mat.reset();
- mat.setScale(1.0e-10, 3.0, 1.0e+10);
+ mat.setScale(SkDoubleToMScalar(1.0e-10),
+ SkDoubleToMScalar(3.0),
+ SkDoubleToMScalar(1.0e+10));
rot.setRotateDegreesAbout(0, 0, -1, 90);
mat.postConcat(rot);
- mat.postTranslate(1.0e+10, 3.0, 1.0e-10);
+ mat.postTranslate(SkDoubleToMScalar(1.0e+10),
+ SkDoubleToMScalar(3.0),
+ SkDoubleToMScalar(1.0e-10));
REPORTER_ASSERT(reporter, mat.invert(NULL));
mat.invert(&inverse);
iden1.setConcat(mat, inverse);