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