add asScalars() to document when we want to treat SkPoint or SkRect as an array

of SkScalars.
Review URL: https://codereview.chromium.org/12530010

git-svn-id: http://skia.googlecode.com/svn/trunk@8041 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
reed@google.com 2013-03-08 16:07:54 +00:00
Родитель a224072836
Коммит c7d0ea3cd3
3 изменённых файлов: 24 добавлений и 0 удалений

Просмотреть файл

@ -504,6 +504,11 @@ struct SK_API SkPoint {
fY = -tmp;
}
}
/**
* cast-safe way to treat the point as an array of (2) SkScalars.
*/
const SkScalar* asScalars() const { return &fX; }
};
typedef SkPoint SkVector;

Просмотреть файл

@ -769,6 +769,11 @@ struct SK_API SkRect {
* other. When this returns, left <= right && top <= bottom
*/
void sort();
/**
* cast-safe way to treat the rect as an array of (4) SkScalars.
*/
const SkScalar* asScalars() const { return &fLeft; }
};
#endif

Просмотреть файл

@ -8,8 +8,20 @@
// Unit tests for src/core/SkPoint.cpp and its header
#include "SkPoint.h"
#include "SkRect.h"
#include "Test.h"
static void test_casts(skiatest::Reporter* reporter) {
SkPoint p = { 0, 0 };
SkRect r = { 0, 0, 0, 0 };
const SkScalar* pPtr = SkTCast<const SkScalar*>(&p);
const SkScalar* rPtr = SkTCast<const SkScalar*>(&r);
REPORTER_ASSERT(reporter, p.asScalars() == pPtr);
REPORTER_ASSERT(reporter, r.asScalars() == rPtr);
}
// Tests that SkPoint::length() and SkPoint::Length() both return
// approximately expectedLength for this (x,y).
static void test_length(skiatest::Reporter* reporter, SkScalar x, SkScalar y,
@ -37,6 +49,8 @@ static void test_Normalize(skiatest::Reporter* reporter,
}
static void PointTest(skiatest::Reporter* reporter) {
test_casts(reporter);
test_length(reporter, SkIntToScalar(3), SkIntToScalar(4), SkIntToScalar(5));
test_length(reporter, SkFloatToScalar(0.6f), SkFloatToScalar(0.8f),
SK_Scalar1);