Lines Matching refs:fuzz

8 #include "fuzz/Fuzz.h"
9 #include "fuzz/FuzzCommon.h"
77 inline T make_fuzz_t(Fuzz* fuzz) {
79 fuzz->next(&t);
87 static sk_sp<SkColorFilter> make_fuzz_colorfilter(Fuzz* fuzz, int depth) {
92 fuzz->nextRange(&colorFilterType, 0, 8);
99 fuzz->next(&color);
100 fuzz->nextEnum(&mode, SkBlendMode::kLastMode);
104 sk_sp<SkColorFilter> outer = make_fuzz_colorfilter(fuzz, depth - 1);
108 sk_sp<SkColorFilter> inner = make_fuzz_colorfilter(fuzz, depth - 1);
114 fuzz->nextN(array, SK_ARRAY_COUNT(array));
119 fuzz->next(&mul, &add);
126 fuzz->next(&grayscale);
127 fuzz->nextRange(&invertStyle, 0, 2);
128 fuzz->nextRange(&contrast, -1.0f, 1.0f);
136 fuzz->nextN(table, SK_ARRAY_COUNT(table));
144 fuzz->nextN(tableA, SK_ARRAY_COUNT(tableA));
145 fuzz->nextN(tableR, SK_ARRAY_COUNT(tableR));
146 fuzz->nextN(tableG, SK_ARRAY_COUNT(tableG));
147 fuzz->nextN(tableB, SK_ARRAY_COUNT(tableB));
157 static void fuzz_gradient_stops(Fuzz* fuzz, SkScalar* pos, int colorCount) {
160 fuzz->nextRange(&pos[i], 1.0f, 1024.0f);
171 static sk_sp<SkShader> make_fuzz_shader(Fuzz* fuzz, int depth) {
185 fuzz->nextRange(&shaderType, 0, 14);
192 fuzz->next(&color);
195 img = make_fuzz_image(fuzz);
196 fuzz->nextEnum(&tmX, SkTileMode::kLastTileMode);
197 fuzz->nextEnum(&tmY, SkTileMode::kLastTileMode);
198 fuzz->next(&useMatrix);
200 FuzzNiceMatrix(fuzz, &matrix);
204 shader1 = make_fuzz_shader(fuzz, depth - 1); // limit recursion.
205 FuzzNiceMatrix(fuzz, &matrix);
208 shader1 = make_fuzz_shader(fuzz, depth - 1); // limit recursion.
209 colorFilter = make_fuzz_colorfilter(fuzz, depth - 1);
212 shader1 = make_fuzz_shader(fuzz, depth - 1); // limit recursion.
213 shader2 = make_fuzz_shader(fuzz, depth - 1);
214 fuzz->nextEnum(&blendMode, SkBlendMode::kLastMode);
217 auto pic = make_fuzz_picture(fuzz, depth - 1);
220 fuzz->nextEnum(&tmX, SkTileMode::kLastTileMode);
221 fuzz->nextEnum(&tmY, SkTileMode::kLastTileMode);
222 fuzz->next(&useMatrix, &useTile);
224 FuzzNiceMatrix(fuzz, &matrix);
227 fuzz->next(&tile);
243 fuzz->nextN(pts, 2);
244 fuzz->nextRange(&colorCount, 2, kMaxColors);
245 fuzz->nextN(colors, colorCount);
246 fuzz->nextEnum(&tmX, SkTileMode::kLastTileMode);
247 fuzz->next(&useMatrix, &usePos);
249 FuzzNiceMatrix(fuzz, &matrix);
252 fuzz_gradient_stops(fuzz, pos, colorCount);
265 fuzz->nextEnum(&tmX, SkTileMode::kLastTileMode);
266 fuzz->next(&useMatrix, &usePos, &center, &radius);
267 fuzz->nextRange(&colorCount, 2, kMaxColors);
268 fuzz->nextN(colors, colorCount);
270 FuzzNiceMatrix(fuzz, &matrix);
273 fuzz_gradient_stops(fuzz, pos, colorCount);
286 fuzz->nextEnum(&tmX, SkTileMode::kLastTileMode);
287 fuzz->next(&useMatrix, &usePos, &startRadius, &endRadius, &start, &end);
288 fuzz->nextRange(&colorCount, 2, kMaxColors);
289 fuzz->nextN(colors, colorCount);
291 FuzzNiceMatrix(fuzz, &matrix);
294 fuzz_gradient_stops(fuzz, pos, colorCount);
307 fuzz->next(&cx, &cy, &useMatrix, &usePos);
308 fuzz->nextRange(&colorCount, 2, kMaxColors);
309 fuzz->nextN(colors, colorCount);
311 FuzzNiceMatrix(fuzz, &matrix);
314 fuzz_gradient_stops(fuzz, pos, colorCount);
324 fuzz->next(&baseFrequencyX, &baseFrequencyY, &seed, &useTileSize, &turbulence);
326 fuzz->next(&tileSize);
328 fuzz->nextRange(&numOctaves, 2, 7);
346 static sk_sp<SkPathEffect> make_fuzz_patheffect(Fuzz* fuzz, int depth) {
351 fuzz->nextRange(&pathEffectType, 0, 8);
357 sk_sp<SkPathEffect> first = make_fuzz_patheffect(fuzz, depth - 1);
358 sk_sp<SkPathEffect> second = make_fuzz_patheffect(fuzz, depth - 1);
362 sk_sp<SkPathEffect> first = make_fuzz_patheffect(fuzz, depth - 1);
363 sk_sp<SkPathEffect> second = make_fuzz_patheffect(fuzz, depth - 1);
368 FuzzNicePath(fuzz, &path, 20);
370 fuzz->next(&advance, &phase);
372 fuzz->nextEnum(&style, SkPath1DPathEffect::kLastEnum_Style);
378 fuzz->next(&width);
379 FuzzNiceMatrix(fuzz, &matrix);
384 FuzzNicePath(fuzz, &path, 20);
386 FuzzNiceMatrix(fuzz, &matrix);
391 fuzz->next(&radius);
396 fuzz->next(&phase);
399 fuzz->nextRange(&count, 0, (int)SK_ARRAY_COUNT(intervals));
400 fuzz->nextN(intervals, count);
406 fuzz->next(&segLength, &dev, &seed);
415 static sk_sp<SkMaskFilter> make_fuzz_maskfilter(Fuzz* fuzz) {
417 fuzz->nextRange(&maskfilterType, 0, 1);
423 fuzz->nextEnum(&blurStyle, kLastEnum_SkBlurStyle);
425 fuzz->next(&sigma);
427 fuzz->next(&respectCTM);
436 static sk_sp<SkTypeface> make_fuzz_typeface(Fuzz* fuzz) {
437 if (make_fuzz_t<bool>(fuzz)) {
444 fuzz->nextRange(&i, 0, familyCount - 1);
447 fuzz->nextRange(&j, 0, styleCount - 1);
451 static sk_sp<SkImageFilter> make_fuzz_imageFilter(Fuzz* fuzz, int depth);
453 static sk_sp<SkImageFilter> make_fuzz_lighting_imagefilter(Fuzz* fuzz, int depth) {
458 fuzz->nextRange(&imageFilterType, 1, 6);
465 fuzz->next(&useCropRect);
467 fuzz->next(&cropRect);
471 fuzz->next(&p, &lightColor, &surfaceScale, &k);
472 input = make_fuzz_imageFilter(fuzz, depth - 1);
477 fuzz->next(&p, &lightColor, &surfaceScale, &k);
478 input = make_fuzz_imageFilter(fuzz, depth - 1);
483 fuzz->next(&p, &q, &specularExponent, &cutoffAngle, &lightColor, &surfaceScale, &k);
484 input = make_fuzz_imageFilter(fuzz, depth - 1);
489 fuzz->next(&p, &lightColor, &surfaceScale, &k, &shininess);
490 input = make_fuzz_imageFilter(fuzz, depth - 1);
495 fuzz->next(&p, &lightColor, &surfaceScale, &k, &shininess);
496 input = make_fuzz_imageFilter(fuzz, depth - 1);
501 fuzz->next(&p, &q, &specularExponent, &cutoffAngle, &lightColor, &surfaceScale, &k,
503 input = make_fuzz_imageFilter(fuzz, depth - 1);
513 static void fuzz_paint(Fuzz* fuzz, SkPaint* paint, int depth);
515 static SkSamplingOptions next_sampling(Fuzz* fuzz) {
516 if (fuzz->nextBool()) {
518 fuzz->next(&B, &C);
523 fuzz->nextEnum(&fm, SkFilterMode::kLast);
524 fuzz->nextEnum(&mm, SkMipmapMode::kLast);
529 static sk_sp<SkImageFilter> make_fuzz_imageFilter(Fuzz* fuzz, int depth) {
534 fuzz->nextRange(&imageFilterType, 0, 24);
540 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
542 fuzz->next(&sigmaX, &sigmaY, &useCropRect);
545 fuzz->next(&cropRect);
552 FuzzNiceMatrix(fuzz, &matrix);
553 const auto sampling = next_sampling(fuzz);
554 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
560 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
562 fuzz->next(&region, &innerMin, &outerMax, &useCropRect);
565 fuzz->next(&cropRect);
574 fuzz->next(&k1, &k2, &k3, &k4, &enforcePMColor, &useCropRect);
575 sk_sp<SkImageFilter> background = make_fuzz_imageFilter(fuzz, depth - 1);
576 sk_sp<SkImageFilter> foreground = make_fuzz_imageFilter(fuzz, depth - 1);
579 fuzz->next(&cropRect);
586 sk_sp<SkColorFilter> cf = make_fuzz_colorfilter(fuzz, depth - 1);
587 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
590 fuzz->next(&useCropRect);
592 fuzz->next(&cropRect);
598 sk_sp<SkImageFilter> ifo = make_fuzz_imageFilter(fuzz, depth - 1);
599 sk_sp<SkImageFilter> ifi = make_fuzz_imageFilter(fuzz, depth - 1);
604 fuzz->nextEnum(&xChannelSelector, SkColorChannel::kLastEnum);
605 fuzz->nextEnum(&yChannelSelector, SkColorChannel::kLastEnum);
608 fuzz->next(&scale, &useCropRect);
611 fuzz->next(&cropRect);
613 sk_sp<SkImageFilter> displacement = make_fuzz_imageFilter(fuzz, depth - 1);
614 sk_sp<SkImageFilter> color = make_fuzz_imageFilter(fuzz, depth - 1);
623 fuzz->next(&dx, &dy, &sigmaX, &sigmaY, &color, &shadowOnly, &useCropRect);
626 fuzz->next(&cropRect);
628 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
639 return SkImageFilters::Image(make_fuzz_image(fuzz));
641 sk_sp<SkImage> image = make_fuzz_image(fuzz);
643 fuzz->next(&srcRect, &dstRect);
644 return SkImageFilters::Image(std::move(image), srcRect, dstRect, next_sampling(fuzz));
647 return make_fuzz_lighting_imagefilter(fuzz, depth - 1);
653 fuzz->next(&srcRect, &inset, &useCropRect);
655 fuzz->next(&cropRect);
657 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
664 fuzz->nextRange(&n, 1, kMaxKernelSize);
665 fuzz->nextRange(&m, 1, kMaxKernelSize);
667 fuzz->nextN(kernel, n * m);
669 fuzz->nextRange(&offsetX, 0, n - 1);
670 fuzz->nextRange(&offsetY, 0, m - 1);
673 fuzz->next(&gain, &bias, &convolveAlpha, &useCropRect);
675 fuzz->nextEnum(&tileMode, SkTileMode::kLastTileMode);
678 fuzz->next(&cropRect);
680 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
686 sk_sp<SkImageFilter> first = make_fuzz_imageFilter(fuzz, depth - 1);
687 sk_sp<SkImageFilter> second = make_fuzz_imageFilter(fuzz, depth - 1);
689 fuzz->next(&useCropRect);
692 fuzz->next(&cropRect);
701 fuzz->nextRange(&count, 1, kMaxCount);
703 ifs[i] = make_fuzz_imageFilter(fuzz, depth - 1);
706 fuzz->next(&useCropRect);
709 fuzz->next(&cropRect);
715 fuzz->next(&rx, &ry);
717 fuzz->next(&useCropRect);
720 fuzz->next(&cropRect);
722 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
728 fuzz->next(&rx, &ry);
730 fuzz->next(&useCropRect);
733 fuzz->next(&cropRect);
735 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
741 fuzz->next(&dx, &dy);
743 fuzz->next(&useCropRect);
746 fuzz->next(&cropRect);
748 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
754 fuzz_paint(fuzz, &paint, depth - 1);
756 fuzz->next(&useCropRect);
759 fuzz->next(&cropRect);
764 sk_sp<SkPicture> picture = make_fuzz_picture(fuzz, depth - 1);
769 fuzz->next(&cropRect);
770 sk_sp<SkPicture> picture = make_fuzz_picture(fuzz, depth - 1);
775 fuzz->next(&src, &dst);
776 sk_sp<SkImageFilter> input = make_fuzz_imageFilter(fuzz, depth - 1);
782 fuzz->next(&useCropRect);
783 fuzz->nextEnum(&blendMode, SkBlendMode::kLastMode);
786 fuzz->next(&cropRect);
788 sk_sp<SkImageFilter> bg = make_fuzz_imageFilter(fuzz, depth - 1);
789 sk_sp<SkImageFilter> fg = make_fuzz_imageFilter(fuzz, depth - 1);
794 sk_sp<SkShader> shader = make_fuzz_shader(fuzz, depth - 1);
796 fuzz->next(&useCropRect);
799 fuzz->next(&cropRect);
809 static sk_sp<SkImage> make_fuzz_image(Fuzz* fuzz) {
811 fuzz->nextRange(&w, 1, 1024);
812 fuzz->nextRange(&h, 1, 1024);
818 fuzz->next(&c);
827 static T make_fuzz_enum_range(Fuzz* fuzz, T maxv) {
829 fuzz->nextEnum(&value, maxv);
833 static void fuzz_paint(Fuzz* fuzz, SkPaint* paint, int depth) {
834 if (!fuzz || !paint || depth <= 0) {
838 paint->setAntiAlias( make_fuzz_t<bool>(fuzz));
839 paint->setDither( make_fuzz_t<bool>(fuzz));
840 paint->setColor( make_fuzz_t<SkColor>(fuzz));
841 paint->setBlendMode( make_fuzz_enum_range<SkBlendMode>(fuzz, SkBlendMode::kLastMode));
842 paint->setStyle( make_fuzz_enum_range<SkPaint::Style>(fuzz,
844 paint->setShader( make_fuzz_shader(fuzz, depth - 1));
845 paint->setPathEffect( make_fuzz_patheffect(fuzz, depth - 1));
846 paint->setMaskFilter( make_fuzz_maskfilter(fuzz));
847 paint->setImageFilter( make_fuzz_imageFilter(fuzz, depth - 1));
848 paint->setColorFilter( make_fuzz_colorfilter(fuzz, depth - 1));
851 paint->setStrokeWidth(make_fuzz_t<SkScalar>(fuzz));
852 paint->setStrokeMiter(make_fuzz_t<SkScalar>(fuzz));
853 paint->setStrokeCap( make_fuzz_enum_range<SkPaint::Cap>(fuzz, SkPaint::kLast_Cap));
854 paint->setStrokeJoin( make_fuzz_enum_range<SkPaint::Join>(fuzz, SkPaint::kLast_Join));
858 static SkFont fuzz_font(Fuzz* fuzz) {
860 font.setTypeface( make_fuzz_typeface(fuzz));
861 font.setSize( make_fuzz_t<SkScalar>(fuzz));
862 font.setScaleX( make_fuzz_t<SkScalar>(fuzz));
863 font.setSkewX( make_fuzz_t<SkScalar>(fuzz));
864 font.setLinearMetrics( make_fuzz_t<bool>(fuzz));
865 font.setSubpixel( make_fuzz_t<bool>(fuzz));
866 font.setEmbeddedBitmaps( make_fuzz_t<bool>(fuzz));
867 font.setForceAutoHinting( make_fuzz_t<bool>(fuzz));
868 font.setEmbolden( make_fuzz_t<bool>(fuzz));
869 font.setHinting( make_fuzz_enum_range<SkFontHinting>(fuzz, SkFontHinting::kFull));
870 font.setEdging( make_fuzz_enum_range<SkFont::Edging>(fuzz,
875 static SkTextEncoding fuzz_paint_text_encoding(Fuzz* fuzz) {
876 return make_fuzz_enum_range<SkTextEncoding>(fuzz, SkTextEncoding::kUTF32);
881 static SkTDArray<uint8_t> make_fuzz_text(Fuzz* fuzz, const SkFont& font, SkTextEncoding encoding) {
891 fuzz->nextRange(&glyphCount, 1, kMaxGlyphCount);
894 fuzz->nextRange(&glyphs[i], 0, glyphRange - 1);
910 fuzz->nextRange(&length, 1, kMaxLength);
913 fuzz->nextRange(&value, 0, count - 1);
954 static std::string make_fuzz_string(Fuzz* fuzz) {
956 fuzz->nextRange(&len, 0, kMaxGlyphCount);
959 fuzz->next(&str[i]);
964 static sk_sp<SkTextBlob> make_fuzz_textblob(Fuzz* fuzz) {
967 fuzz->nextRange(&runCount, (int8_t)1, (int8_t)8);
970 SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz);
971 font.setEdging(make_fuzz_t<bool>(fuzz) ? SkFont::Edging::kAlias : SkFont::Edging::kAntiAlias);
972 SkTDArray<uint8_t> text = make_fuzz_text(fuzz, font, encoding);
978 fuzz->nextRange(&runType, (uint8_t)0, (uint8_t)2);
983 fuzz->next(&x, &y);
989 fuzz->next(&y);
993 fuzz->nextN(buffer->pos, glyphCount);
999 fuzz->nextN(buffer->pos, glyphCount * 2);
1009 static void fuzz_canvas(Fuzz* fuzz, SkCanvas* canvas, int depth = 9) {
1010 if (!fuzz || !canvas || depth <= 0) {
1015 fuzz->nextRange(&N, 0, 2000);
1017 if (fuzz->exhausted()) {
1023 fuzz->nextRange(&drawCommand, 0, 62);
1033 fuzz->next(&bounds);
1034 fuzz_paint(fuzz, &paint, depth - 1);
1040 fuzz->next(&bounds);
1045 fuzz_paint(fuzz, &paint, depth - 1);
1053 fuzz->next(&alpha);
1060 fuzz->next(&bounds, &alpha);
1067 if (make_fuzz_t<bool>(fuzz)) {
1068 fuzz->next(&bounds);
1071 if (make_fuzz_t<bool>(fuzz)) {
1072 fuzz_paint(fuzz, &paint, depth - 1);
1076 if (make_fuzz_t<bool>(fuzz)) {
1077 imageFilter = make_fuzz_imageFilter(fuzz, depth - 1);
1081 // if (make_fuzz_t<bool>(fuzz)) {
1093 fuzz->next(&saveCount);
1099 fuzz->next(&x, &y);
1105 fuzz->next(&x, &y);
1111 fuzz->next(&v);
1117 fuzz->next(&x, &y, &v);
1123 fuzz->next(&x, &y);
1129 FuzzNiceMatrix(fuzz, &mat);
1135 FuzzNiceMatrix(fuzz, &mat);
1146 fuzz->next(&r, &doAntiAlias);
1147 fuzz->nextRange(&op, 0, 1);
1156 FuzzNiceRRect(fuzz, &rr);
1157 fuzz->next(&doAntiAlias);
1158 fuzz->nextRange(&op, 0, 1);
1164 FuzzNicePath(fuzz, &path, 30);
1167 fuzz->next(&doAntiAlias);
1168 fuzz->nextRange(&op, 0, 1);
1175 fuzz->next(&region);
1176 fuzz->nextRange(&op, 0, 1);
1181 fuzz_paint(fuzz, &paint, depth - 1);
1185 fuzz_paint(fuzz, &paint, depth - 1);
1187 fuzz->nextRange(&pointMode,
1191 fuzz->nextRange(&count, 0, kMaxCount);
1193 fuzz->nextN(pts, count);
1198 fuzz_paint(fuzz, &paint, depth - 1);
1200 fuzz->next(&r);
1208 fuzz_paint(fuzz, &paint, depth - 1);
1210 fuzz->next(&region);
1215 fuzz_paint(fuzz, &paint, depth - 1);
1217 fuzz->next(&r);
1226 fuzz_paint(fuzz, &paint, depth - 1);
1228 FuzzNiceRRect(fuzz, &rr);
1233 fuzz_paint(fuzz, &paint, depth - 1);
1235 FuzzNiceRRect(fuzz, &orr);
1236 FuzzNiceRRect(fuzz, &irr);
1243 fuzz_paint(fuzz, &paint, depth - 1);
1247 fuzz->next(&r, &start, &sweep, &useCenter);
1252 fuzz_paint(fuzz, &paint, depth - 1);
1254 FuzzNicePath(fuzz, &path, 60);
1259 sk_sp<SkImage> img = make_fuzz_image(fuzz);
1262 fuzz->next(&left, &top, &usePaint);
1264 fuzz_paint(fuzz, &paint, depth - 1);
1271 auto img = make_fuzz_image(fuzz);
1275 fuzz->next(&src, &dst, &usePaint);
1277 fuzz_paint(fuzz, &paint, depth - 1);
1280 make_fuzz_t<bool>(fuzz) ? SkCanvas::kStrict_SrcRectConstraint
1287 auto img = make_fuzz_image(fuzz);
1291 fuzz->next(&usePaint);
1293 fuzz_paint(fuzz, &paint, depth - 1);
1295 if (make_fuzz_t<bool>(fuzz)) {
1296 fuzz->next(&center);
1298 fuzz->nextRange(&center.fLeft, 0, img->width() - 1);
1299 fuzz->nextRange(&center.fTop, 0, img->height() - 1);
1300 fuzz->nextRange(&center.fRight, center.fLeft + 1, img->width());
1301 fuzz->nextRange(&center.fBottom, center.fTop + 1, img->height());
1303 fuzz->next(&dst);
1309 auto img = make_fuzz_image(fuzz);
1312 fuzz->next(&usePaint, &dst);
1314 fuzz_paint(fuzz, &paint, depth - 1);
1319 fuzz->nextRange(&lattice.fXCount, 2, kMax);
1320 fuzz->nextRange(&lattice.fYCount, 2, kMax);
1321 fuzz->nextN(xDivs, lattice.fXCount);
1322 fuzz->nextN(yDivs, lattice.fYCount);
1328 fuzz_paint(fuzz, &paint, depth - 1);
1329 font = fuzz_font(fuzz);
1330 SkTextEncoding encoding = fuzz_paint_text_encoding(fuzz);
1332 fuzz->next(&x, &y);
1333 SkTDArray<uint8_t> text = make_fuzz_text(fuzz, font, encoding);
1359 sk_sp<SkTextBlob> blob = make_fuzz_textblob(fuzz);
1360 fuzz_paint(fuzz, &paint, depth - 1);
1362 fuzz->next(&x, &y);
1369 fuzz->next(&usePaint, &useMatrix);
1371 fuzz_paint(fuzz, &paint, depth - 1);
1374 FuzzNiceMatrix(fuzz, &matrix);
1376 auto pic = make_fuzz_picture(fuzz, depth - 1);
1382 fuzz_paint(fuzz, &paint, depth - 1);
1385 fuzz->nextRange(&vertexMode, 0, SkVertices::kTriangleFan_VertexMode);
1386 fuzz->nextRange(&blendMode, 0, SkBlendMode::kLastMode);
1392 fuzz->nextRange(&vertexCount, 3, kMaxCount);
1393 fuzz->nextN(vertices, vertexCount);
1395 fuzz->next(&useTexs, &useColors);
1397 fuzz->nextN(texs, vertexCount);
1400 fuzz->nextN(colors, vertexCount);
1404 if (make_fuzz_t<bool>(fuzz)) {
1405 fuzz->nextRange(&indexCount, vertexCount, vertexCount + kMaxCount);
1407 fuzz->nextRange(&indices[index], 0, vertexCount - 1);
1420 fuzz->nextRange(&blendMode, 0, SkBlendMode::kSrcOver);
1421 fuzz->next(&color);
1429 fuzz->nextRange(&blendMode, 0, SkBlendMode::kSrcOver);
1430 fuzz->nextRange(&R, -1, 2);
1431 fuzz->nextRange(&G, -1, 2);
1432 fuzz->nextRange(&B, -1, 2);
1433 fuzz->nextRange(&Alpha, 0, 1);
1439 fuzz_paint(fuzz, &paint, depth - 1);
1441 fuzz->next(&p0, &p1);
1446 fuzz_paint(fuzz, &paint, depth - 1);
1448 fuzz->next(&r);
1453 fuzz_paint(fuzz, &paint, depth - 1);
1456 fuzz->next(&radius, &center);
1461 fuzz_paint(fuzz, &paint, depth - 1);
1465 fuzz->next(&oval, &startAngle, &sweepAngle, &useCenter);
1470 fuzz_paint(fuzz, &paint, depth - 1);
1473 fuzz->next(&rect, &rx, &ry);
1478 fuzz_paint(fuzz, &paint, depth - 1);
1479 font = fuzz_font(fuzz);
1480 std::string str = make_fuzz_string(fuzz);
1482 fuzz->next(&x, &y);
1487 fuzz_paint(fuzz, &paint, depth - 1);
1492 fuzz->nextN(cubics, 12);
1493 fuzz->nextN(colors, 4);
1494 fuzz->next(&useTexCoords);
1496 fuzz->nextN(texCoords, 4);
1499 fuzz->nextEnum(&mode, SkBlendMode::kLastMode);
1511 static sk_sp<SkPicture> make_fuzz_picture(Fuzz* fuzz, int depth) {
1513 fuzz->next(&w, &h);
1515 fuzz_canvas(fuzz, pictureRecorder.beginRecording(w, h), depth - 1);
1519 DEF_FUZZ(NullCanvas, fuzz) {
1520 fuzz_canvas(fuzz, SkMakeNullCanvas().get());
1525 DEF_FUZZ(RasterN32Canvas, fuzz) {
1527 if (!surface || !surface->getCanvas()) { fuzz->signalBug(); }
1528 fuzz_canvas(fuzz, surface->getCanvas());
1531 DEF_FUZZ(RasterN32CanvasViaSerialization, fuzz) {
1533 fuzz_canvas(fuzz, recorder.beginRecording(SkIntToScalar(kCanvasSize.width()),
1536 if (!pic) { fuzz->signalBug(); }
1538 if (!data) { fuzz->signalBug(); }
1541 if (!deserialized) { fuzz->signalBug(); }
1547 DEF_FUZZ(ImageFilter, fuzz) {
1548 auto fil = make_fuzz_imageFilter(fuzz, 20);
1561 DEF_FUZZ(SerializedImageFilter, fuzz) {
1568 auto filter = make_fuzz_imageFilter(fuzz, 20);
1579 fuzz->nextRange(&j, 1, 250);
1582 fuzz->nextRange(&k, 1, 10);
1585 fuzz->nextRange(&s, 0, 2);
1599 fuzz->nextRange(&s, 0, 7);
1639 static void fuzz_ganesh(Fuzz* fuzz, GrDirectContext* context) {
1646 fuzz_canvas(fuzz, surface->getCanvas());
1649 DEF_FUZZ(NativeGLCanvas, fuzz) {
1658 fuzz_ganesh(fuzz, context);
1661 DEF_FUZZ(MockGPUCanvas, fuzz) {
1663 fuzz_ganesh(fuzz, f.get(sk_gpu_test::GrContextFactory::kMock_ContextType));
1667 DEF_FUZZ(PDFCanvas, fuzz) {
1670 fuzz_canvas(fuzz, doc->beginPage(SkIntToScalar(kCanvasSize.width()),
1674 // not a "real" thing to fuzz, used to debug errors found while fuzzing.
1675 DEF_FUZZ(_DumpCanvas, fuzz) {
1677 fuzz_canvas(fuzz, &debugCanvas);
1690 DEF_FUZZ(SVGCanvas, fuzz) {
1694 fuzz_canvas(fuzz, canvas.get());