1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2016 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "gm.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBlurImageFilter.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBlurMaskFilter.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCanvas.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkDashPathEffect.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkGradientShader.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkRegion.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass DrawRegionModesGM : public skiagm::GM { 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot DrawRegionModesGM() {} 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprotected: 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString onShortName() override { 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return SkString("drawregionmodes"); 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkISize onISize() override { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return SkISize::Make(375, 500); 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onOnceBeforeDraw() override { 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fRegion.op( 50, 50, 100, 100, SkRegion::kUnion_Op); 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fRegion.op( 50, 100, 150, 150, SkRegion::kUnion_Op); 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDraw(SkCanvas* canvas) override { 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clear(SK_ColorGREEN); 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint paint; 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setStyle(SkPaint::kFill_Style); 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setColor(0xFFFF0000); 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setAntiAlias(true); 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(-50.0f, 75.0f); 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->rotate(-45.0f); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRegion(fRegion, paint); 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(125.0f, 125.0f); 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setImageFilter(SkBlurImageFilter::Make(5.0f, 5.0f, nullptr, nullptr)); 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRegion(fRegion, paint); 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(-125.0f, 125.0f); 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setImageFilter(nullptr); 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect occluder = SkRect::MakeEmpty(); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 5.0f, occluder, 0)); 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRegion(fRegion, paint); 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(-125.0f, -125.0f); 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setMaskFilter(nullptr); 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setStyle(SkPaint::kStroke_Style); 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot float intervals[] = { 5.0f, 5.0f }; 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setPathEffect(SkDashPathEffect::Make(intervals, 2, 2.5f)); 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRegion(fRegion, paint); 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->setMatrix(SkMatrix::I()); 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(100, 325); 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setPathEffect(nullptr); 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setStyle(SkPaint::kFill_Style); 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPoint points[] = { SkPoint::Make(50.0f, 50.0f), SkPoint::Make(150.0f, 150.0f) }; 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkColor colors[] = { SK_ColorBLUE, SK_ColorYELLOW }; 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setShader(SkGradientShader::MakeLinear(points, colors, nullptr, 2, 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkShader::kClamp_TileMode)); 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRegion(fRegion, paint); 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRegion fRegion; 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef skiagm::GM INHERITED; 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEF_GM( return new DrawRegionModesGM; ) 80