| /* |
| * Copyright 2006 The Android Open Source Project |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkStroke_DEFINED |
| #define SkStroke_DEFINED |
| |
| #include "include/core/SkPaint.h" |
| #include "include/core/SkPath.h" |
| #include "include/core/SkPoint.h" |
| #include "include/private/SkTo.h" |
| #include "src/core/SkStrokerPriv.h" |
| |
| #ifdef SK_DEBUG |
| extern bool gDebugStrokerErrorSet; |
| extern SkScalar gDebugStrokerError; |
| extern int gMaxRecursion[]; |
| #endif |
| |
| /** \class SkStroke |
| SkStroke is the utility class that constructs paths by stroking |
| geometries (lines, rects, ovals, roundrects, paths). This is |
| invoked when a geometry or text is drawn in a canvas with the |
| kStroke_Mask bit set in the paint. |
| */ |
| class SkStroke { |
| public: |
| SkStroke(); |
| SkStroke(const SkPaint&); |
| SkStroke(const SkPaint&, SkScalar width); // width overrides paint.getStrokeWidth() |
| |
| SkPaint::Cap getCap() const { return (SkPaint::Cap)fCap; } |
| void setCap(SkPaint::Cap); |
| |
| SkPaint::Join getJoin() const { return (SkPaint::Join)fJoin; } |
| void setJoin(SkPaint::Join); |
| |
| void setMiterLimit(SkScalar); |
| void setWidth(SkScalar); |
| |
| bool getDoFill() const { return SkToBool(fDoFill); } |
| void setDoFill(bool doFill) { fDoFill = SkToU8(doFill); } |
| |
| /** |
| * ResScale is the "intended" resolution for the output. |
| * Default is 1.0. |
| * Larger values (res > 1) indicate that the result should be more precise, since it will |
| * be zoomed up, and small errors will be magnified. |
| * Smaller values (0 < res < 1) indicate that the result can be less precise, since it will |
| * be zoomed down, and small errors may be invisible. |
| */ |
| SkScalar getResScale() const { return fResScale; } |
| void setResScale(SkScalar rs) { |
| SkASSERT(rs > 0 && SkScalarIsFinite(rs)); |
| fResScale = rs; |
| } |
| |
| /** |
| * Stroke the specified rect, winding it in the specified direction.. |
| */ |
| void strokeRect(const SkRect& rect, SkPath* result, |
| SkPath::Direction = SkPath::kCW_Direction) const; |
| void strokePath(const SkPath& path, SkPath*) const; |
| |
| //////////////////////////////////////////////////////////////// |
| |
| private: |
| SkScalar fWidth, fMiterLimit; |
| SkScalar fResScale; |
| uint8_t fCap, fJoin; |
| bool fDoFill; |
| |
| friend class SkPaint; |
| }; |
| |
| #endif |