11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 80b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SampleCode.h" 90b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkView.h" 100b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkCanvas.h" 110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkGradientShader.h" 120b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstatic SkShader* make_grad(SkScalar w, SkScalar h) { 140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkColor colors[] = { 0xFF000000, 0xFF333333 }; 150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPoint pts[] = { { 0, 0 }, { w, h } }; 160b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return SkGradientShader::CreateLinear(pts, colors, NULL, 2, 170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkShader::kClamp_TileMode); 180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger} 190b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 200b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass BigGradientView : public SampleView { 210b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerpublic: 220b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger BigGradientView() {} 230b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 240b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprotected: 250b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger // overrides from SkEventSink 260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger virtual bool onQuery(SkEvent* evt) { 270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger if (SampleCode::TitleQ(*evt)) { 280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SampleCode::TitleR(evt, "BigGradient"); 290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return true; 300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return this->INHERITED::onQuery(evt); 320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger virtual void onDrawContent(SkCanvas* canvas) { 350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkRect r; 360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger r.set(0, 0, this->width(), this->height()); 370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint p; 380b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger p.setShader(make_grad(this->width(), this->height()))->unref(); 390b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->drawRect(r, p); 400b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprivate: 430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger typedef SampleView INHERITED; 440b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger}; 450b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 460b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger/////////////////////////////////////////////////////////////////////////////// 470b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 480b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstatic SkView* MyFactory() { return new BigGradientView; } 490b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstatic SkViewRegister reg(MyFactory); 500b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 51