Revert "Add verb measurement utils to SkContourMeasure"

This reverts commit 3c62d4a94d7873d9e88269610b6acaaa10d83cf5.

Reason for revert: MSAN detecting uninitialized variables: https://logs.chromium.org/logs/skia/6cf9ba6dfeeb1811/+/steps/symbolized_dm/0/stdout

Original change's description:
> Add verb measurement utils to SkContourMeasure
>
> Change-Id: Ia0c5bfeecb462d079179516bc050004ceb8679ea
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/913916
> Commit-Queue: Florin Malita <fmalita@google.com>
> Reviewed-by: Daniel Dilan <danieldilan@google.com>

Change-Id: Id0b7470c1812c2435bdf58803e6b8412a8d61225
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/915196
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
diff --git a/include/core/SkContourMeasure.h b/include/core/SkContourMeasure.h
index eb4804b..29e33d8 100644
--- a/include/core/SkContourMeasure.h
+++ b/include/core/SkContourMeasure.h
@@ -11,7 +11,6 @@
 #include "include/core/SkPoint.h"
 #include "include/core/SkRefCnt.h"
 #include "include/core/SkScalar.h"
-#include "include/core/SkSpan.h"
 #include "include/private/base/SkAPI.h"
 #include "include/private/base/SkTDArray.h"
 
@@ -19,7 +18,6 @@
 
 class SkMatrix;
 class SkPath;
-enum class SkPathVerb;
 
 class SK_API SkContourMeasure : public SkRefCnt {
 public:
@@ -59,47 +57,6 @@
      */
     bool isClosed() const { return fIsClosed; }
 
-    /** Measurement data for individual verbs.
-     */
-    struct VerbMeasure {
-        SkScalar              fDistance; // Cumulative distance along the current contour.
-        SkPathVerb            fVerb;     // Verb type.
-        SkSpan<const SkPoint> fPts;      // Verb points.
-    };
-
-private:
-    struct Segment;
-
-public:
-    /** Utility for iterating over the current contour verbs:
-     *
-     *   for (const auto verb_measure : contour_measure) {
-     *     ...
-     *   }
-     */
-    class VerbIterator final {
-    public:
-        VerbIterator(const Segment* seg, SkSpan<const SkPoint> pts) : fSegment(seg), fPts(pts) {}
-
-        VerbMeasure operator*() const;
-
-        VerbIterator& operator++() { fSegment = Segment::Next(fSegment); return *this; }
-
-        bool operator==(const VerbIterator& other) { return fSegment == other.fSegment; }
-        bool operator!=(const VerbIterator& other) { return fSegment != other.fSegment; }
-
-    private:
-        const SkContourMeasure::Segment* fSegment;
-        const SkSpan<const SkPoint>      fPts;
-    };
-
-    VerbIterator begin() const {
-        return VerbIterator(fSegments.begin(), SkSpan(fPts.data(), fPts.size()));
-    }
-    VerbIterator end() const {
-        return VerbIterator(fSegments.end(), SkSpan(fPts.data(), fPts.size()));
-    }
-
 private:
     struct Segment {
         SkScalar    fDistance;  // total distance up to this point
diff --git a/src/core/SkContourMeasure.cpp b/src/core/SkContourMeasure.cpp
index 41aae33..8c88119 100644
--- a/src/core/SkContourMeasure.cpp
+++ b/src/core/SkContourMeasure.cpp
@@ -13,14 +13,11 @@
 #include "include/private/base/SkAssert.h"
 #include "include/private/base/SkDebug.h"
 #include "include/private/base/SkFloatingPoint.h"
-#include "include/private/base/SkTo.h"
 #include "src/core/SkGeometry.h"
 #include "src/core/SkPathMeasurePriv.h"
 #include "src/core/SkPathPriv.h"
 
 #include <algorithm>
-#include <array>
-#include <cstddef>
 #include <utility>
 
 #define kMaxTValue  0x3FFFFFFF
@@ -701,32 +698,3 @@
 
     return true;
 }
-
-SkContourMeasure::VerbMeasure SkContourMeasure::VerbIterator::operator*() const {
-    static constexpr size_t seg_pt_count[] = {
-        2, // kLine  (current_pt, 1 line pt)
-        3, // kQuad  (current_pt, 2 quad pts)
-        4, // kCubic (current_pt, 3 cubic pts)
-        4, // kConic (current_pt, {weight, 0}, 2 conic pts)
-    };
-    static constexpr SkPathVerb seg_verb[] = {
-        SkPathVerb::kLine,
-        SkPathVerb::kQuad,
-        SkPathVerb::kCubic,
-        SkPathVerb::kConic,
-    };
-    static_assert(std::size(seg_pt_count) == std::size(seg_verb));
-    static_assert(static_cast<size_t>(kLine_SegType)  < std::size(seg_pt_count));
-    static_assert(static_cast<size_t>(kQuad_SegType)  < std::size(seg_pt_count));
-    static_assert(static_cast<size_t>(kCubic_SegType) < std::size(seg_pt_count));
-    static_assert(static_cast<size_t>(kConic_SegType) < std::size(seg_pt_count));
-
-    SkASSERT(SkToSizeT(fSegment->fType) < std::size(seg_pt_count));
-    SkASSERT(fSegment->fPtIndex + seg_pt_count[fSegment->fType] <= fPts.size());
-
-    return {
-        fSegment->fDistance,
-        seg_verb[fSegment->fType],
-        SkSpan(fPts.data() + fSegment->fPtIndex, seg_pt_count[fSegment->fType]),
-    };
-}
diff --git a/tests/PathMeasureTest.cpp b/tests/PathMeasureTest.cpp
index c7e2506..6d730f6 100644
--- a/tests/PathMeasureTest.cpp
+++ b/tests/PathMeasureTest.cpp
@@ -8,7 +8,6 @@
 #include "include/core/SkContourMeasure.h"
 #include "include/core/SkPath.h"
 #include "include/core/SkPathMeasure.h"
-#include "include/core/SkPathTypes.h"
 #include "include/core/SkPoint.h"
 #include "include/core/SkRefCnt.h"
 #include "include/core/SkScalar.h"
@@ -357,93 +356,3 @@
 
     test_shrink(reporter);
 }
-
-DEF_TEST(contour_measure_verbs, reporter) {
-    SkPath path;
-    path.moveTo(10, 10);
-    path.lineTo(10, 30);
-    path.lineTo(30, 30);
-    path.quadTo({40, 30}, {40, 40});
-    path.cubicTo({50, 40}, {50, 50}, {40, 50});
-    path.conicTo({50, 50}, {50, 60}, 1.2f);
-
-    SkContourMeasureIter measure(path, false);
-
-    sk_sp<SkContourMeasure> cmeasure = measure.next();
-    REPORTER_ASSERT(reporter, cmeasure);
-
-    SkContourMeasure::VerbIterator viter = cmeasure->begin();
-    {
-        REPORTER_ASSERT(reporter, viter != cmeasure->end());
-        const auto vmeasure = *viter;
-        REPORTER_ASSERT(reporter, vmeasure.fVerb == SkPathVerb::kLine);
-        REPORTER_ASSERT(reporter, SkScalarNearlyEqual(vmeasure.fDistance, 20));
-        REPORTER_ASSERT(reporter, vmeasure.fPts.size() == 2);
-        REPORTER_ASSERT(reporter, vmeasure.fPts[0] == SkPoint::Make(10, 10));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[1] == SkPoint::Make(10, 30));
-    }
-
-    ++viter;
-    {
-        REPORTER_ASSERT(reporter, viter != cmeasure->end());
-        const auto vmeasure = *viter;
-        REPORTER_ASSERT(reporter, vmeasure.fVerb == SkPathVerb::kLine);
-        REPORTER_ASSERT(reporter, SkScalarNearlyEqual(vmeasure.fDistance, 40));
-        REPORTER_ASSERT(reporter, vmeasure.fPts.size() == 2);
-        REPORTER_ASSERT(reporter, vmeasure.fPts[0] == SkPoint::Make(10, 30));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[1] == SkPoint::Make(30, 30));
-    }
-
-    ++viter;
-    {
-        REPORTER_ASSERT(reporter, viter != cmeasure->end());
-        const auto vmeasure = *viter;
-        REPORTER_ASSERT(reporter, vmeasure.fVerb == SkPathVerb::kQuad);
-        REPORTER_ASSERT(reporter, SkScalarNearlyEqual(vmeasure.fDistance, 44.419418f));
-        REPORTER_ASSERT(reporter, vmeasure.fPts.size() == 3);
-        REPORTER_ASSERT(reporter, vmeasure.fPts[0] == SkPoint::Make(30, 30));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[1] == SkPoint::Make(40, 30));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[2] == SkPoint::Make(40, 40));
-    }
-
-    ++viter;
-    {
-        REPORTER_ASSERT(reporter, viter != cmeasure->end());
-        const auto vmeasure = *viter;
-        REPORTER_ASSERT(reporter, vmeasure.fVerb == SkPathVerb::kCubic);
-        REPORTER_ASSERT(reporter, SkScalarNearlyEqual(vmeasure.fDistance, 59.436790f));
-        REPORTER_ASSERT(reporter, vmeasure.fPts.size() == 4);
-        REPORTER_ASSERT(reporter, vmeasure.fPts[0] == SkPoint::Make(40, 40));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[1] == SkPoint::Make(50, 40));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[2] == SkPoint::Make(50, 50));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[3] == SkPoint::Make(40, 50));
-    }
-
-    ++viter;
-    {
-        REPORTER_ASSERT(reporter, viter != cmeasure->end());
-        const auto vmeasure = *viter;
-        REPORTER_ASSERT(reporter, vmeasure.fVerb == SkPathVerb::kConic);
-        REPORTER_ASSERT(reporter, SkScalarNearlyEqual(vmeasure.fDistance, 80.807449f));
-        REPORTER_ASSERT(reporter, vmeasure.fPts.size() == 4);
-        REPORTER_ASSERT(reporter, vmeasure.fPts[0] == SkPoint::Make(40, 50));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[1] == SkPoint::Make(1.2f, 0));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[2] == SkPoint::Make(50, 50));
-        REPORTER_ASSERT(reporter, vmeasure.fPts[3] == SkPoint::Make(50, 60));
-    }
-
-    ++viter;
-    {
-        REPORTER_ASSERT(reporter, viter == cmeasure->end());
-    }
-
-    // Exercise the range iterator form.
-    float current_distance = 0;
-    size_t verb_count = 0;
-    for (const auto vmeasure : *cmeasure) {
-        REPORTER_ASSERT(reporter, vmeasure.fDistance > current_distance);
-        current_distance = vmeasure.fDistance;
-        verb_count++;
-    }
-    REPORTER_ASSERT(reporter, verb_count == 5);
-}