зеркало из https://github.com/mozilla/moz-skia.git
add explicit mapScalars and mapMScalars entry-points, instead of just map()
git-svn-id: http://skia.googlecode.com/svn/trunk@6373 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
Родитель
20d44677a1
Коммит
1ea95be560
|
@ -186,9 +186,29 @@ public:
|
||||||
/** Apply the matrix to the src vector, returning the new vector in dst.
|
/** Apply the matrix to the src vector, returning the new vector in dst.
|
||||||
It is legal for src and dst to point to the same memory.
|
It is legal for src and dst to point to the same memory.
|
||||||
*/
|
*/
|
||||||
void map(const SkScalar src[4], SkScalar dst[4]) const;
|
void mapScalars(const SkScalar src[4], SkScalar dst[4]) const;
|
||||||
|
void mapScalars(SkScalar vec[4]) const {
|
||||||
|
this->mapScalars(vec, vec);
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED: call mapScalars()
|
||||||
|
void map(const SkScalar src[4], SkScalar dst[4]) const {
|
||||||
|
this->mapScalars(src, dst);
|
||||||
|
}
|
||||||
|
// DEPRECATED: call mapScalars()
|
||||||
void map(SkScalar vec[4]) const {
|
void map(SkScalar vec[4]) const {
|
||||||
this->map(vec, vec);
|
this->mapScalars(vec, vec);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SK_MSCALAR_IS_DOUBLE
|
||||||
|
void mapMScalars(SkMScalar src[4], SkMScalar dst[4]) const;
|
||||||
|
#else
|
||||||
|
void mapMScalars(SkMScalar src[4], SkMScalar dst[4]) const {
|
||||||
|
this->mapScalars(src, dst);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
void mapMScalars(SkMScalar vec[4]) const {
|
||||||
|
this->mapMScalars(vec, vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
friend SkVector4 operator*(const SkMatrix44& m, const SkVector4& src) {
|
friend SkVector4 operator*(const SkMatrix44& m, const SkVector4& src) {
|
||||||
|
|
|
@ -323,7 +323,7 @@ bool SkMatrix44::invert(SkMatrix44* inverse) const {
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void SkMatrix44::map(const SkScalar src[4], SkScalar dst[4]) const {
|
void SkMatrix44::mapScalars(const SkScalar src[4], SkScalar dst[4]) const {
|
||||||
SkScalar result[4];
|
SkScalar result[4];
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
SkMScalar value = 0;
|
SkMScalar value = 0;
|
||||||
|
@ -335,6 +335,20 @@ void SkMatrix44::map(const SkScalar src[4], SkScalar dst[4]) const {
|
||||||
memcpy(dst, result, sizeof(result));
|
memcpy(dst, result, sizeof(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef SK_MSCALAR_IS_DOUBLE
|
||||||
|
void SkMatrix44::mapMScalars(const SkMScalar src[4], SkMScalar dst[4]) const {
|
||||||
|
SkMScalar result[4];
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
SkMScalar value = 0;
|
||||||
|
for (int j = 0; j < 4; j++) {
|
||||||
|
value += fMat[j][i] * src[j];
|
||||||
|
}
|
||||||
|
result[i] = SkMScalarToScalar(value);
|
||||||
|
}
|
||||||
|
memcpy(dst, result, sizeof(result));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void SkMatrix44::dump() const {
|
void SkMatrix44::dump() const {
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void test_concat(skiatest::Reporter* reporter) {
|
||||||
d.preConcat(b);
|
d.preConcat(b);
|
||||||
REPORTER_ASSERT(reporter, d == c);
|
REPORTER_ASSERT(reporter, d == c);
|
||||||
|
|
||||||
c.map(src, dst); c.map(src + 4, dst + 4);
|
c.mapScalars(src, dst); c.mapScalars(src + 4, dst + 4);
|
||||||
for (i = 0; i < 3; ++i) {
|
for (i = 0; i < 3; ++i) {
|
||||||
REPORTER_ASSERT(reporter, 10 == dst[i]);
|
REPORTER_ASSERT(reporter, 10 == dst[i]);
|
||||||
REPORTER_ASSERT(reporter, 12 == dst[i + 4]);
|
REPORTER_ASSERT(reporter, 12 == dst[i + 4]);
|
||||||
|
@ -107,7 +107,7 @@ static void test_concat(skiatest::Reporter* reporter) {
|
||||||
d.postConcat(b);
|
d.postConcat(b);
|
||||||
REPORTER_ASSERT(reporter, d == c);
|
REPORTER_ASSERT(reporter, d == c);
|
||||||
|
|
||||||
c.map(src, dst); c.map(src + 4, dst + 4);
|
c.mapScalars(src, dst); c.mapScalars(src + 4, dst + 4);
|
||||||
for (i = 0; i < 3; ++i) {
|
for (i = 0; i < 3; ++i) {
|
||||||
REPORTER_ASSERT(reporter, 20 == dst[i]);
|
REPORTER_ASSERT(reporter, 20 == dst[i]);
|
||||||
REPORTER_ASSERT(reporter, 22 == dst[i + 4]);
|
REPORTER_ASSERT(reporter, 22 == dst[i + 4]);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче