1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 87a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SampleCode.h" 97a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkView.h" 107a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkCanvas.h" 117a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkGraphics.h" 127a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkRandom.h" 137a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkGradientShader.h" 147a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com#include "SkPicture.h" 157a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 167a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comstatic SkShader* make_linear() { 177a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkPoint pts[] = { 0, 0, SK_Scalar1/500, SK_Scalar1/500 }; 187a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkColor colors[] = { SK_ColorRED, SK_ColorBLUE }; 197a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com return SkGradientShader::CreateLinear(pts, colors, NULL, 2, 207a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkShader::kClamp_TileMode); 217a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com} 227a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 237a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comclass ClampView : public SampleView { 247a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkShader* fGrad; 257a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 267a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.compublic: 277a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com ClampView() { 287a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com fGrad = make_linear(); 297a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com } 307a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 317a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com virtual ~ClampView() { 327a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com fGrad->unref(); 337a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com } 347a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 357a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comprotected: 367a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com // overrides from SkEventSink 377a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com virtual bool onQuery(SkEvent* evt) { 387a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com if (SampleCode::TitleQ(*evt)) { 397a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SampleCode::TitleR(evt, "Clamp"); 407a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com return true; 417a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com } 427a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com return this->INHERITED::onQuery(evt); 437a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com } 447a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 457a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com virtual void onDrawContent(SkCanvas* canvas) { 467a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkPaint paint; 477a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com paint.setShader(fGrad); 487a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 497a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com// canvas->translate(this->width()/2, this->height()/2); 507a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com canvas->translate(64, 64); 517a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com canvas->drawPaint(paint); 527a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 537a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkPicture pic; 547a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkCanvas* c = pic.beginRecording(100, 100, 0); 557a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com SkCanvas::LayerIter layerIterator(c, false); 567a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com layerIterator.next(); 577a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com layerIterator.done(); 587a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com } 597a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 607a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comprivate: 617a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com typedef SampleView INHERITED; 627a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com}; 637a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 647a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com////////////////////////////////////////////////////////////////////////////// 657a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.com 667a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comstatic SkView* MyFactory() { return new ClampView; } 677a253379e7c420002c0fa93ac05a1bffbb5d557dreed@google.comstatic SkViewRegister reg(MyFactory); 68