Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: tests/BlurTest.cpp

Issue 1821533002: guard rasterizer and drawlooper setters (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update android sdk Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBlurMask.h" 8 #include "SkBlurMask.h"
9 #include "SkBlurMaskFilter.h" 9 #include "SkBlurMaskFilter.h"
10 #include "SkBlurDrawLooper.h" 10 #include "SkBlurDrawLooper.h"
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 if (kNormal_SkBlurStyle != style) { 411 if (kNormal_SkBlurStyle != style) {
412 return; // blurdrawlooper only supports normal 412 return; // blurdrawlooper only supports normal
413 } 413 }
414 414
415 const SkColor color = 0xFF335577; 415 const SkColor color = 0xFF335577;
416 const SkScalar dx = 10; 416 const SkScalar dx = 10;
417 const SkScalar dy = -5; 417 const SkScalar dy = -5;
418 const SkBlurQuality quality = blurMaskFilterFlags_as_quality(blurMaskFilterF lags); 418 const SkBlurQuality quality = blurMaskFilterFlags_as_quality(blurMaskFilterF lags);
419 uint32_t flags = blurMaskFilterFlags_to_blurDrawLooperFlags(blurMaskFilterFl ags); 419 uint32_t flags = blurMaskFilterFlags_to_blurDrawLooperFlags(blurMaskFilterFl ags);
420 420
421 SkAutoTUnref<SkDrawLooper> lp(SkBlurDrawLooper::Create(color, sigma, dx, dy, flags)); 421 sk_sp<SkDrawLooper> lp(SkBlurDrawLooper::Make(color, sigma, dx, dy, flags));
422 422
423 const bool expectSuccess = sigma > 0 && 423 const bool expectSuccess = sigma > 0 &&
424 0 == (flags & SkBlurDrawLooper::kIgnoreTransform_ BlurFlag); 424 0 == (flags & SkBlurDrawLooper::kIgnoreTransform_ BlurFlag);
425 425
426 if (nullptr == lp.get()) { 426 if (nullptr == lp) {
427 REPORTER_ASSERT(reporter, sigma <= 0); 427 REPORTER_ASSERT(reporter, sigma <= 0);
428 } else { 428 } else {
429 SkDrawLooper::BlurShadowRec rec; 429 SkDrawLooper::BlurShadowRec rec;
430 bool success = lp->asABlurShadow(&rec); 430 bool success = lp->asABlurShadow(&rec);
431 REPORTER_ASSERT(reporter, success == expectSuccess); 431 REPORTER_ASSERT(reporter, success == expectSuccess);
432 if (success) { 432 if (success) {
433 REPORTER_ASSERT(reporter, rec.fSigma == sigma); 433 REPORTER_ASSERT(reporter, rec.fSigma == sigma);
434 REPORTER_ASSERT(reporter, rec.fOffset.x() == dx); 434 REPORTER_ASSERT(reporter, rec.fOffset.x() == dx);
435 REPORTER_ASSERT(reporter, rec.fOffset.y() == dy); 435 REPORTER_ASSERT(reporter, rec.fOffset.y() == dy);
436 REPORTER_ASSERT(reporter, rec.fColor == color); 436 REPORTER_ASSERT(reporter, rec.fColor == color);
437 REPORTER_ASSERT(reporter, rec.fStyle == style); 437 REPORTER_ASSERT(reporter, rec.fStyle == style);
438 REPORTER_ASSERT(reporter, rec.fQuality == quality); 438 REPORTER_ASSERT(reporter, rec.fQuality == quality);
439 } 439 }
440 } 440 }
441 } 441 }
442 442
443 static void test_delete_looper(skiatest::Reporter* reporter, SkDrawLooper* lp, S kScalar sigma, 443 static void test_looper(skiatest::Reporter* reporter, sk_sp<SkDrawLooper> lp, Sk Scalar sigma,
444 SkBlurStyle style, SkBlurQuality quality, bool ex pectSuccess) { 444 SkBlurStyle style, SkBlurQuality quality, bool expectSuc cess) {
445 SkDrawLooper::BlurShadowRec rec; 445 SkDrawLooper::BlurShadowRec rec;
446 bool success = lp->asABlurShadow(&rec); 446 bool success = lp->asABlurShadow(&rec);
447 REPORTER_ASSERT(reporter, success == expectSuccess); 447 REPORTER_ASSERT(reporter, success == expectSuccess);
448 if (success != expectSuccess) { 448 if (success != expectSuccess) {
449 lp->asABlurShadow(&rec); 449 lp->asABlurShadow(&rec);
450 } 450 }
451 if (success) { 451 if (success) {
452 REPORTER_ASSERT(reporter, rec.fSigma == sigma); 452 REPORTER_ASSERT(reporter, rec.fSigma == sigma);
453 REPORTER_ASSERT(reporter, rec.fStyle == style); 453 REPORTER_ASSERT(reporter, rec.fStyle == style);
454 REPORTER_ASSERT(reporter, rec.fQuality == quality); 454 REPORTER_ASSERT(reporter, rec.fQuality == quality);
455 } 455 }
456 lp->unref();
457 } 456 }
458 457
459 static void make_noop_layer(SkLayerDrawLooper::Builder* builder) { 458 static void make_noop_layer(SkLayerDrawLooper::Builder* builder) {
460 SkLayerDrawLooper::LayerInfo info; 459 SkLayerDrawLooper::LayerInfo info;
461 460
462 info.fPaintBits = 0; 461 info.fPaintBits = 0;
463 info.fColorMode = SkXfermode::kDst_Mode; 462 info.fColorMode = SkXfermode::kDst_Mode;
464 builder->addLayer(info); 463 builder->addLayer(info);
465 } 464 }
466 465
467 static void make_blur_layer(SkLayerDrawLooper::Builder* builder, SkMaskFilter* m f) { 466 static void make_blur_layer(SkLayerDrawLooper::Builder* builder, SkMaskFilter* m f) {
468 SkLayerDrawLooper::LayerInfo info; 467 SkLayerDrawLooper::LayerInfo info;
469 468
470 info.fPaintBits = SkLayerDrawLooper::kMaskFilter_Bit; 469 info.fPaintBits = SkLayerDrawLooper::kMaskFilter_Bit;
471 info.fColorMode = SkXfermode::kSrc_Mode; 470 info.fColorMode = SkXfermode::kSrc_Mode;
472 SkPaint* paint = builder->addLayer(info); 471 SkPaint* paint = builder->addLayer(info);
473 paint->setMaskFilter(mf); 472 paint->setMaskFilter(mf);
474 } 473 }
475 474
476 static void test_layerDrawLooper(skiatest::Reporter* reporter, SkMaskFilter* mf, SkScalar sigma, 475 static void test_layerDrawLooper(skiatest::Reporter* reporter, SkMaskFilter* mf, SkScalar sigma,
477 SkBlurStyle style, SkBlurQuality quality, bool expectSuccess) { 476 SkBlurStyle style, SkBlurQuality quality, bool expectSuccess) {
478 477
479 SkLayerDrawLooper::LayerInfo info; 478 SkLayerDrawLooper::LayerInfo info;
480 SkLayerDrawLooper::Builder builder; 479 SkLayerDrawLooper::Builder builder;
481 480
482 // 1 layer is too few 481 // 1 layer is too few
483 make_noop_layer(&builder); 482 make_noop_layer(&builder);
484 test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false); 483 test_looper(reporter, builder.detach(), sigma, style, quality, false);
485 484
486 // 2 layers is good, but need blur 485 // 2 layers is good, but need blur
487 make_noop_layer(&builder); 486 make_noop_layer(&builder);
488 make_noop_layer(&builder); 487 make_noop_layer(&builder);
489 test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false); 488 test_looper(reporter, builder.detach(), sigma, style, quality, false);
490 489
491 // 2 layers is just right 490 // 2 layers is just right
492 make_noop_layer(&builder); 491 make_noop_layer(&builder);
493 make_blur_layer(&builder, mf); 492 make_blur_layer(&builder, mf);
494 test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, expectSuccess); 493 test_looper(reporter, builder.detach(), sigma, style, quality, expectSuccess );
495 494
496 // 3 layers is too many 495 // 3 layers is too many
497 make_noop_layer(&builder); 496 make_noop_layer(&builder);
498 make_blur_layer(&builder, mf); 497 make_blur_layer(&builder, mf);
499 make_noop_layer(&builder); 498 make_noop_layer(&builder);
500 test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false); 499 test_looper(reporter, builder.detach(), sigma, style, quality, false);
501 } 500 }
502 501
503 DEF_TEST(BlurAsABlur, reporter) { 502 DEF_TEST(BlurAsABlur, reporter) {
504 const SkBlurStyle styles[] = { 503 const SkBlurStyle styles[] = {
505 kNormal_SkBlurStyle, kSolid_SkBlurStyle, kOuter_SkBlurStyle, kInner_SkBl urStyle 504 kNormal_SkBlurStyle, kSolid_SkBlurStyle, kOuter_SkBlurStyle, kInner_SkBl urStyle
506 }; 505 };
507 const SkScalar sigmas[] = { 506 const SkScalar sigmas[] = {
508 // values <= 0 should not success for a blur 507 // values <= 0 should not success for a blur
509 -1, 0, 0.5f, 2 508 -1, 0, 0.5f, 2
510 }; 509 };
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 572
574 SkPaint p; 573 SkPaint p;
575 p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, 0.01f))->unref (); 574 p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, 0.01f))->unref ();
576 575
577 canvas->drawRRect(rr, p); 576 canvas->drawRRect(rr, p);
578 } 577 }
579 578
580 #endif 579 #endif
581 580
582 //////////////////////////////////////////////////////////////////////////////// /////////// 581 //////////////////////////////////////////////////////////////////////////////// ///////////
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698