Created
March 15, 2017 20:42
-
-
Save HalCanary/90226463c98ac96721b4aa085a123ecc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "sk_types.h" | |
void concat_matrices(sk_matrix_t* dst, | |
const sk_matrix_t* matrixU, | |
const sk_matrix_t* matrixV) { | |
const float* u = matrixU->mat; | |
const float* v = matrixV->mat; | |
sk_matrix_t result = {{ | |
u[0] * v[0] + u[1] * v[3] + u[2] * v[6], | |
u[0] * v[1] + u[1] * v[4] + u[2] * v[7], | |
u[0] * v[2] + u[1] * v[5] + u[2] * v[8], | |
u[3] * v[0] + u[4] * v[3] + u[5] * v[6], | |
u[3] * v[1] + u[4] * v[4] + u[5] * v[7], | |
u[3] * v[2] + u[4] * v[5] + u[5] * v[8], | |
u[6] * v[0] + u[7] * v[3] + u[8] * v[6], | |
u[6] * v[1] + u[7] * v[4] + u[8] * v[7], | |
u[6] * v[2] + u[7] * v[5] + u[8] * v[8] | |
}}; | |
*dst = result; | |
} | |
static bool eq(const SkMatrix& sm, const sk_matrix_t& cm) { | |
sk_matrix_t tmp; | |
sm.get9(tmp.mat); | |
static_assert(9 *sizeof(float) == sizeof(tmp.mat), ""); | |
return 0 == memcmp(tmp.mat, cm.mat, sizeof(tmp.mat)); | |
} | |
DEF_TEST(HAL, reporter) { | |
SkRandom r(99); | |
sk_matrix_t a = {{r.nextF(), r.nextF(), r.nextF(), | |
r.nextF(), r.nextF(), r.nextF(), | |
r.nextF(), r.nextF(), r.nextF()}}; | |
sk_matrix_t b = {{r.nextF(), r.nextF(), r.nextF(), | |
r.nextF(), r.nextF(), r.nextF(), | |
r.nextF(), r.nextF(), r.nextF()}}; | |
sk_matrix_t ab, ba; | |
concat_matrices(&ab, &a, &b); | |
concat_matrices(&ba, &b, &a); | |
SkMatrix u, v, uv, vu; | |
u.set9(a.mat); | |
v.set9(b.mat); | |
uv = SkMatrix::Concat(u, v); | |
vu = SkMatrix::Concat(v, u); | |
REPORTER_ASSERT(reporter, eq(u, a)); | |
REPORTER_ASSERT(reporter, eq(v, b)); | |
REPORTER_ASSERT(reporter, eq(uv, ab)); | |
REPORTER_ASSERT(reporter, eq(vu, ba)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment