1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #include "SampleCode.h" 8 #include "SkView.h" 9 #include "SkCanvas.h" 10 #include "SkGraphics.h" 11 #include "SkRandom.h" 12 #include "SkGradientShader.h" 13 #include "SkPicture.h" 14 15 static sk_sp<SkShader> make_linear() { 16 SkPoint pts[] = { 0, 0, SK_Scalar1/500, SK_Scalar1/500 }; 17 SkColor colors[] = { SK_ColorRED, SK_ColorBLUE }; 18 return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); 19 } 20 21 class ClampView : public SampleView { 22 sk_sp<SkShader> fGrad; 23 24 public: 25 ClampView() { 26 fGrad = make_linear(); 27 } 28 29 protected: 30 // overrides from SkEventSink 31 virtual bool onQuery(SkEvent* evt) { 32 if (SampleCode::TitleQ(*evt)) { 33 SampleCode::TitleR(evt, "Clamp"); 34 return true; 35 } 36 return this->INHERITED::onQuery(evt); 37 } 38 39 virtual void onDrawContent(SkCanvas* canvas) { 40 SkPaint paint; 41 paint.setShader(fGrad); 42 43 // canvas->translate(this->width()/2, this->height()/2); 44 canvas->translate(64, 64); 45 canvas->drawPaint(paint); 46 47 SkPicture pic; 48 SkCanvas* c = pic.beginRecording(100, 100, 0); 49 SkCanvas::LayerIter layerIterator(c, false); 50 layerIterator.next(); 51 layerIterator.done(); 52 } 53 54 private: 55 typedef SampleView INHERITED; 56 }; 57 58 ////////////////////////////////////////////////////////////////////////////// 59 60 static SkView* MyFactory() { return new ClampView; } 61 static SkViewRegister reg(MyFactory); 62