diff options
author | bsalomon <bsalomon@google.com> | 2016-06-13 10:22:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-13 10:22:48 -0700 |
commit | 398e3f4b9f67e0c7f635e68cae1ff7f42213bbfc (patch) | |
tree | ed4f532937b72b00c9521aa90980033d041a1f2c /src/utils/SkDashPathPriv.h | |
parent | 2ec06c9b1c861d456b85ffe48b27e4dcae4800cb (diff) |
Add control over whether lines are special cased in SkDashPath. Disable when called from GrShape.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2055253002
Review-Url: https://codereview.chromium.org/2055253002
Diffstat (limited to 'src/utils/SkDashPathPriv.h')
-rw-r--r-- | src/utils/SkDashPathPriv.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/utils/SkDashPathPriv.h b/src/utils/SkDashPathPriv.h index 54bf9a4870..115128131f 100644 --- a/src/utils/SkDashPathPriv.h +++ b/src/utils/SkDashPathPriv.h @@ -11,7 +11,7 @@ #include "SkPathEffect.h" namespace SkDashPath { - /* + /** * Calculates the initialDashLength, initialDashIndex, and intervalLength based on the * inputed phase and intervals. If adjustedPhase is passed in, then the phase will be * adjusted to be between 0 and intervalLength. The result will be stored in adjustedPhase. @@ -26,13 +26,23 @@ namespace SkDashPath { bool FilterDashPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*, const SkPathEffect::DashInfo& info); - /* - * Caller should have already used ValidDashPath to exclude invalid data. + /** See comments for InternalFilter */ + enum class StrokeRecApplication { + kDisallow, + kAllow, + }; + + /** + * Caller should have already used ValidDashPath to exclude invalid data. Typically, this leaves + * the strokeRec unmodified. However, for some simple shapes (e.g. a line) it may directly + * evaluate the dash and stroke to produce a stroked output path with a fill strokeRec. Passing + * true for disallowStrokeRecApplication turns this behavior off. */ bool InternalFilter(SkPath* dst, const SkPath& src, SkStrokeRec* rec, const SkRect* cullRect, const SkScalar aIntervals[], int32_t count, SkScalar initialDashLength, int32_t initialDashIndex, - SkScalar intervalLength); + SkScalar intervalLength, + StrokeRecApplication = StrokeRecApplication::kAllow); bool ValidDashPath(SkScalar phase, const SkScalar intervals[], int32_t count); } |