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 "SkPath.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkGradientShader.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot// Exercises code in GrRenderTargetContext that attempts to replace a rrect clip/draw paint with 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot// draw rrect. 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEF_SIMPLE_GM(rrect_clip_draw_paint, canvas, 256, 256) { 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRRect rrect = SkRRect::MakeRectXY(SkRect::MakeXYWH(10.f, 10.f, 236.f, 236.f), 30.f, 40.f); 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint p; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot p.setColor(SK_ColorRED); 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkMatrix zoomOut; 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zoomOut.setScale(0.7f, 0.7f, 128.f, 128.f); 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkRect layerRect = SkRect::MakeWH(256.f, 256.f); 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->saveLayer(layerRect, nullptr); 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clipRRect(rrect, true); 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPaint(p); 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->restore(); 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->concat(zoomOut); 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot p.setColor(SK_ColorBLUE); 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->saveLayer(layerRect, nullptr); 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clipRRect(rrect, false); 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPaint(p); 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->restore(); 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot constexpr SkPoint kPts[] = {{0.f, 0.f}, {256.f, 256.f}}; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot constexpr SkColor kColors1[] = {SK_ColorCYAN, SK_ColorGREEN}; 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot p.setShader(SkGradientShader::MakeLinear(kPts, kColors1, nullptr, 2, 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkShader::kClamp_TileMode)); 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->concat(zoomOut); 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->saveLayer(layerRect, nullptr); 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clipRRect(rrect, true); 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPaint(p); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->restore(); 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot constexpr SkColor kColors2[] = {SK_ColorMAGENTA, SK_ColorGRAY}; 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot p.setShader(SkGradientShader::MakeRadial({128.f, 128.f}, 128.f, kColors2, nullptr, 2, 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkShader::kClamp_TileMode)); 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->concat(zoomOut); 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->saveLayer(layerRect, nullptr); 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clipRRect(rrect, false); 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPaint(p); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->restore(); 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 55