Ejemplo n.º 1
0
static void path_fuzz_stroker(SkBitmap* bitmap, int seed) {
    sk_parallel_for(100, [&](int i) {
        int localSeed = seed + i;

        FuzzPath fuzzPath;
        fuzzPath.setStrokeOnly();
        fuzzPath.setSeed(localSeed);
        fuzzPath.randomize();
        const SkPath& path = fuzzPath.getPath();
        const SkPaint& paint = fuzzPath.getPaint();
        const SkImageInfo& info = bitmap->info();
        SkCanvas* canvas(
            SkCanvas::NewRasterDirect(info, bitmap->getPixels(), bitmap->rowBytes()));
        int w = info.width() / 4;
        int h = info.height() / 4;
        int x = localSeed / 4 % 4;
        int y = localSeed % 4;
        SkRect clipBounds = SkRect::MakeXYWH(SkIntToScalar(x) * w, SkIntToScalar(y) * h,
            SkIntToScalar(w), SkIntToScalar(h));
        canvas->save();
            canvas->clipRect(clipBounds);
            canvas->translate(SkIntToScalar(x) * w, SkIntToScalar(y) * h);
            canvas->drawPath(path, paint);
        canvas->restore();
    });
}
Ejemplo n.º 2
0
static void test_fuzz(ThreadState* data) {
    FuzzPath fuzzPath;
    fuzzPath.setStrokeOnly();
    fuzzPath.setSeed(data->fSeed);
    fuzzPath.randomize();
    const SkPath& path = fuzzPath.getPath();
    const SkPaint& paint = fuzzPath.getPaint();
    const SkImageInfo& info = data->fBitmap->info();
    SkCanvas* canvas(SkCanvas::NewRasterDirect(info, data->fBitmap->getPixels(),
            data->fBitmap->rowBytes()));
    int w = info.width() / 4;
    int h = info.height() / 4;
    int x = data->fSeed / 4 % 4;
    int y = data->fSeed % 4;
    SkRect clipBounds = SkRect::MakeXYWH(SkIntToScalar(x) * w, SkIntToScalar(y) * h, 
        SkIntToScalar(w), SkIntToScalar(h));
    canvas->save();
        canvas->clipRect(clipBounds);
        canvas->translate(SkIntToScalar(x) * w, SkIntToScalar(y) * h);
        canvas->drawPath(path, paint);
    canvas->restore();
}