Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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); |
| OLD | NEW |