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