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