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

Side by Side Diff: samplecode/SampleFilterFuzz.cpp

Issue 1842793002: Switch SkLocalMatrixImageFilter and SkPaintImageFilter over to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: clean up Created 4 years, 8 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 2013 Google Inc. 2 * Copyright 2013 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 #include "SampleCode.h" 7 #include "SampleCode.h"
8 #include "Sk1DPathEffect.h" 8 #include "Sk1DPathEffect.h"
9 #include "Sk2DPathEffect.h" 9 #include "Sk2DPathEffect.h"
10 #include "SkAlphaThresholdFilter.h" 10 #include "SkAlphaThresholdFilter.h"
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 light); 480 light);
481 } 481 }
482 case 2: 482 case 2:
483 default: 483 default:
484 maskFilter = nullptr; 484 maskFilter = nullptr;
485 break; 485 break;
486 } 486 }
487 return maskFilter; 487 return maskFilter;
488 } 488 }
489 489
490 static SkImageFilter* make_image_filter(bool canBeNull = true); 490 static sk_sp<SkImageFilter> make_image_filter(bool canBeNull = true);
491 491
492 static SkPaint make_paint() { 492 static SkPaint make_paint() {
493 SkPaint paint; 493 SkPaint paint;
494 paint.setHinting(make_paint_hinting()); 494 paint.setHinting(make_paint_hinting());
495 paint.setAntiAlias(make_bool()); 495 paint.setAntiAlias(make_bool());
496 paint.setDither(make_bool()); 496 paint.setDither(make_bool());
497 paint.setLinearText(make_bool()); 497 paint.setLinearText(make_bool());
498 paint.setSubpixelText(make_bool()); 498 paint.setSubpixelText(make_bool());
499 paint.setLCDRenderText(make_bool()); 499 paint.setLCDRenderText(make_bool());
500 paint.setEmbeddedBitmapText(make_bool()); 500 paint.setEmbeddedBitmapText(make_bool());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 paint.setImageFilter(make_image_filter()); 533 paint.setImageFilter(make_image_filter());
534 sk_sp<SkData> data(make_3Dlut(nullptr, make_bool(), make_bool(), make_bool() )); 534 sk_sp<SkData> data(make_3Dlut(nullptr, make_bool(), make_bool(), make_bool() ));
535 paint.setTextAlign(make_paint_align()); 535 paint.setTextAlign(make_paint_align());
536 paint.setTextSize(make_scalar()); 536 paint.setTextSize(make_scalar());
537 paint.setTextScaleX(make_scalar()); 537 paint.setTextScaleX(make_scalar());
538 paint.setTextSkewX(make_scalar()); 538 paint.setTextSkewX(make_scalar());
539 paint.setTextEncoding(make_paint_text_encoding()); 539 paint.setTextEncoding(make_paint_text_encoding());
540 return paint; 540 return paint;
541 } 541 }
542 542
543 static SkImageFilter* make_image_filter(bool canBeNull) { 543 static sk_sp<SkImageFilter> make_image_filter(bool canBeNull) {
544 SkImageFilter* filter = 0; 544 sk_sp<SkImageFilter> filter;
545 545
546 // Add a 1 in 3 chance to get a nullptr input 546 // Add a 1 in 3 chance to get a nullptr input
547 if (canBeNull && (R(3) == 1)) { return filter; } 547 if (canBeNull && (R(3) == 1)) {
548 return filter;
549 }
548 550
549 enum { ALPHA_THRESHOLD, MERGE, COLOR, LUT3D, BLUR, MAGNIFIER, 551 enum { ALPHA_THRESHOLD, MERGE, COLOR, LUT3D, BLUR, MAGNIFIER,
550 DOWN_SAMPLE, XFERMODE, OFFSET, MATRIX, MATRIX_CONVOLUTION, COMPOSE, 552 DOWN_SAMPLE, XFERMODE, OFFSET, MATRIX, MATRIX_CONVOLUTION, COMPOSE,
551 DISTANT_LIGHT, POINT_LIGHT, SPOT_LIGHT, NOISE, DROP_SHADOW, 553 DISTANT_LIGHT, POINT_LIGHT, SPOT_LIGHT, NOISE, DROP_SHADOW,
552 MORPHOLOGY, BITMAP, DISPLACE, TILE, PICTURE, PAINT, NUM_FILTERS }; 554 MORPHOLOGY, BITMAP, DISPLACE, TILE, PICTURE, PAINT, NUM_FILTERS };
553 555
554 switch (R(NUM_FILTERS)) { 556 switch (R(NUM_FILTERS)) {
555 case ALPHA_THRESHOLD: 557 case ALPHA_THRESHOLD:
556 filter = SkAlphaThresholdFilter::Create(make_region(), make_scalar(), ma ke_scalar()); 558 filter = sk_sp<SkImageFilter>(SkAlphaThresholdFilter::Create(make_region (),
559 make_scalar (),
560 make_scalar ()));
557 break; 561 break;
558 case MERGE: 562 case MERGE:
559 filter = SkMergeImageFilter::Create(make_image_filter(), make_image_filt er(), make_xfermode()); 563 filter = sk_sp<SkImageFilter>(SkMergeImageFilter::Create(make_image_filt er().release(),
f(malita) 2016/03/29 18:10:06 Hmm... Mixing old-style Create methods with sk_sp
robertphillips 2016/03/29 19:31:40 Done.
564 make_image_filt er().release(),
565 make_xfermode() ));
560 break; 566 break;
561 case COLOR: 567 case COLOR: {
562 {
563 sk_sp<SkColorFilter> cf(make_color_filter()); 568 sk_sp<SkColorFilter> cf(make_color_filter());
564 filter = cf ? SkColorFilterImageFilter::Create(cf.get(), make_image_filt er()) : 0; 569 filter = cf ? sk_sp<SkImageFilter>(SkColorFilterImageFilter::Create(cf.g et(),
570 make _image_filter().release()))
571 : nullptr;
572 break;
565 } 573 }
566 break; 574 case LUT3D: {
567 case LUT3D:
568 {
569 int cubeDimension; 575 int cubeDimension;
570 sk_sp<SkData> lut3D(make_3Dlut(&cubeDimension, (R(2) == 1), (R(2) == 1), (R(2) == 1))); 576 sk_sp<SkData> lut3D(make_3Dlut(&cubeDimension, (R(2) == 1), (R(2) == 1), (R(2) == 1)));
571 sk_sp<SkColorFilter> cf(SkColorCubeFilter::Make(lut3D, cubeDimension)); 577 sk_sp<SkColorFilter> cf(SkColorCubeFilter::Make(lut3D, cubeDimension));
572 filter = cf ? SkColorFilterImageFilter::Create(cf.get(), make_image_filt er()) : 0; 578 filter = cf ? sk_sp<SkImageFilter>(SkColorFilterImageFilter::Create(cf.g et(),
579 make _image_filter().release()))
580 : nullptr;
581 break;
573 } 582 }
574 break;
575 case BLUR: 583 case BLUR:
576 filter = SkBlurImageFilter::Create(make_scalar(true), make_scalar(true), make_image_filter()); 584 filter = sk_sp<SkImageFilter>(SkBlurImageFilter::Create(make_scalar(true ),
585 make_scalar(true ),
586 make_image_filte r().release()));
577 break; 587 break;
578 case MAGNIFIER: 588 case MAGNIFIER:
579 filter = SkMagnifierImageFilter::Create(make_rect(), make_scalar(true)); 589 filter = sk_sp<SkImageFilter>(SkMagnifierImageFilter::Create(make_rect() ,
590 make_scalar (true)));
580 break; 591 break;
581 case DOWN_SAMPLE: 592 case DOWN_SAMPLE:
582 filter = SkDownSampleImageFilter::Create(make_scalar()); 593 filter = sk_sp<SkImageFilter>(SkDownSampleImageFilter::Create(make_scala r()));
583 break; 594 break;
584 case XFERMODE: 595 case XFERMODE: {
585 {
586 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(make_xfermode())); 596 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(make_xfermode()));
587 filter = SkXfermodeImageFilter::Create(mode, make_image_filter(), make_i mage_filter()); 597 filter = sk_sp<SkImageFilter>(SkXfermodeImageFilter::Create(mode,
598 make_image_f ilter().release(),
599 make_image_f ilter().release()));
600 break;
588 } 601 }
589 break;
590 case OFFSET: 602 case OFFSET:
591 filter = SkOffsetImageFilter::Create(make_scalar(), make_scalar(), make_ image_filter()); 603 filter = sk_sp<SkImageFilter>(SkOffsetImageFilter::Create(make_scalar(), make_scalar(),
604 make_image_fil ter().release()));
592 break; 605 break;
593 case MATRIX: 606 case MATRIX:
594 filter = SkImageFilter::CreateMatrixFilter(make_matrix(), 607 filter = sk_sp<SkImageFilter>(SkImageFilter::CreateMatrixFilter(make_mat rix(),
595 (SkFilterQuality)R(4), 608 (SkFilte rQuality)R(4),
596 make_image_filter()); 609 make_ima ge_filter().release()));
597 break; 610 break;
598 case MATRIX_CONVOLUTION: 611 case MATRIX_CONVOLUTION: {
599 {
600 SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize), 612 SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize),
601 SkIntToScalar(kBitmapSize)) ); 613 SkIntToScalar(kBitmapSize)) );
602 SkISize size = SkISize::Make(R(10)+1, R(10)+1); 614 SkISize size = SkISize::Make(R(10)+1, R(10)+1);
603 int arraySize = size.width() * size.height(); 615 int arraySize = size.width() * size.height();
604 SkTArray<SkScalar> kernel(arraySize); 616 SkTArray<SkScalar> kernel(arraySize);
605 for (int i = 0; i < arraySize; ++i) { 617 for (int i = 0; i < arraySize; ++i) {
606 kernel.push_back() = make_scalar(); 618 kernel.push_back() = make_scalar();
607 } 619 }
608 SkIPoint kernelOffset = SkIPoint::Make(R(SkIntToScalar(size.width())), 620 SkIPoint kernelOffset = SkIPoint::Make(R(SkIntToScalar(size.width())),
609 R(SkIntToScalar(size.height()))); 621 R(SkIntToScalar(size.height())));
610 filter = SkMatrixConvolutionImageFilter::Create(size, 622 filter = sk_sp<SkImageFilter>(SkMatrixConvolutionImageFilter::Create(
623 size,
611 kernel.begin(), 624 kernel.begin(),
612 make_scalar(), 625 make_scalar(),
613 make_scalar(), 626 make_scalar(),
614 kernelOffset, 627 kernelOffset,
615 (SkMatrixConvolutionImag eFilter::TileMode)R(3), 628 (SkMatrixConvolutionImag eFilter::TileMode)R(3),
616 R(2) == 1, 629 R(2) == 1,
617 make_image_filter(), 630 make_image_filter().rele ase(),
618 &cropR); 631 &cropR));
632 break;
619 } 633 }
620 break;
621 case COMPOSE: 634 case COMPOSE:
622 filter = SkComposeImageFilter::Create(make_image_filter(), make_image_fi lter()); 635 filter = sk_sp<SkImageFilter>(SkComposeImageFilter::Create(make_image_fi lter().release(),
636 make_image_fi lter().release()));
623 break; 637 break;
624 case DISTANT_LIGHT: 638 case DISTANT_LIGHT:
625 filter = (R(2) == 1) ? 639 filter = (R(2) == 1)
626 SkLightingImageFilter::CreateDistantLitDiffuse(make_point(), 640 ? sk_sp<SkImageFilter>(SkLightingImageFilter::CreateDistantLitD iffuse(make_point(),
627 make_color(), make_scalar(), make_scalar(), make_image_filter() ) : 641 make_color(), make_scalar(), mak e_scalar(),
628 SkLightingImageFilter::CreateDistantLitSpecular(make_point(), 642 make_image_filter().release()))
629 make_color(), make_scalar(), make_scalar(), SkIntToScalar(R(10) ), 643 : sk_sp<SkImageFilter>(SkLightingImageFilter::CreateDistantLitS pecular(make_point(),
630 make_image_filter()); 644 make_color(), make_scalar(),
645 make_scalar(), SkIntToScalar(R(1 0)),
646 make_image_filter().release()));
631 break; 647 break;
632 case POINT_LIGHT: 648 case POINT_LIGHT:
633 filter = (R(2) == 1) ? 649 filter = (R(2) == 1)
634 SkLightingImageFilter::CreatePointLitDiffuse(make_point(), 650 ? sk_sp<SkImageFilter>(SkLightingImageFilter::CreatePointLitDif fuse(make_point(),
635 make_color(), make_scalar(), make_scalar(), make_image_filter() ) : 651 make_color(), make_scalar(), mak e_scalar(),
636 SkLightingImageFilter::CreatePointLitSpecular(make_point(), 652 make_image_filter().release()))
637 make_color(), make_scalar(), make_scalar(), SkIntToScalar(R(10) ), 653 : sk_sp<SkImageFilter>(SkLightingImageFilter::CreatePointLitSpe cular(make_point(),
638 make_image_filter()); 654 make_color(), make_scalar(), mak e_scalar(),
655 SkIntToScalar(R(10)),
656 make_image_filter().release()));
639 break; 657 break;
640 case SPOT_LIGHT: 658 case SPOT_LIGHT:
641 filter = (R(2) == 1) ? 659 filter = (R(2) == 1)
642 SkLightingImageFilter::CreateSpotLitDiffuse(SkPoint3::Make(0, 0 , 0), 660 ? sk_sp<SkImageFilter>(SkLightingImageFilter::CreateSpotLitDiff use(SkPoint3::Make(0, 0, 0),
643 make_point(), make_scalar(), make_scalar(), make_color(), 661 make_point(), make_scalar(), ma ke_scalar(),
644 make_scalar(), make_scalar(), make_image_filter()) : 662 make_color(), make_scalar(), ma ke_scalar(),
645 SkLightingImageFilter::CreateSpotLitSpecular(SkPoint3::Make(0, 0, 0), 663 make_image_filter().release()))
646 make_point(), make_scalar(), make_scalar(), make_color(), 664 : sk_sp<SkImageFilter>(SkLightingImageFilter::CreateSpotLitSpec ular(SkPoint3::Make(0, 0, 0),
647 make_scalar(), make_scalar(), SkIntToScalar(R(10)), make_image_ filter()); 665 make_point(), make_scalar(), ma ke_scalar(),
666 make_color(), make_scalar(), ma ke_scalar(),
667 SkIntToScalar(R(10)), make_imag e_filter().release()));
648 break; 668 break;
649 case NOISE: 669 case NOISE: {
650 {
651 sk_sp<SkShader> shader((R(2) == 1) ? 670 sk_sp<SkShader> shader((R(2) == 1) ?
652 SkPerlinNoiseShader::MakeFractalNoise( 671 SkPerlinNoiseShader::MakeFractalNoise(
653 make_scalar(true), make_scalar(true), R(10.0f), make_scalar()) : 672 make_scalar(true), make_scalar(true), R(10.0f), make_scalar()) :
654 SkPerlinNoiseShader::MakeTurbulence( 673 SkPerlinNoiseShader::MakeTurbulence(
655 make_scalar(true), make_scalar(true), R(10.0f), make_scalar())); 674 make_scalar(true), make_scalar(true), R(10.0f), make_scalar()));
656 SkPaint paint; 675 SkPaint paint;
657 paint.setShader(shader); 676 paint.setShader(shader);
658 SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize), 677 SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize),
659 SkIntToScalar(kBitmapSize)) ); 678 SkIntToScalar(kBitmapSize)) );
660 filter = SkPaintImageFilter::Create(paint, &cropR); 679 filter = SkPaintImageFilter::Make(paint, &cropR);
680 break;
661 } 681 }
662 break;
663 case DROP_SHADOW: 682 case DROP_SHADOW:
664 filter = SkDropShadowImageFilter::Create(make_scalar(), make_scalar(), m ake_scalar(true), 683 filter = sk_sp<SkImageFilter>(SkDropShadowImageFilter::Create(make_scala r(),
665 make_scalar(true), make_color(), make_shadow_mode(), make_im age_filter(), 684 make_scala r(),
666 nullptr); 685 make_scala r(true),
686 make_scala r(true),
687 make_color (),
688 make_shado w_mode(),
689 make_image _filter().release(),
690 nullptr));
667 break; 691 break;
668 case MORPHOLOGY: 692 case MORPHOLOGY:
669 if (R(2) == 1) { 693 if (R(2) == 1) {
670 filter = SkDilateImageFilter::Create(R(static_cast<float>(kBitmapSiz e)), 694 filter = sk_sp<SkImageFilter>(SkDilateImageFilter::Create(R(static_c ast<float>(kBitmapSize)),
671 R(static_cast<float>(kBitmapSize)), make_image_filter()); 695 R(static_cast<float>(kBitmapSize )),
696 make_image_filter().release()));
672 } else { 697 } else {
673 filter = SkErodeImageFilter::Create(R(static_cast<float>(kBitmapSize )), 698 filter = sk_sp<SkImageFilter>(SkErodeImageFilter::Create(R(static_ca st<float>(kBitmapSize)),
674 R(static_cast<float>(kBitmapSize)), make_image_filter()); 699 R(static_cast<float>(kBitmapSize )),
700 make_image_filter().release()));
675 } 701 }
676 break; 702 break;
677 case BITMAP: 703 case BITMAP: {
678 {
679 sk_sp<SkImage> image(SkImage::MakeFromBitmap(make_bitmap())); 704 sk_sp<SkImage> image(SkImage::MakeFromBitmap(make_bitmap()));
680 if (R(2) == 1) { 705 if (R(2) == 1) {
681 filter = SkImageSource::Create(image.get(), make_rect(), make_rect() , kHigh_SkFilterQuality); 706 filter = sk_sp<SkImageFilter>(SkImageSource::Create(image.get(),
707 make_rect(),
708 make_rect(),
709 kHigh_SkFilterQu ality));
682 } else { 710 } else {
683 filter = SkImageSource::Create(image.get()); 711 filter = sk_sp<SkImageFilter>(SkImageSource::Create(image.get()));
684 } 712 }
713 break;
685 } 714 }
686 break;
687 case DISPLACE: 715 case DISPLACE:
688 filter = SkDisplacementMapEffect::Create(make_channel_selector_type(), 716 filter = sk_sp<SkImageFilter>(SkDisplacementMapEffect::Create(make_chann el_selector_type(),
689 make_channel_selector_type(), m ake_scalar(), 717 make_chann el_selector_type(),
690 make_image_filter(false), make_ image_filter()); 718 make_scala r(),
719 make_image _filter(false).release(),
720 make_image _filter().release()));
691 break; 721 break;
692 case TILE: 722 case TILE:
693 filter = SkTileImageFilter::Create(make_rect(), make_rect(), make_image_ filter(false)); 723 filter = sk_sp<SkImageFilter>(SkTileImageFilter::Create(make_rect(),
724 make_rect(),
725 make_image_filte r(false).release()));
694 break; 726 break;
695 case PICTURE: 727 case PICTURE: {
696 {
697 SkRTreeFactory factory; 728 SkRTreeFactory factory;
698 SkPictureRecorder recorder; 729 SkPictureRecorder recorder;
699 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(kBitma pSize), 730 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(kBitma pSize),
700 SkIntToScalar(kBitma pSize), 731 SkIntToScalar(kBitma pSize),
701 &factory, 0); 732 &factory, 0);
702 drawSomething(recordingCanvas); 733 drawSomething(recordingCanvas);
703 sk_sp<SkPicture> pict(recorder.finishRecordingAsPicture()); 734 sk_sp<SkPicture> pict(recorder.finishRecordingAsPicture());
704 filter = SkPictureImageFilter::Make(pict, make_rect()).release(); 735 filter = SkPictureImageFilter::Make(pict, make_rect());
736 break;
705 } 737 }
738 case PAINT: {
739 SkImageFilter::CropRect cropR(make_rect());
740 filter = SkPaintImageFilter::Make(make_paint(), &cropR);
706 break; 741 break;
707 case PAINT:
708 {
709 SkImageFilter::CropRect cropR(make_rect());
710 filter = SkPaintImageFilter::Create(make_paint(), &cropR);
711 } 742 }
712 default: 743 default:
713 break; 744 break;
714 } 745 }
715 return (filter || canBeNull) ? filter : make_image_filter(canBeNull); 746 return (filter || canBeNull) ? filter : make_image_filter(canBeNull);
716 } 747 }
717 748
718 static SkImageFilter* make_serialized_image_filter() { 749 static SkImageFilter* make_serialized_image_filter() {
719 SkAutoTUnref<SkImageFilter> filter(make_image_filter(false)); 750 sk_sp<SkImageFilter> filter(make_image_filter(false));
720 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter)); 751 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(filter.get()));
721 const unsigned char* ptr = static_cast<const unsigned char*>(data->data()); 752 const unsigned char* ptr = static_cast<const unsigned char*>(data->data());
722 size_t len = data->size(); 753 size_t len = data->size();
723 #ifdef SK_ADD_RANDOM_BIT_FLIPS 754 #ifdef SK_ADD_RANDOM_BIT_FLIPS
724 unsigned char* p = const_cast<unsigned char*>(ptr); 755 unsigned char* p = const_cast<unsigned char*>(ptr);
725 for (size_t i = 0; i < len; ++i, ++p) { 756 for (size_t i = 0; i < len; ++i, ++p) {
726 if (R(250) == 1) { // 0.4% of the time, flip a bit or byte 757 if (R(250) == 1) { // 0.4% of the time, flip a bit or byte
727 if (R(10) == 1) { // Then 10% of the time, change a whole byte 758 if (R(10) == 1) { // Then 10% of the time, change a whole byte
728 switch(R(3)) { 759 switch(R(3)) {
729 case 0: 760 case 0:
730 *p ^= 0xFF; // Flip entire byte 761 *p ^= 0xFF; // Flip entire byte
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 } 836 }
806 837
807 private: 838 private:
808 typedef SkView INHERITED; 839 typedef SkView INHERITED;
809 }; 840 };
810 841
811 ////////////////////////////////////////////////////////////////////////////// 842 //////////////////////////////////////////////////////////////////////////////
812 843
813 static SkView* MyFactory() { return new ImageFilterFuzzView; } 844 static SkView* MyFactory() { return new ImageFilterFuzzView; }
814 static SkViewRegister reg(MyFactory); 845 static SkViewRegister reg(MyFactory);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698