aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-24 20:32:22 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-24 20:32:22 +0000
commitd3521f1a8dc07fe84d6a8f2151b0c176ff1ec8ca (patch)
tree7f04020f99f01833c1d8e63b910c8490b0ae0e34 /include/core
parent9797272edfc73f18b4807751377518317991b880 (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.h106
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)