Chromium Code Reviews| Index: samplecode/SampleFilterFuzz.cpp |
| diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp |
| index a0f7aff5ef3ac339d055be7f99d35aef8ed9412a..74fc68190bef954a48ebd2f99a129bcd0fe8bf5d 100644 |
| --- a/samplecode/SampleFilterFuzz.cpp |
| +++ b/samplecode/SampleFilterFuzz.cpp |
| @@ -6,33 +6,39 @@ |
| */ |
| #include "SampleCode.h" |
| #include "SkAlphaThresholdFilter.h" |
| +#include "SkAnnotation.h" |
| #include "SkBlurImageFilter.h" |
| +#include "SkBlurMaskFilter.h" |
| #include "SkCanvas.h" |
| #include "SkColorCubeFilter.h" |
| #include "SkColorFilter.h" |
| #include "SkColorFilterImageFilter.h" |
| #include "SkComposeImageFilter.h" |
| +#include "SkCornerPathEffect.h" |
| #include "SkData.h" |
| #include "SkDisplacementMapEffect.h" |
| #include "SkDropShadowImageFilter.h" |
| #include "SkFlattenableSerialization.h" |
| #include "SkImageSource.h" |
| +#include "SkLayerRasterizer.h" |
| #include "SkLightingImageFilter.h" |
| #include "SkMagnifierImageFilter.h" |
| #include "SkMatrixConvolutionImageFilter.h" |
| #include "SkMergeImageFilter.h" |
| #include "SkMorphologyImageFilter.h" |
| #include "SkOffsetImageFilter.h" |
| +#include "SkPaintImageFilter.h" |
| #include "SkPerlinNoiseShader.h" |
| #include "SkPictureImageFilter.h" |
| #include "SkPictureRecorder.h" |
| #include "SkPoint3.h" |
| #include "SkRandom.h" |
| -#include "SkRectShaderImageFilter.h" |
| #include "SkTestImageFilters.h" |
| #include "SkTileImageFilter.h" |
| +#include "SkTypeface.h" |
| #include "SkView.h" |
| #include "SkXfermodeImageFilter.h" |
| +#include "sk_tool_utils.h" |
| #include <stdio.h> |
| #include <time.h> |
| @@ -266,7 +272,7 @@ static SkImageFilter* make_image_filter(bool canBeNull = true) { |
| enum { ALPHA_THRESHOLD, MERGE, COLOR, LUT3D, BLUR, MAGNIFIER, |
| DOWN_SAMPLE, XFERMODE, OFFSET, MATRIX, MATRIX_CONVOLUTION, COMPOSE, |
| DISTANT_LIGHT, POINT_LIGHT, SPOT_LIGHT, NOISE, DROP_SHADOW, |
| - MORPHOLOGY, BITMAP, DISPLACE, TILE, PICTURE, NUM_FILTERS }; |
| + MORPHOLOGY, BITMAP, DISPLACE, TILE, PICTURE, PAINT, NUM_FILTERS }; |
| switch (R(NUM_FILTERS)) { |
| case ALPHA_THRESHOLD: |
| @@ -372,9 +378,11 @@ static SkImageFilter* make_image_filter(bool canBeNull = true) { |
| make_scalar(true), make_scalar(true), R(10.0f), make_scalar()) : |
| SkPerlinNoiseShader::CreateTurbulence( |
| make_scalar(true), make_scalar(true), R(10.0f), make_scalar())); |
| + SkPaint paint; |
| + paint.setShader(shader); |
| SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
| SkIntToScalar(kBitmapSize))); |
| - filter = SkRectShaderImageFilter::Create(shader, &cropR); |
| + filter = SkPaintImageFilter::Create(paint, &cropR); |
| } |
| break; |
| case DROP_SHADOW: |
| @@ -421,6 +429,64 @@ static SkImageFilter* make_image_filter(bool canBeNull = true) { |
| filter = SkPictureImageFilter::Create(pict.get(), make_rect()); |
| } |
| break; |
| + case PAINT: |
| + { |
| + SkPaint paint; |
| + paint.setHinting(SkPaint::kSlight_Hinting); |
| + paint.setAntiAlias(true); |
| + paint.setDither(true); |
| + paint.setLinearText(true); |
| + paint.setSubpixelText(false); |
| + paint.setLCDRenderText(false); |
| + paint.setEmbeddedBitmapText(true); |
| + paint.setAutohinted(false); |
| + paint.setVerticalText(true); |
| + paint.setUnderlineText(false); |
| + paint.setStrikeThruText(true); |
| + paint.setFakeBoldText(true); |
| + paint.setDevKernText(false); |
| + paint.setFilterQuality(kLow_SkFilterQuality); |
| + paint.setStyle(SkPaint::kStroke_Style); |
| + paint.setColor(SK_ColorRED); |
| + paint.setStrokeWidth(SkIntToScalar(3)); |
| + paint.setStrokeMiter(SkIntToScalar(1)); |
| + paint.setStrokeCap(SkPaint::kRound_Cap); |
| + paint.setStrokeJoin(SkPaint::kBevel_Join); |
| + SkAutoTUnref<SkColorFilter> colorFilter( |
| + SkColorFilter::CreateLightingFilter(make_color(), make_color())); |
| + paint.setColorFilter(colorFilter); |
| + paint.setXfermodeMode(SkXfermode::kDstIn_Mode); |
| + SkAutoTUnref<SkPathEffect> pathEffect(SkCornerPathEffect::Create(SkIntToScalar(3))); |
| + paint.setPathEffect(pathEffect); |
| + SkAutoTUnref<SkMaskFilter> maskFilter( |
| + SkBlurMaskFilter::Create(kNormal_SkBlurStyle, |
| + SkIntToScalar(25), |
| + SkBlurMaskFilter::kHighQuality_BlurFlag)); |
| + paint.setMaskFilter(maskFilter); |
| + SkAutoTUnref<SkTypeface> typeface( |
| + sk_tool_utils::create_portable_typeface("serif", SkTypeface::kBold)); |
| + paint.setTypeface(typeface); |
| + SkLayerRasterizer::Builder rasterizerBuilder; |
| + SkPaint paintForRasterizer; |
| + rasterizerBuilder.addLayer(paintForRasterizer); |
| + SkAutoTUnref<SkRasterizer> rasterizer(rasterizerBuilder.detachRasterizer()); |
| + paint.setRasterizer(rasterizer); |
| + SkAutoTUnref<SkImageFilter> imageFilter( |
| + SkBlurImageFilter::Create(SkIntToScalar(2), SkIntToScalar(2))); |
| + paint.setImageFilter(imageFilter); |
| + SkAutoDataUnref data(SkData::NewWithCString("This is an annotation.")); |
| + SkAutoTUnref<SkAnnotation> annotation( |
| + SkAnnotation::Create(SkAnnotationKeys::Define_Named_Dest_Key(), data)); |
| + paint.setAnnotation(annotation); |
| + paint.setTextAlign(SkPaint::kCenter_Align); |
| + paint.setTextSize(SkIntToScalar(8)); |
| + paint.setTextScaleX(SkFloatToScalar(0.75)); |
| + paint.setTextSkewX(SkFloatToScalar(-0.25)); |
| + paint.setTextEncoding(SkPaint::kUTF16_TextEncoding); |
| + SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize), |
| + SkIntToScalar(kBitmapSize))); |
|
ajuma
2016/01/04 22:39:46
Is it worthwhile also adding test cases that use s
sugoi1
2016/01/05 15:59:55
You could choose to use each of these functions ra
ajuma
2016/01/06 20:53:39
Thanks for the tips! (And also thanks for all the
|
| + filter = SkPaintImageFilter::Create(paint, &cropR); |
| + } |
| default: |
| break; |
| } |