1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2011 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#include "SampleCode.h" 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkView.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCanvas.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkGraphics.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkRandom.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkGradientShader.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPicture.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic sk_sp<SkShader> make_linear() { 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPoint pts[] = { 0, 0, SK_Scalar1/500, SK_Scalar1/500 }; 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkColor colors[] = { SK_ColorRED, SK_ColorBLUE }; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass ClampView : public SampleView { 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkShader> fGrad; 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ClampView() { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fGrad = make_linear(); 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprotected: 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // overrides from SkEventSink 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot virtual bool onQuery(SkEvent* evt) { 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (SampleCode::TitleQ(*evt)) { 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SampleCode::TitleR(evt, "Clamp"); 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return true; 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return this->INHERITED::onQuery(evt); 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot virtual void onDrawContent(SkCanvas* canvas) { 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint paint; 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setShader(fGrad); 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot// canvas->translate(this->width()/2, this->height()/2); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->translate(64, 64); 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPaint(paint); 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPicture pic; 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkCanvas* c = pic.beginRecording(100, 100, 0); 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkCanvas::LayerIter layerIterator(c, false); 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot layerIterator.next(); 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot layerIterator.done(); 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef SampleView INHERITED; 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot////////////////////////////////////////////////////////////////////////////// 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic SkView* MyFactory() { return new ClampView; } 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic SkViewRegister reg(MyFactory); 62