Remove SkBool8.

This typedef was created at a time when compilers often used sizeof(int)
storage for a bool. This is no longer the case and in all compilers
currently supported 'sizeof(bool) == 1'. Removing this also revealed one
field which was actually not a bool but a tri-state enum.

Change-Id: I9240ba457335ee3eff094d6d3f2520c1adf16960
Reviewed-on: https://skia-review.googlesource.com/134420
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
diff --git a/include/core/SkPath.h b/include/core/SkPath.h
index 2846d9f..9906827 100644
--- a/include/core/SkPath.h
+++ b/include/core/SkPath.h
@@ -1414,10 +1414,18 @@
         const SkScalar* fConicWeights;
         SkPoint         fMoveTo;
         SkPoint         fLastPt;
-        SkBool8         fForceClose;
-        SkBool8         fNeedClose;
-        SkBool8         fCloseLine;
-        SkBool8         fSegmentState;
+        bool            fForceClose;
+        bool            fNeedClose;
+        bool            fCloseLine;
+        enum SegmentState : uint8_t {
+            /** The current contour is empty. Starting processing or have just closed a contour. */
+            kEmptyContour_SegmentState,
+            /** Have seen a move, but nothing else. */
+            kAfterMove_SegmentState,
+            /** Have seen a primitive but not yet closed the path. Also the initial state. */
+            kAfterPrimitive_SegmentState
+        };
+        SegmentState    fSegmentState;
 
         inline const SkPoint& cons_moveTo();
         Verb autoClose(SkPoint pts[2]);
@@ -1602,8 +1610,8 @@
     uint8_t                                              fFillType;
     mutable SkAtomic<Convexity, sk_memory_order_relaxed> fConvexity;
     mutable SkAtomic<uint8_t, sk_memory_order_relaxed>   fFirstDirection;// SkPathPriv::FirstDirection
-    SkBool8                                              fIsVolatile;
-    SkBool8                                              fIsBadForDAA = false;
+    bool                                                 fIsVolatile;
+    bool                                                 fIsBadForDAA = false;
 
     /** Resets all fields other than fPathRef to their initial 'empty' values.
      *  Assumes the caller has already emptied fPathRef.
diff --git a/include/core/SkTypes.h b/include/core/SkTypes.h
index 3ef236e..9e557ef 100644
--- a/include/core/SkTypes.h
+++ b/include/core/SkTypes.h
@@ -102,11 +102,6 @@
  */
 typedef unsigned U16CPU;
 
-/**
- *  Meant to be a small version of bool, for storage purposes. Will be 0 or 1
- */
-typedef uint8_t SkBool8;
-
 /** Returns 0 or 1 based on the condition
 */
 #define SkToBool(cond)  ((cond) != 0)
diff --git a/include/private/SkPathRef.h b/include/private/SkPathRef.h
index 94d5bf1..5a5a041 100644
--- a/include/private/SkPathRef.h
+++ b/include/private/SkPathRef.h
@@ -543,13 +543,13 @@
     SkTDArray<GenIDChangeListener*> fGenIDChangeListeners;  // pointers are reffed
 
     mutable uint8_t  fBoundsIsDirty;
-    mutable SkBool8  fIsFinite;    // only meaningful if bounds are valid
+    mutable bool     fIsFinite;    // only meaningful if bounds are valid
 
-    SkBool8  fIsOval;
-    SkBool8  fIsRRect;
+    bool     fIsOval;
+    bool     fIsRRect;
     // Both the circle and rrect special cases have a notion of direction and starting point
     // The next two variables store that information for either.
-    SkBool8  fRRectOrOvalIsCCW;
+    bool     fRRectOrOvalIsCCW;
     uint8_t  fRRectOrOvalStartIdx;
     uint8_t  fSegmentMask;
 
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index 605454b..e38d736 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -202,9 +202,9 @@
 void SkPath::swap(SkPath& that) {
     if (this != &that) {
         fPathRef.swap(that.fPathRef);
-        SkTSwap<int>(fLastMoveToIndex, that.fLastMoveToIndex);
-        SkTSwap<uint8_t>(fFillType, that.fFillType);
-        SkTSwap<SkBool8>(fIsVolatile, that.fIsVolatile);
+        SkTSwap(fLastMoveToIndex, that.fLastMoveToIndex);
+        SkTSwap(fFillType, that.fFillType);
+        SkTSwap(fIsVolatile, that.fIsVolatile);
 
         // Non-atomic swaps of atomic values.
         Convexity c = fConvexity.load();
@@ -1821,15 +1821,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
 
-enum SegmentState {
-    kEmptyContour_SegmentState,   // The current contour is empty. We may be
-                                  // starting processing or we may have just
-                                  // closed a contour.
-    kAfterMove_SegmentState,      // We have seen a move, but nothing else.
-    kAfterPrimitive_SegmentState  // We have seen a primitive but not yet
-                                  // closed the path. Also the initial state.
-};
-
 SkPath::Iter::Iter() {
 #ifdef SK_DEBUG
     fPts = nullptr;
@@ -1918,11 +1909,11 @@
         // Set the first return pt to the move pt
         fSegmentState = kAfterPrimitive_SegmentState;
         return fMoveTo;
-    } else {
-        SkASSERT(fSegmentState == kAfterPrimitive_SegmentState);
-         // Set the first return pt to the last pt of the previous primitive.
-        return fPts[-1];
     }
+
+    SkASSERT(fSegmentState == kAfterPrimitive_SegmentState);
+    // Set the first return pt to the last pt of the previous primitive.
+    return fPts[-1];
 }
 
 void SkPath::Iter::consumeDegenerateSegments(bool exact) {
diff --git a/src/core/SkStroke.h b/src/core/SkStroke.h
index 09783b7..189b5cf 100644
--- a/src/core/SkStroke.h
+++ b/src/core/SkStroke.h
@@ -71,7 +71,7 @@
     SkScalar    fWidth, fMiterLimit;
     SkScalar    fResScale;
     uint8_t     fCap, fJoin;
-    SkBool8     fDoFill;
+    bool        fDoFill;
 
     friend class SkPaint;
 };