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 */ 8a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com#include "gm.h" 9a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com#include "SkRandom.h" 10a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 11a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comnamespace skiagm { 12a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 13a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comclass PointsGM : public GM { 14a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.compublic: 15ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com PointsGM() {} 16a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 17a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comprotected: 18a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org virtual uint32_t onGetFlags() const SK_OVERRIDE { 19a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return kSkipTiled_Flag; 20a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 21a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 22a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com virtual SkString onShortName() { 23a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com return SkString("points"); 24a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com } 25a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 26ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com virtual SkISize onISize() { 27f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(640, 490); 28a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com } 29a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 30e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org static void fill_pts(SkPoint pts[], size_t n, SkLCGRandom* rand) { 3117b78946096265d80215a6c946286ecaa35ea7edepoger@google.com for (size_t i = 0; i < n; i++) { 3217b78946096265d80215a6c946286ecaa35ea7edepoger@google.com // Compute these independently and store in variables, rather 3317b78946096265d80215a6c946286ecaa35ea7edepoger@google.com // than in the parameter-passing expression, to get consistent 3417b78946096265d80215a6c946286ecaa35ea7edepoger@google.com // evaluation order across compilers. 3572e49b8982586a5d8b0425f16d909c05a36ea8c3bsalomon@google.com SkScalar y = rand->nextUScalar1() * 480; 3672e49b8982586a5d8b0425f16d909c05a36ea8c3bsalomon@google.com SkScalar x = rand->nextUScalar1() * 640; 3717b78946096265d80215a6c946286ecaa35ea7edepoger@google.com pts[i].set(x, y); 3817b78946096265d80215a6c946286ecaa35ea7edepoger@google.com } 39a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com } 40a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 41a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com virtual void onDraw(SkCanvas* canvas) { 42a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->translate(SK_Scalar1, SK_Scalar1); 43a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 44e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkLCGRandom rand; 45a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com SkPaint p0, p1, p2, p3; 46a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com const size_t n = 99; 47a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 48a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p0.setColor(SK_ColorRED); 49a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p1.setColor(SK_ColorGREEN); 50a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p2.setColor(SK_ColorBLUE); 51a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p3.setColor(SK_ColorWHITE); 52a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 53a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p0.setStrokeWidth(SkIntToScalar(4)); 54a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p2.setStrokeCap(SkPaint::kRound_Cap); 55a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com p2.setStrokeWidth(SkIntToScalar(6)); 56a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 57a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com SkPoint* pts = new SkPoint[n]; 58a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com fill_pts(pts, n, &rand); 59a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 60a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPolygon_PointMode, n, pts, p0); 61a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kLines_PointMode, n, pts, p1); 62a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p2); 63a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com canvas->drawPoints(SkCanvas::kPoints_PointMode, n, pts, p3); 64a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 65a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com delete[] pts; 66a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com } 67a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 68a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comprivate: 69a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com typedef GM INHERITED; 70a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com}; 71a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 72a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com////////////////////////////////////////////////////////////////////////////// 73a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 74a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comstatic GM* MyFactory(void*) { return new PointsGM; } 75a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.comstatic GMRegistry reg(MyFactory); 76a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com 77a965a15abd57ea1bbbbfcc8dc1574d7d7a2e424dreed@google.com} 78