Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(918)

Unified Diff: src/core/SkPath.cpp

Issue 151353006: Adding new 'extend' mode to SkPath::addPath (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: further improvements Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkPath.cpp
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index 04c807b64415492aa4b3ee617391a22c2800ea78..04f7420a393ebd337b52f5c54b834bcacc7076b0 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -1443,14 +1443,14 @@ void SkPath::arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2,
///////////////////////////////////////////////////////////////////////////////
-void SkPath::addPath(const SkPath& path, SkScalar dx, SkScalar dy) {
+void SkPath::addPath(const SkPath& path, SkScalar dx, SkScalar dy, AddPathMode mode) {
SkMatrix matrix;
matrix.setTranslate(dx, dy);
- this->addPath(path, matrix);
+ this->addPath(path, matrix, mode);
}
-void SkPath::addPath(const SkPath& path, const SkMatrix& matrix) {
+void SkPath::addPath(const SkPath& path, const SkMatrix& matrix, AddPathMode mode) {
SkPathRef::Editor(&fPathRef, path.countVerbs(), path.countPoints());
RawIter iter(path);
@@ -1458,12 +1458,16 @@ void SkPath::addPath(const SkPath& path, const SkMatrix& matrix) {
Verb verb;
SkMatrix::MapPtsProc proc = matrix.getMapPtsProc();
-
+ bool firstVerb = true;
reed1 2014/02/07 18:08:01 can we change this to: bool firstVerb = (kExtend
while ((verb = iter.next(pts)) != kDone_Verb) {
switch (verb) {
case kMove_Verb:
proc(matrix, &pts[0], &pts[0], 1);
- this->moveTo(pts[0]);
+ if (firstVerb && mode == kJoin_AddPathMode) {
+ this->lineTo(pts[0]);
+ } else {
+ this->moveTo(pts[0]);
+ }
break;
case kLine_Verb:
proc(matrix, &pts[1], &pts[1], 1);
@@ -1487,6 +1491,7 @@ void SkPath::addPath(const SkPath& path, const SkMatrix& matrix) {
default:
SkDEBUGFAIL("unknown verb");
}
+ firstVerb = false;
}
}

Powered by Google App Engine
This is Rietveld 408576698