SamplePoints.cpp revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
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 */ 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SampleCode.h" 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h" 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h" 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "Sk64.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGradientShader.h" 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGraphics.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkImageDecoder.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkKernel33MaskFilter.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPath.h" 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRandom.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRegion.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkShader.h" 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkUtils.h" 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorPriv.h" 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorFilter.h" 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTime.h" 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTypeface.h" 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXfermode.h" 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkStream.h" 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXMLParser.h" 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 30f21833999d90ad9c8c584cff3238797b39cfc00breed@google.comclass PointsView : public SampleView { 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic: 32a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com PointsView() {} 33a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected: 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // overrides from SkEventSink 36a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com virtual bool onQuery(SkEvent* evt) { 37a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com if (SampleCode::TitleQ(*evt)) { 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SampleCode::TitleR(evt, "Points"); 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->INHERITED::onQuery(evt); 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 44a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com static void fill_pts(SkPoint pts[], size_t n, SkRandom* rand) { 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (size_t i = 0; i < n; i++) 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com pts[i].set(rand->nextUScalar1() * 640, rand->nextUScalar1() * 480); 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 48a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 49f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com virtual void onDrawContent(SkCanvas* canvas) { 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->translate(SK_Scalar1, SK_Scalar1); 51a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkRandom rand; 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPaint p0, p1, p2, p3; 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const size_t n = 99; 55a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p0.setColor(SK_ColorRED); 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p1.setColor(SK_ColorGREEN); 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p2.setColor(SK_ColorBLUE); 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p3.setColor(SK_ColorWHITE); 60a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p0.setStrokeWidth(SkIntToScalar(4)); 62b4f404ac4195e5b1f49e49c591bd69f98b246f9breed@android.com p2.setStrokeCap(SkPaint::kRound_Cap); 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com p2.setStrokeWidth(SkIntToScalar(6)); 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* pts = new SkPoint[n]; 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fill_pts(pts, n, &rand); 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 68a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPolygon_PointMode, n, pts, p0); 69a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kLines_PointMode, n, pts, p1); 70a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p2); 71a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p3); 72a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com delete[] pts; 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 75a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 78f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com typedef SampleView INHERITED; 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com////////////////////////////////////////////////////////////////////////////// 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkView* MyFactory() { return new PointsView; } 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkViewRegister reg(MyFactory); 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 86