Fun with flags

Change-Id: I46f8054e3e846982b3290c375b9a54a313fe8c23
Reviewed-on: https://skia-review.googlesource.com/c/171234
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
diff --git a/src/gpu/text/GrTextBlob.h b/src/gpu/text/GrTextBlob.h
index 8a1e0ec..7d4450c 100644
--- a/src/gpu/text/GrTextBlob.h
+++ b/src/gpu/text/GrTextBlob.h
@@ -329,35 +329,18 @@
                                 SkScalar* transX, SkScalar* transY);
 
         // df properties
-        void setDrawAsDistanceFields() { fFlags |= kDrawAsSDF_Flag; }
-        bool drawAsDistanceFields() const { return SkToBool(fFlags & kDrawAsSDF_Flag); }
-        void setUseLCDText(bool useLCDText) {
-            fFlags = useLCDText ? fFlags | kUseLCDText_Flag : fFlags & ~kUseLCDText_Flag;
-        }
-        bool hasUseLCDText() const { return SkToBool(fFlags & kUseLCDText_Flag); }
-        void setAntiAliased(bool antiAliased) {
-            fFlags = antiAliased ? fFlags | kAntiAliased_Flag : fFlags & ~kAntiAliased_Flag;
-        }
-        bool isAntiAliased() const { return SkToBool(fFlags & kAntiAliased_Flag); }
-        void setHasWCoord(bool hasW) {
-            fFlags  = hasW ? (fFlags | kHasWCoord_Flag) : fFlags & ~kHasWCoord_Flag;
-        }
-        bool hasWCoord() const { return SkToBool(fFlags & kHasWCoord_Flag); }
-        void setNeedsTransform(bool needsTransform) {
-            fFlags  = needsTransform ? (fFlags | kNeedsTransform_Flag)
-                                     : fFlags & ~kNeedsTransform_Flag;
-        }
-        bool needsTransform() const { return SkToBool(fFlags & kNeedsTransform_Flag); }
+        void setDrawAsDistanceFields() { fFlags.drawAsSdf = true; }
+        bool drawAsDistanceFields() const { return fFlags.drawAsSdf; }
+        void setUseLCDText(bool useLCDText) { fFlags.useLCDText = useLCDText; }
+        bool hasUseLCDText() const { return fFlags.useLCDText; }
+        void setAntiAliased(bool antiAliased) { fFlags.antiAliased = antiAliased; }
+        bool isAntiAliased() const { return fFlags.antiAliased; }
+        void setHasWCoord(bool hasW) { fFlags.hasWCoord = hasW; }
+        bool hasWCoord() const { return fFlags.hasWCoord; }
+        void setNeedsTransform(bool needsTransform) { fFlags.needsTransform = needsTransform; }
+        bool needsTransform() const { return fFlags.needsTransform; }
 
     private:
-        enum Flag {
-            kDrawAsSDF_Flag = 0x01,
-            kUseLCDText_Flag = 0x02,
-            kAntiAliased_Flag = 0x04,
-            kHasWCoord_Flag = 0x08,
-            kNeedsTransform_Flag = 0x10
-        };
-
         GrDrawOpAtlas::BulkUseTokenUpdater fBulkUseToken;
         sk_sp<GrTextStrike> fStrike;
         SkMatrix fCurrentViewMatrix;
@@ -371,7 +354,13 @@
         SkScalar fY;
         GrColor fColor{GrColor_ILLEGAL};
         GrMaskFormat fMaskFormat{kA8_GrMaskFormat};
-        uint32_t fFlags{0};
+        struct {
+            bool drawAsSdf:1;
+            bool useLCDText:1;
+            bool antiAliased:1;
+            bool hasWCoord:1;
+            bool needsTransform:1;
+        } fFlags{false, false, false, false, false};
     };  // SubRunInfo