13b14dc18511fdc2612791d07707e4385182d3ca7reed@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. 73b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com */ 83b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 93b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 10ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 113b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com#include "gm.h" 123b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com#include "SkRandom.h" 133b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 143b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comnamespace skiagm { 153b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 163b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com#define W 400 173b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com#define H 400 183b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com#define N 100 193b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 203b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comstatic const SkScalar SW = SkIntToScalar(W); 213b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comstatic const SkScalar SH = SkIntToScalar(H); 223b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 23bc451d2823e5b4a14b7d4382a9bd2b5f15c2325ecommit-bot@chromium.orgclass StrokeRectsGM : public GM { 243b14dc18511fdc2612791d07707e4385182d3ca7reed@google.compublic: 25bc451d2823e5b4a14b7d4382a9bd2b5f15c2325ecommit-bot@chromium.org StrokeRectsGM() {} 26d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 273b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comprotected: 28a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 2936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkString onShortName() override { 303b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com return SkString("strokerects"); 313b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 323b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 3336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkISize onISize() override { 34f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(W*2, H*2); 353b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 363b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 37f9d610179d7d4198b57b12d06f8d1ca09f580df3scroggo static void rnd_rect(SkRect* r, SkRandom& rand) { 383b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkScalar x = rand.nextUScalar1() * W; 393b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkScalar y = rand.nextUScalar1() * H; 403b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkScalar w = rand.nextUScalar1() * (W >> 2); 413b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkScalar h = rand.nextUScalar1() * (H >> 2); 4217b78946096265d80215a6c946286ecaa35ea7edepoger@google.com SkScalar hoffset = rand.nextSScalar1(); 4317b78946096265d80215a6c946286ecaa35ea7edepoger@google.com SkScalar woffset = rand.nextSScalar1(); 44d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 453b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com r->set(x, y, x + w, y + h); 4617b78946096265d80215a6c946286ecaa35ea7edepoger@google.com r->offset(-w/2 + woffset, -h/2 + hoffset); 473b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 483b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 4936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDraw(SkCanvas* canvas) override { 503b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkPaint paint; 513b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com paint.setStyle(SkPaint::kStroke_Style); 523b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 533b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com for (int y = 0; y < 2; y++) { 543b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com paint.setAntiAlias(!!y); 553b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com for (int x = 0; x < 2; x++) { 563b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com paint.setStrokeWidth(x * SkIntToScalar(3)); 573b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 583b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkAutoCanvasRestore acr(canvas, true); 593b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com canvas->translate(SW * x, SH * y); 603c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com canvas->clipRect(SkRect::MakeLTRB( 613c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com SkIntToScalar(2), SkIntToScalar(2) 623c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com , SW - SkIntToScalar(2), SH - SkIntToScalar(2) 633c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com )); 643b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 65f9d610179d7d4198b57b12d06f8d1ca09f580df3scroggo SkRandom rand; 663b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com for (int i = 0; i < N; i++) { 673b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com SkRect r; 683b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com rnd_rect(&r, rand); 693b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com canvas->drawRect(r, paint); 703b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 713b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 723b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 733b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com } 74d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 753b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comprivate: 763b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com typedef GM INHERITED; 773b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com}; 783b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 793b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com////////////////////////////////////////////////////////////////////////////// 803b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 81bc451d2823e5b4a14b7d4382a9bd2b5f15c2325ecommit-bot@chromium.orgstatic GM* MyFactory(void*) { return new StrokeRectsGM; } 823b14dc18511fdc2612791d07707e4385182d3ca7reed@google.comstatic GMRegistry reg(MyFactory); 833b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com 843b14dc18511fdc2612791d07707e4385182d3ca7reed@google.com} 85