11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkStroke_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkStroke_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPoint.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPaint.h" 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkRect; 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkPath; 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** \class SkStroke 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkStroke is the utility class that constructs paths by stroking 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project geometries (lines, rects, ovals, roundrects, paths). This is 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project invoked when a geometry or text is drawn in a canvas with the 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kStroke_Mask bit set in the paint. 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/ 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkStroke { 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkStroke(); 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkStroke(const SkPaint&); 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkStroke(const SkPaint&, SkScalar width); // width overrides paint.getStrokeWidth() 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkPaint::Cap getCap() const { return (SkPaint::Cap)fCap; } 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setCap(SkPaint::Cap); 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkPaint::Join getJoin() const { return (SkPaint::Join)fJoin; } 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setJoin(SkPaint::Join); 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setMiterLimit(SkScalar); 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setWidth(SkScalar); 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool getDoFill() const { return SkToBool(fDoFill); } 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setDoFill(bool doFill) { fDoFill = SkToU8(doFill); } 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void strokeLine(const SkPoint& start, const SkPoint& end, SkPath*) const; 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void strokeRect(const SkRect& rect, SkPath*) const; 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void strokeOval(const SkRect& oval, SkPath*) const; 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void strokeRRect(const SkRect& rect, SkScalar rx, SkScalar ry, SkPath*) const; 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void strokePath(const SkPath& path, SkPath*) const; 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project //////////////////////////////////////////////////////////////// 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar fWidth, fMiterLimit; 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint8_t fCap, fJoin; 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkBool8 fDoFill; 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkPaint; 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 61