156fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo/*
256fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo * Copyright 2015 Google Inc.
356fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo *
456fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo * Use of this source code is governed by a BSD-style license that can be
556fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo * found in the LICENSE file.
656fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo */
756fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo
856fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo#include "SkAlphaThresholdFilter.h"
956fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo#include "SkImage.h"
10f7142e71d7c0a7d8406679e207ff766085499d2erobertphillips#include "SkRegion.h"
1156fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo#include "Test.h"
1256fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo
1356fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggostatic void test_flattenable(skiatest::Reporter* r,
1456fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo                             const SkFlattenable* f,
1556fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo                             const char* desc) {
1656fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    if (f) {
1756fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo        SkFlattenable::Factory factory = f->getFactory();
1856fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo        REPORTER_ASSERT(r, factory);
1956fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo        if (factory) {
2056fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo            if (!SkFlattenable::FactoryToName(factory)) {
2156fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo                ERRORF(r, "SkFlattenable::FactoryToName() fails with %s.", desc);
2256fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo            }
2356fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo        }
2456fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    }
2556fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo}
2656fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo
2756fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggoDEF_TEST(FlattenableFactoryToName, r) {
2856fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    SkIRect rects[2];
2956fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    rects[0] = SkIRect::MakeXYWH(0, 150, 500, 200);
3056fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    rects[1] = SkIRect::MakeXYWH(150, 0, 200, 500);
3156fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    SkRegion region;
3256fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    region.setRects(rects, 2);
33f624204300d8cd3b2cdb933b144980ff56852d42robertphillips    sk_sp<SkImageFilter> filter(SkAlphaThresholdFilter::Make(region, 0.2f, 0.7f, nullptr));
34f624204300d8cd3b2cdb933b144980ff56852d42robertphillips    test_flattenable(r, filter.get(), "SkAlphaThresholdFilter()");
3556fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo
3656fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    SkBitmap bm;
3756fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    bm.allocN32Pixels(8, 8);
3856fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo    bm.eraseColor(SK_ColorCYAN);
399ce9d6772df650ceb0511f275e1a83dffa78ff72reed    sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
400acd7954a9e654d7e9c11a532eeeeb2f18a76152Mike Reed    test_flattenable(r, image->makeShader().get(), "SkImage::newShader()");
4156fbbfe609baf5a6a8e21615b4a78fe6a6e364e0scroggo}
42