PaintTest.cpp revision d41344553163085bfcfaf7d5882c6028934f8e3b
1a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com#include "Test.h" 2a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com#include "SkPath.h" 3a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com#include "SkPaint.h" 4a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 5a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com// found and fixed for webkit: mishandling when we hit recursion limit on 6a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com// mostly degenerate cubic flatness test 7a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.comstatic void regression_cubic(skiatest::Reporter* reporter) { 8a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkPath path, stroke; 9a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkPaint paint; 10a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 11d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com path.moveTo(SkFloatToFixed(460.2881309415525f), 12d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(303.250847066498)); 13d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com path.cubicTo(SkFloatToFixed(463.36378422175284), 14d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(302.1169735073363), 15d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(456.32239330810046), 16d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(304.720354932878), 17d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(453.15255460013304), 18d41344553163085bfcfaf7d5882c6028934f8e3breed@android.com SkFloatToFixed(305.788586869862)); 19a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 20a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkRect fillR, strokeR; 21a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com fillR = path.getBounds(); 22a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 23a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com paint.setStyle(SkPaint::kStroke_Style); 24a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com paint.setStrokeWidth(SkIntToScalar(2)); 25a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com paint.getFillPath(path, &stroke); 26a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com strokeR = stroke.getBounds(); 27a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 28a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkRect maxR = fillR; 29a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkScalar miter = SkMaxScalar(SK_Scalar1, paint.getStrokeMiter()); 30a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkScalar inset = paint.getStrokeJoin() == SkPaint::kMiter_Join ? 31a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com SkScalarMul(paint.getStrokeWidth(), miter) : 32a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com paint.getStrokeWidth(); 33a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com maxR.inset(-inset, -inset); 34a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 35a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com // test that our stroke didn't explode 36a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com REPORTER_ASSERT(reporter, maxR.contains(strokeR)); 37a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com} 38a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 39a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.comstatic void TestPaint(skiatest::Reporter* reporter) { 40a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com // TODO add general paint tests 41a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 42a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com // regression tests 43a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com regression_cubic(reporter); 44a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com} 45a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com 46a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.com#include "TestClassDef.h" 47a0f5d1546d499ef0cd7dbfba9a866ae5a27e1541reed@android.comDEFINE_TESTCLASS("Paint", TestPaintClass, TestPaint) 48