1ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com/* 2ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com * Copyright 2013 Google Inc. 3ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com * 4ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com * Use of this source code is governed by a BSD-style license that can be 5ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com * found in the LICENSE file. 6ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com */ 7ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 8ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com#include "gm.h" 9ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 10ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.comnamespace skiagm { 11ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 12ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com// Draw rects with various stroke widths at 1/8 pixel increments 13ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.comclass ThinStrokedRectsGM : public GM { 14ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.compublic: 15ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com ThinStrokedRectsGM() { 16ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com this->setBGColor(0xFF000000); 17ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 18ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 19ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.comprotected: 20ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com virtual SkString onShortName() SK_OVERRIDE { 21ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com return SkString("thinstrokedrects"); 22ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 23ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 24ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com virtual SkISize onISize() SK_OVERRIDE { 25f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(240, 320); 26ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 27ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 28ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 29ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 30ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com SkPaint paint; 31ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setColor(SK_ColorWHITE); 32ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setStyle(SkPaint::kStroke_Style); 33ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setAntiAlias(true); 34ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 35ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com static const SkRect rect = { 0, 0, 10, 10 }; 36ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com static const SkRect rect2 = { 0, 0, 20, 20 }; 37ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 38ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com static const SkScalar gStrokeWidths[] = { 39ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 4, 2, 1, 0.5f, 0.25f, 0.125f, 0 40ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com }; 41ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 42ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(5, 5); 43ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com for (int i = 0; i < 8; ++i) { 44ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->save(); 45ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(i*0.125f, i*30.0f); 46ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com for (size_t j = 0; j < SK_ARRAY_COUNT(gStrokeWidths); ++j) { 47ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setStrokeWidth(gStrokeWidths[j]); 48ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->drawRect(rect, paint); 49ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(15, 0); 50ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 51ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->restore(); 52ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 53ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 54ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com // Draw a second time in red with a scale 55ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setColor(SK_ColorRED); 56ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(0, 15); 57ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com for (int i = 0; i < 8; ++i) { 58ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->save(); 59ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(i*0.125f, i*30.0f); 60ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->scale(0.5f, 0.5f); 61ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com for (size_t j = 0; j < SK_ARRAY_COUNT(gStrokeWidths); ++j) { 62ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com paint.setStrokeWidth(2.0f * gStrokeWidths[j]); 63ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->drawRect(rect2, paint); 64ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->translate(30, 0); 65ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 66ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com canvas->restore(); 67ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 68ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com } 69ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 70ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.comprivate: 71ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com typedef GM INHERITED; 72ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com}; 73ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 74ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com////////////////////////////////////////////////////////////////////////////// 75ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 76ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.comDEF_GM( return SkNEW(ThinStrokedRectsGM); ) 77ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com 78ad4d499f861b4cbeb870b20728eed88e830cdf4brobertphillips@google.com} 79