11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 80b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SampleCode.h" 90b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkView.h" 100b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkCanvas.h" 110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkDevice.h" 120b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkPaint.h" 130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass StrokeRectSample : public SampleView { 150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerpublic: 160b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger StrokeRectSample() {} 170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprotected: 190b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger // overrides from SkEventSink 200b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger virtual bool onQuery(SkEvent* evt) { 210b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger if (SampleCode::TitleQ(*evt)) { 220b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SampleCode::TitleR(evt, "Stroke Rects"); 230b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return true; 240b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 250b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger return this->INHERITED::onQuery(evt); 260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger virtual void onDrawContent(SkCanvas* canvas) { 290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint paint; 300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger paint.setAntiAlias(true); 310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger paint.setStyle(SkPaint::kStroke_Style); 320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger paint.setStrokeWidth(SkIntToScalar(20)); 330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint hair; 350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger hair.setStyle(SkPaint::kStroke_Style); 360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger hair.setColor(SK_ColorRED); 370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 380b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger static const SkISize gSize[] = { 390b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 100, 50 }, 400b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 100, 0 }, 410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 0, 50 }, 420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger { 0, 0 } 430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger }; 440b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 450b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger static const SkPaint::Join gJoin[] = { 460b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint::kMiter_Join, 470b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint::kRound_Join, 480b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkPaint::kBevel_Join 490b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger }; 500b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 510b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->translate(paint.getStrokeWidth(), paint.getStrokeWidth()); 520b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger for (size_t i = 0; i < SK_ARRAY_COUNT(gJoin); ++i) { 530b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger paint.setStrokeJoin(gJoin[i]); 540b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 550b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->save(); 560b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger for (size_t j = 0; j < SK_ARRAY_COUNT(gSize); ++j) { 570b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkRect r = SkRect::MakeWH(SkIntToScalar(gSize[j].fWidth), 580b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger SkIntToScalar(gSize[j].fHeight)); 590b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->drawRect(r, paint); 600b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->drawRect(r, hair); 610b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->translate(0, SkIntToScalar(100)); 620b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 630b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->restore(); 640b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger canvas->translate(SkIntToScalar(150), 0); 650b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 660b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger } 670b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 680b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprivate: 690b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger typedef SampleView INHERITED; 700b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger}; 710b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 720b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger/////////////////////////////////////////////////////////////////////////////// 730b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 740b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstatic SkView* MyFactory() { return new StrokeRectSample; } 750b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerstatic SkViewRegister reg(MyFactory); 760b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger 77