diff options
author | 2012-05-24 20:32:22 +0000 | |
---|---|---|
committer | 2012-05-24 20:32:22 +0000 | |
commit | d3521f1a8dc07fe84d6a8f2151b0c176ff1ec8ca (patch) | |
tree | 7f04020f99f01833c1d8e63b910c8490b0ae0e34 /include/core | |
parent | 9797272edfc73f18b4807751377518317991b880 (diff) |
revert 4046 -- GM:pathfill failed on one bot, maybe uninitialized memory somewhere?
git-svn-id: http://skia.googlecode.com/svn/trunk@4047 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/core')
-rw-r--r-- | include/core/SkPathEffect.h | 106 |
1 files changed, 12 insertions, 94 deletions
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h index edf749b44c..c4a60d23fe 100644 --- a/include/core/SkPathEffect.h +++ b/include/core/SkPathEffect.h @@ -11,85 +11,9 @@ #define SkPathEffect_DEFINED #include "SkFlattenable.h" -#include "SkPaint.h" class SkPath; -class SkStrokeRec { -public: - enum InitStyle { - kHairline_InitStyle, - kFill_InitStyle - }; - SkStrokeRec(InitStyle style); - - SkStrokeRec(const SkStrokeRec&); - explicit SkStrokeRec(const SkPaint&); - - enum Style { - kHairline_Style, - kFill_Style, - kStroke_Style, - kStrokeAndFill_Style - }; - - Style getStyle() const; - SkScalar getWidth() const { return fWidth; } - SkScalar getMiter() const { return fWidth; } - SkPaint::Cap getCap() const { return fCap; } - SkPaint::Join getJoin() const { return fJoin; } - - bool isHairlineStyle() const { - return kHairline_Style == this->getStyle(); - } - - bool isFillStyle() const { - return kFill_Style == this->getStyle(); - } - - void setFillStyle() { fWidth = -SK_Scalar1; } - void setHairlineStyle() { fWidth = 0; } - - void setStrokeStyle(SkScalar width, bool strokeAndFill = false) { - fWidth = width; - fStrokeAndFill = strokeAndFill; - } - - void setStrokeParams(SkPaint::Cap cap, SkPaint::Join join, SkScalar miterLimit) { - fCap = cap; - fJoin = join; - fMiterLimit = miterLimit; - } - - /** - * Returns true if this specifes any thick stroking, i.e. applyToPath() - * will return true. - */ - bool needToApply() const { - Style style = this->getStyle(); - return (kStroke_Style == style) || (kStrokeAndFill_Style == style); - } - - /** - * Apply these stroke parameters to the src path, returning the result - * in dst. - * - * If there was no change (i.e. style == hairline or fill) this returns - * false and dst is unchanged. Otherwise returns true and the result is - * stored in dst. - * - * src and dst may be the same path. - */ - bool applyToPath(SkPath* dst, const SkPath& src) const; - -private: - SkScalar fWidth; - SkScalar fMiterLimit; - SkPaint::Cap fCap; - SkPaint::Join fJoin; - bool fStrokeAndFill; -}; - /** \class SkPathEffect SkPathEffect is the base class for objects in the SkPaint that affect @@ -102,22 +26,13 @@ class SK_API SkPathEffect : public SkFlattenable { public: SkPathEffect() {} - /** - * Given a src path (input) and a stroke-rec (input and output), apply - * this effect to the src path, returning the new path in dst, and return - * true. If this effect cannot be applied, return false and ignore dst - * and stroke-rec. - * - * The stroke-rec specifies the initial request for stroking (if any). - * The effect can treat this as input only, or it can choose to change - * the rec as well. For example, the effect can decide to change the - * stroke's width or join, or the effect can change the rec from stroke - * to fill (or fill to stroke) in addition to returning a new (dst) path. - * - * If this method returns true, the caller will apply (as needed) the - * resulting stroke-rec to dst and then draw. - */ - virtual bool filterPath(SkPath* dst, const SkPath& src, SkStrokeRec*) = 0; + /** Given a src path and a width value, return true if the patheffect + has produced a new path (dst) and a new width value. If false is returned, + ignore dst and width. + On input, width >= 0 means the src should be stroked + On output, width >= 0 means the dst should be stroked + */ + virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width) = 0; /** * Compute a conservative bounds for its effect, given the src bounds. @@ -173,7 +88,9 @@ public: SkComposePathEffect(SkPathEffect* outer, SkPathEffect* inner) : INHERITED(outer, inner) {} - virtual bool filterPath(SkPath* dst, const SkPath& src, SkStrokeRec*) SK_OVERRIDE; + // overrides + + virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width); SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposePathEffect) @@ -203,7 +120,8 @@ public: SkSumPathEffect(SkPathEffect* first, SkPathEffect* second) : INHERITED(first, second) {} - virtual bool filterPath(SkPath* dst, const SkPath& src, SkStrokeRec*) SK_OVERRIDE; + // overrides + virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width); SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSumPathEffect) |