1 /* 2 * Copyright 2006 The Android Open Source Project 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkStroke_DEFINED 9 #define SkStroke_DEFINED 10 11 #include "SkPath.h" 12 #include "SkPoint.h" 13 #include "SkPaint.h" 14 15 /** \class SkStroke 16 SkStroke is the utility class that constructs paths by stroking 17 geometries (lines, rects, ovals, roundrects, paths). This is 18 invoked when a geometry or text is drawn in a canvas with the 19 kStroke_Mask bit set in the paint. 20 */ 21 class SkStroke { 22 public: 23 SkStroke(); 24 SkStroke(const SkPaint&); 25 SkStroke(const SkPaint&, SkScalar width); // width overrides paint.getStrokeWidth() 26 getCap()27 SkPaint::Cap getCap() const { return (SkPaint::Cap)fCap; } 28 void setCap(SkPaint::Cap); 29 getJoin()30 SkPaint::Join getJoin() const { return (SkPaint::Join)fJoin; } 31 void setJoin(SkPaint::Join); 32 33 void setMiterLimit(SkScalar); 34 void setWidth(SkScalar); 35 getDoFill()36 bool getDoFill() const { return SkToBool(fDoFill); } setDoFill(bool doFill)37 void setDoFill(bool doFill) { fDoFill = SkToU8(doFill); } 38 39 /** 40 * Stroke the specified rect, winding it in the specified direction.. 41 */ 42 void strokeRect(const SkRect& rect, SkPath* result, 43 SkPath::Direction = SkPath::kCW_Direction) const; 44 void strokePath(const SkPath& path, SkPath*) const; 45 46 //////////////////////////////////////////////////////////////// 47 48 private: 49 SkScalar fWidth, fMiterLimit; 50 uint8_t fCap, fJoin; 51 SkBool8 fDoFill; 52 53 friend class SkPaint; 54 }; 55 56 #endif 57