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