Delete ToolUtils::set_path_pt
This can be done more simply with SkPathRef::Editor::writablePoints.
Change-Id: Icef31bf3a6cc2c8c4ef6da36167c574c73a0d944
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287497
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/samplecode/SampleAAGeometry.cpp b/samplecode/SampleAAGeometry.cpp
index 6865f65..5f2e624 100644
--- a/samplecode/SampleAAGeometry.cpp
+++ b/samplecode/SampleAAGeometry.cpp
@@ -12,6 +12,7 @@
#include "include/utils/SkTextUtils.h"
#include "samplecode/Sample.h"
#include "src/core/SkGeometry.h"
+#include "src/core/SkPathPriv.h"
#include "src/core/SkPointPriv.h"
#include "src/pathops/SkIntersections.h"
#include "src/pathops/SkOpEdgeBuilder.h"
@@ -1585,7 +1586,7 @@
SkPoint pt = fPath.getPoint((int) myClick->fControl);
pt.offset(SkIntToScalar(click->fCurr.fX - click->fPrev.fX),
SkIntToScalar(click->fCurr.fY - click->fPrev.fY));
- ToolUtils::set_path_pt(fActivePt, pt, &fPath);
+ SkPathPriv::UpdatePathPoint(&fPath, fActivePt, pt);
validatePath();
return true;
}
diff --git a/samplecode/SampleTessellatedWedge.cpp b/samplecode/SampleTessellatedWedge.cpp
index 92fe177..66b73ba 100644
--- a/samplecode/SampleTessellatedWedge.cpp
+++ b/samplecode/SampleTessellatedWedge.cpp
@@ -117,7 +117,7 @@
void doClick(SkPath* path) {
if (fPtIdx >= 0) {
SkPoint pt = path->getPoint(fPtIdx);
- ToolUtils::set_path_pt(fPtIdx, pt + fCurr - fPrev, path);
+ SkPathPriv::UpdatePathPoint(path, fPtIdx, pt + fCurr - fPrev);
} else {
path->transform(
SkMatrix::MakeTrans(fCurr.x() - fPrev.x(), fCurr.y() - fPrev.y()), path);
diff --git a/src/core/SkPathPriv.h b/src/core/SkPathPriv.h
index 6df9164..c6ad6ef 100644
--- a/src/core/SkPathPriv.h
+++ b/src/core/SkPathPriv.h
@@ -364,6 +364,13 @@
* at some point during the execution of the function.
*/
static int GenIDChangeListenersCount(const SkPath&);
+
+ static void UpdatePathPoint(SkPath* path, int index, const SkPoint& pt) {
+ SkASSERT(index < path->countPoints());
+ SkPathRef::Editor ed(&path->fPathRef);
+ ed.writablePoints()[index] = pt;
+ path->dirtyAfterEdit();
+ }
};
// Lightweight variant of SkPath::Iter that only returns segments (e.g. lines/conics).
diff --git a/tools/ToolUtils.cpp b/tools/ToolUtils.cpp
index 027f8f8..5e8880f 100644
--- a/tools/ToolUtils.cpp
+++ b/tools/ToolUtils.cpp
@@ -366,77 +366,6 @@
#include "BigPathBench.inc" // IWYU pragma: keep
}
-void set_path_pt(int index, const SkPoint& pt, SkPath* path) {
- SkPath result;
- SkPoint pts[4];
- SkPath::Verb verb;
- SkPath::RawIter iter(*path);
- int startIndex = 0;
- int endIndex = 0;
- while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
- switch (verb) {
- case SkPath::kMove_Verb:
- endIndex += 1;
- break;
- case SkPath::kLine_Verb:
- endIndex += 1;
- break;
- case SkPath::kQuad_Verb:
- case SkPath::kConic_Verb:
- endIndex += 2;
- break;
- case SkPath::kCubic_Verb:
- endIndex += 3;
- break;
- case SkPath::kClose_Verb:
- break;
- case SkPath::kDone_Verb:
- break;
- default:
- SkASSERT(0);
- }
- if (startIndex <= index && index < endIndex) {
- pts[index - startIndex] = pt;
- }
- switch (verb) {
- case SkPath::kMove_Verb:
- result.moveTo(pts[0]);
- break;
- case SkPath::kLine_Verb:
- result.lineTo(pts[1]);
- startIndex += 1;
- break;
- case SkPath::kQuad_Verb:
- result.quadTo(pts[1], pts[2]);
- startIndex += 2;
- break;
- case SkPath::kConic_Verb:
- result.conicTo(pts[1], pts[2], iter.conicWeight());
- startIndex += 2;
- break;
- case SkPath::kCubic_Verb:
- result.cubicTo(pts[1], pts[2], pts[3]);
- startIndex += 3;
- break;
- case SkPath::kClose_Verb:
- result.close();
- startIndex += 1;
- break;
- case SkPath::kDone_Verb:
- break;
- default:
- SkASSERT(0);
- }
- }
-#if 0
- SkDebugf("\n\noriginal\n");
- path->dump();
- SkDebugf("\nedited\n");
- result.dump();
-#endif
- *path = result;
-}
-
bool copy_to(SkBitmap* dst, SkColorType dstColorType, const SkBitmap& src) {
SkPixmap srcPM;
if (!src.peekPixels(&srcPM)) {
diff --git a/tools/ToolUtils.h b/tools/ToolUtils.h
index 26cb772..5c3edfb 100644
--- a/tools/ToolUtils.h
+++ b/tools/ToolUtils.h
@@ -144,8 +144,6 @@
void make_big_path(SkPath& path);
-void set_path_pt(int index, const SkPoint&, SkPath* path);
-
// A helper object to test the topological sorting code (TopoSortBench.cpp & TopoSortTest.cpp)
class TopoTestNode : public SkRefCnt {
public: