1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2011 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 8cb93a386Sopenharmony_ci#include "include/core/SkPaint.h" 9cb93a386Sopenharmony_ci#include "include/effects/SkColorMatrixFilter.h" 10cb93a386Sopenharmony_ci#include "include/effects/SkDiscretePathEffect.h" 11cb93a386Sopenharmony_ci#include "include/effects/SkGradientShader.h" 12cb93a386Sopenharmony_ci#include "samplecode/Sample.h" 13cb93a386Sopenharmony_ci#include "src/core/SkBlurMask.h" 14cb93a386Sopenharmony_ci#include "src/effects/SkEmbossMaskFilter.h" 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci//#define COLOR 0xFFFF8844 18cb93a386Sopenharmony_ci#define COLOR 0xFF888888 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_cistatic void paint_proc0(SkPaint*) { 21cb93a386Sopenharmony_ci} 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_cistatic void paint_proc1(SkPaint* paint) { 24cb93a386Sopenharmony_ci paint->setMaskFilter(SkMaskFilter::MakeBlur( 25cb93a386Sopenharmony_ci kNormal_SkBlurStyle, 26cb93a386Sopenharmony_ci SkBlurMask::ConvertRadiusToSigma(2))); 27cb93a386Sopenharmony_ci} 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_cistatic void paint_proc2(SkPaint* paint) { 30cb93a386Sopenharmony_ci paint->setMaskFilter(SkEmbossMaskFilter::Make( 31cb93a386Sopenharmony_ci SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1)), 32cb93a386Sopenharmony_ci { { SK_Scalar1, SK_Scalar1, SK_Scalar1 }, 0, 64, 16 })); 33cb93a386Sopenharmony_ci} 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_cistatic void paint_proc3(SkPaint* paint) { 36cb93a386Sopenharmony_ci SkColor colors[] = { SK_ColorRED, COLOR, SK_ColorBLUE }; 37cb93a386Sopenharmony_ci SkPoint pts[] = { { 3, 0 }, { 7, 5 } }; 38cb93a386Sopenharmony_ci paint->setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors), 39cb93a386Sopenharmony_ci SkTileMode::kMirror)); 40cb93a386Sopenharmony_ci} 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_cistatic void paint_proc5(SkPaint* paint) { 43cb93a386Sopenharmony_ci paint_proc3(paint); 44cb93a386Sopenharmony_ci paint_proc2(paint); 45cb93a386Sopenharmony_ci} 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_citypedef void (*PaintProc)(SkPaint*); 48cb93a386Sopenharmony_ciconst PaintProc gPaintProcs[] = { 49cb93a386Sopenharmony_ci paint_proc0, 50cb93a386Sopenharmony_ci paint_proc1, 51cb93a386Sopenharmony_ci paint_proc2, 52cb93a386Sopenharmony_ci paint_proc3, 53cb93a386Sopenharmony_ci paint_proc5, 54cb93a386Sopenharmony_ci}; 55cb93a386Sopenharmony_ci 56cb93a386Sopenharmony_ci/////////////////////////////////////////////////////////////////////////////// 57cb93a386Sopenharmony_ci 58cb93a386Sopenharmony_ciclass EffectsView : public Sample { 59cb93a386Sopenharmony_cipublic: 60cb93a386Sopenharmony_ci SkPath fPath; 61cb93a386Sopenharmony_ci SkPaint fPaint[SK_ARRAY_COUNT(gPaintProcs)]; 62cb93a386Sopenharmony_ci 63cb93a386Sopenharmony_ci EffectsView() { 64cb93a386Sopenharmony_ci size_t i; 65cb93a386Sopenharmony_ci const float pts[] = { 66cb93a386Sopenharmony_ci 0, 0, 67cb93a386Sopenharmony_ci 10, 0, 68cb93a386Sopenharmony_ci 10, 5, 69cb93a386Sopenharmony_ci 20, -5, 70cb93a386Sopenharmony_ci 10, -15, 71cb93a386Sopenharmony_ci 10, -10, 72cb93a386Sopenharmony_ci 0, -10 73cb93a386Sopenharmony_ci }; 74cb93a386Sopenharmony_ci fPath.moveTo(pts[0], pts[1]); 75cb93a386Sopenharmony_ci for (i = 2; i < SK_ARRAY_COUNT(pts); i += 2) { 76cb93a386Sopenharmony_ci fPath.lineTo(pts[i], pts[i+1]); 77cb93a386Sopenharmony_ci } 78cb93a386Sopenharmony_ci 79cb93a386Sopenharmony_ci for (i = 0; i < SK_ARRAY_COUNT(gPaintProcs); i++) { 80cb93a386Sopenharmony_ci fPaint[i].setAntiAlias(true); 81cb93a386Sopenharmony_ci fPaint[i].setColor(COLOR); 82cb93a386Sopenharmony_ci gPaintProcs[i](&fPaint[i]); 83cb93a386Sopenharmony_ci } 84cb93a386Sopenharmony_ci 85cb93a386Sopenharmony_ci this->setBGColor(0xFFDDDDDD); 86cb93a386Sopenharmony_ci } 87cb93a386Sopenharmony_ci 88cb93a386Sopenharmony_ciprotected: 89cb93a386Sopenharmony_ci SkString name() override { return SkString("Effects"); } 90cb93a386Sopenharmony_ci 91cb93a386Sopenharmony_ci void onDrawContent(SkCanvas* canvas) override { 92cb93a386Sopenharmony_ci canvas->scale(3, 3); 93cb93a386Sopenharmony_ci canvas->translate(10, 30); 94cb93a386Sopenharmony_ci for (size_t i = 0; i < SK_ARRAY_COUNT(fPaint); i++) { 95cb93a386Sopenharmony_ci canvas->drawPath(fPath, fPaint[i]); 96cb93a386Sopenharmony_ci canvas->translate(32, 0); 97cb93a386Sopenharmony_ci } 98cb93a386Sopenharmony_ci } 99cb93a386Sopenharmony_ci 100cb93a386Sopenharmony_ciprivate: 101cb93a386Sopenharmony_ci using INHERITED = Sample; 102cb93a386Sopenharmony_ci}; 103cb93a386Sopenharmony_ci 104cb93a386Sopenharmony_ci/////////////////////////////////////////////////////////////////////////////// 105cb93a386Sopenharmony_ci 106cb93a386Sopenharmony_ciDEF_SAMPLE( return new EffectsView(); ) 107