1dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com/* 2dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com * Copyright 2013 Google Inc. 3dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com * 4dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com * Use of this source code is governed by a BSD-style license that can be 5dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com * found in the LICENSE file. 6dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com */ 7dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#include "SampleCode.h" 8dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 9dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#include "SkCanvas.h" 10dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#include "SkRandom.h" 11dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#include "SkRRect.h" 12dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#include "SkTime.h" 13dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 14dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com// Implementation in C++ of Mozilla Canvas2D benchmark Canvas Clock Test 15dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com// See https://code.google.com/p/skia/issues/detail?id=1626 16dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 17dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#define USE_PATH 1 18dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 19dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.comclass ClockView : public SampleView { 20dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.compublic: 21dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com ClockView() {} 22dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 23dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.comprotected: 24dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // overrides from SkEventSink 2536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool onQuery(SkEvent* evt) override { 26dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com if (SampleCode::TitleQ(*evt)) { 27dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SampleCode::TitleR(evt, "Clock"); 28dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com return true; 29dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 30dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com return this->INHERITED::onQuery(evt); 31dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 32dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 3336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawContent(SkCanvas* canvas) override { 34dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkPaint paintFill; 35dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkPaint paintStroke; 36dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkPath path; 37dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 38dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 39dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->translate(150, 150); 40dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->scale(0.4f, 0.4f); 41dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(-180.f/2.f); 42dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 43dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintFill.setAntiAlias(true); 44dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintFill.setColor(SK_ColorBLACK); 45dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setAntiAlias(true); 46dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStyle(SkPaint::kStroke_Style); 47dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setColor(SK_ColorBLACK); 48dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(8); 49dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeCap(SkPaint::kRound_Cap); 50dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 51dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // Hour marks 52dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkRect rect; 53dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifndef USE_PATH 54dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(200-4, -4, 240+4, 4); 55dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkRRect rrect; 56dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkVector radii[4] = {{4,4}, {4,4}, {4,4}, {4,4}}; 57dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rrect.setRectRadii(rect, radii); 58dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 59dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 60dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com for (int i=0;i<12;i++){ 61dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(180.f/6.f); 62dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 63dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 64dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.moveTo(200,0); 65dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.lineTo(240,0); 66dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 67dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 68dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawRRect(rrect, paintFill); 69dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 70dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 71dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 72dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 73dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // Minute marks 74dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 75dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 76dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(5); 77dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 78dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(231.5f, -2.5f, 242.5, 2.5f); 79dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[0] = SkPoint::Make(2.5f,2.5f); 80dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[1] = SkPoint::Make(2.5f,2.5f); 81dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[2] = SkPoint::Make(2.5f,2.5f); 82dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[3] = SkPoint::Make(2.5f,2.5f); 83dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rrect.setRectRadii(rect, radii); 84dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 85dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com for (int i=0;i<60;i++){ 86dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com if (i%5 == 0) { 87dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(180.f/30.f); 88dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com continue; 89dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 90dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 91dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 92dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.moveTo(234,0); 93dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.lineTo(240,0); 94dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 95dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 96dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawRRect(rrect, paintFill); 97dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 98dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(180.f/30.f); 99dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 100dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 101dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 102dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkTime::DateTime time; 103dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com SkTime::GetDateTime(&time); 104dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com time.fHour = time.fHour >= 12 ? time.fHour-12 : time.fHour; 105dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintFill.setColor(SK_ColorBLACK); 106dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 107dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // Write hours 108dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 109dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(time.fHour*(180.f/6.f) + time.fMinute*(180.f/360.f) 110dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com + time.fSecond*(180.f/21600.f) ); 111dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 112dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(14); 113dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 114dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.moveTo(-20,0); 115dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.lineTo(80,0); 116dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 117dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 118dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-20-7, -7, 80+7, 7); 119dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[0] = SkPoint::Make(7,7); 120dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[1] = SkPoint::Make(7,7); 121dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[2] = SkPoint::Make(7,7); 122dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[3] = SkPoint::Make(7,7); 123dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rrect.setRectRadii(rect, radii); 124dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawRRect(rrect, paintFill); 125dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 126dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 127dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 128dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // Write minutes 129dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 130dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(time.fMinute*(180.f/30.f) 131dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com + time.fSecond*(180.f/1800.f) ); 132dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 133dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(10); 134dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 135dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.moveTo(-56,0); 136dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.lineTo(224,0); 137dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 138dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 139dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-56-5, -5, 224+5, 5); 140dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[0] = SkPoint::Make(5,5); 141dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[1] = SkPoint::Make(5,5); 142dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[2] = SkPoint::Make(5,5); 143dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[3] = SkPoint::Make(5,5); 144dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rrect.setRectRadii(rect, radii); 145dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawRRect(rrect, paintFill); 146dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 147dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 148dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 149dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com // Write seconds 150dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->save(); 151dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->rotate(time.fSecond*(180.f/30.f)); 152dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintFill.setColor(0xffd40000); 153dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setColor(0xffd40000); 154dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(6); 155dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 156dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 157dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.moveTo(-60,0); 158dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.lineTo(166,0); 159dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 160dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 161dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-60-3, -3, 166+3, 3); 162dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[0] = SkPoint::Make(3,3); 163dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[1] = SkPoint::Make(3,3); 164dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[2] = SkPoint::Make(3,3); 165dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com radii[3] = SkPoint::Make(3,3); 166dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rrect.setRectRadii(rect, radii); 167dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawRRect(rrect, paintFill); 168dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 169dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-20, -20, 20, 20); 170dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 171dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 172dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 0, 0, false); 173dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.addOval(rect, SkPath::kCCW_Direction); 174dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 360, 0, true); 175dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintFill); 176dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 177dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawOval(rect, paintFill); 178dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 179dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-20+190, -20, 20+190, 20); 180dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 181dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 182dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 0, 0, false); 183dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.addOval(rect, SkPath::kCCW_Direction); 184dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 360, 0, true); 185dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 186dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 187dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawOval(rect, paintStroke); 188dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 189dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintFill.setColor(0xff505050); 190dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 191dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-6, -6, 6, 6); 192dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 0, 0, false); 193dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.addOval(rect, SkPath::kCCW_Direction); 194dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 360, 0, true); 195dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintFill); 196dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 197dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawOval(rect, paintFill); 198dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-6, -6, 6, 6); 199dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawOval(rect, paintFill); 200dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 201dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 202dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 203dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setStrokeWidth(18); 204dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com paintStroke.setColor(0xff325FA2); 205dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com rect = SkRect::MakeLTRB(-284, -284, 284, 284); 206dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#ifdef USE_PATH 207dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.reset(); 208dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 0, 0, false); 209dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.addOval(rect, SkPath::kCCW_Direction); 210dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com path.arcTo(rect, 360, 0, true); 211dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawPath(path, paintStroke); 212dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#else 213dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->drawOval(rect, paintStroke); 214dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com#endif 215dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 216dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com canvas->restore(); 217dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 218dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com this->inval(NULL); 219dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com } 220dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 221dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.comprivate: 222dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 223dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com typedef SampleView INHERITED; 224dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com}; 225dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 226dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com////////////////////////////////////////////////////////////////////////////// 227dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.com 228dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.comstatic SkView* MyFactory() { return new ClockView; } 229dcd36f3c9db6ff415834276d5f4b5fa1ced8ba25jvanverth@google.comstatic SkViewRegister reg(MyFactory); 230