diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrStyle.cpp | 10 | ||||
-rw-r--r-- | src/gpu/GrStyle.h | 12 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/gpu/GrStyle.cpp b/src/gpu/GrStyle.cpp index 6480fb341a..68238dded9 100644 --- a/src/gpu/GrStyle.cpp +++ b/src/gpu/GrStyle.cpp @@ -137,14 +137,20 @@ bool GrStyle::applyToPath(SkPath* dst, SkStrokeRec::InitStyle* style, const SkPa SkASSERT(style); SkASSERT(dst); SkStrokeRec strokeRec = fStrokeRec; - if (!apply_path_effect(dst, &strokeRec, fPathEffect, src)) { + const SkPath* pathForStrokeRec = &src; + if (apply_path_effect(dst, &strokeRec, fPathEffect, src)) { + pathForStrokeRec = dst; + } else if (fPathEffect) { return false; } if (strokeRec.needToApply()) { - if (!strokeRec.applyToPath(dst, *dst)) { + if (!strokeRec.applyToPath(dst, *pathForStrokeRec)) { return false; } *style = SkStrokeRec::kFill_InitStyle; + } else if (!fPathEffect) { + // Nothing to do for path effect or stroke, fail. + return false; } else { SkASSERT(SkStrokeRec::kFill_Style == strokeRec.getStyle() || SkStrokeRec::kHairline_Style == strokeRec.getStyle()); diff --git a/src/gpu/GrStyle.h b/src/gpu/GrStyle.h index bc87ebd61f..2ca037a463 100644 --- a/src/gpu/GrStyle.h +++ b/src/gpu/GrStyle.h @@ -135,14 +135,18 @@ public: /** * Applies just the path effect and returns remaining stroke information. This will fail if - * there is no path effect. + * there is no path effect. dst may or may not have been overwritten on failure. */ - bool applyPathEffectToPath(SkPath* dst, SkStrokeRec* remainingStoke, const SkPath& src) const; + bool SK_WARN_UNUSED_RESULT applyPathEffectToPath(SkPath* dst, SkStrokeRec* remainingStoke, + const SkPath& src) const; /** If this succeeds then the result path should be filled or hairlined as indicated by the returned SkStrokeRec::InitStyle value. Will fail if there is no path effect and the - strokerec doesn't change the geometry. */ - bool applyToPath(SkPath* dst, SkStrokeRec::InitStyle* fillOrHairline, const SkPath& src) const; + strokerec doesn't change the geometry. When this fails the outputs may or may not have + been overwritten. + */ + bool SK_WARN_UNUSED_RESULT applyToPath(SkPath* dst, SkStrokeRec::InitStyle* fillOrHairline, + const SkPath& src) const; /** Given bounds of a path compute the bounds of path with the style applied. */ void adjustBounds(SkRect* dst, const SkRect& src) const { |