Make FWLTHEME_STATE and FWLTHEME_DIRECTION enum classes.

-- add a TODO() in one place where conflict discovered as a result.

Change-Id: If9481788f7cf6dd470d534ca6b09839d12fe5ed0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/83590
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fwl/theme/cfwl_comboboxtp.cpp b/xfa/fwl/theme/cfwl_comboboxtp.cpp
index 5ae8352..0d5695f 100644
--- a/xfa/fwl/theme/cfwl_comboboxtp.cpp
+++ b/xfa/fwl/theme/cfwl_comboboxtp.cpp
@@ -57,27 +57,24 @@
 void CFWL_ComboBoxTP::DrawDropDownButton(const CFWL_ThemeBackground& pParams,
                                          uint32_t dwStates,
                                          const CFX_Matrix& matrix) {
-  FWLTHEME_STATE eState = FWLTHEME_STATE_Normal;
+  FWLTHEME_STATE eState;
   switch (dwStates) {
-    case CFWL_PartState_Normal: {
-      eState = FWLTHEME_STATE_Normal;
+    case CFWL_PartState_Normal:
+      eState = FWLTHEME_STATE::kNormal;
       break;
-    }
-    case CFWL_PartState_Hovered: {
-      eState = FWLTHEME_STATE_Hover;
+    case CFWL_PartState_Hovered:
+      eState = FWLTHEME_STATE::kHover;
       break;
-    }
-    case CFWL_PartState_Pressed: {
-      eState = FWLTHEME_STATE_Pressed;
+    case CFWL_PartState_Pressed:
+      eState = FWLTHEME_STATE::kPressed;
       break;
-    }
-    case CFWL_PartState_Disabled: {
-      eState = FWLTHEME_STATE_Disable;
+    case CFWL_PartState_Disabled:
+      eState = FWLTHEME_STATE::kDisable;
       break;
-    }
     default:
+      eState = FWLTHEME_STATE::kNormal;
       break;
   }
   DrawArrowBtn(pParams.GetGraphics(), pParams.m_PartRect,
-               FWLTHEME_DIRECTION_Down, eState, pParams.m_matrix);
+               FWLTHEME_DIRECTION::kDown, eState, pParams.m_matrix);
 }
diff --git a/xfa/fwl/theme/cfwl_datetimepickertp.cpp b/xfa/fwl/theme/cfwl_datetimepickertp.cpp
index d3a1cdf..c332b1b 100644
--- a/xfa/fwl/theme/cfwl_datetimepickertp.cpp
+++ b/xfa/fwl/theme/cfwl_datetimepickertp.cpp
@@ -32,27 +32,25 @@
     const CFX_Matrix& matrix) {
   uint32_t dwStates = pParams.m_dwStates;
   dwStates &= 0x03;
-  FWLTHEME_STATE eState = FWLTHEME_STATE_Normal;
-  switch (eState & dwStates) {
-    case CFWL_PartState_Normal: {
-      eState = FWLTHEME_STATE_Normal;
+  FWLTHEME_STATE eState = FWLTHEME_STATE::kNormal;
+
+  // TODO(tsepez): enum mismatch, &ing with 1 makes no sense here.
+  switch (static_cast<uint32_t>(eState) & dwStates) {
+    case CFWL_PartState_Normal:
+      eState = FWLTHEME_STATE::kNormal;
       break;
-    }
-    case CFWL_PartState_Hovered: {
-      eState = FWLTHEME_STATE_Hover;
+    case CFWL_PartState_Hovered:
+      eState = FWLTHEME_STATE::kHover;
       break;
-    }
-    case CFWL_PartState_Pressed: {
-      eState = FWLTHEME_STATE_Pressed;
+    case CFWL_PartState_Pressed:
+      eState = FWLTHEME_STATE::kPressed;
       break;
-    }
-    case CFWL_PartState_Disabled: {
-      eState = FWLTHEME_STATE_Disable;
+    case CFWL_PartState_Disabled:
+      eState = FWLTHEME_STATE::kDisable;
       break;
-    }
     default:
       break;
   }
   DrawArrowBtn(pParams.GetGraphics(), pParams.m_PartRect,
-               FWLTHEME_DIRECTION_Down, eState, matrix);
+               FWLTHEME_DIRECTION::kDown, eState, matrix);
 }
diff --git a/xfa/fwl/theme/cfwl_monthcalendartp.cpp b/xfa/fwl/theme/cfwl_monthcalendartp.cpp
index de822b4..125119e 100644
--- a/xfa/fwl/theme/cfwl_monthcalendartp.cpp
+++ b/xfa/fwl/theme/cfwl_monthcalendartp.cpp
@@ -49,13 +49,13 @@
     case CFWL_ThemePart::Part::kLBtn: {
       FWLTHEME_STATE eState = GetState(pParams.m_dwStates);
       DrawArrowBtn(pParams.GetGraphics(), pParams.m_PartRect,
-                   FWLTHEME_DIRECTION_Left, eState, pParams.m_matrix);
+                   FWLTHEME_DIRECTION::kLeft, eState, pParams.m_matrix);
       break;
     }
     case CFWL_ThemePart::Part::kRBtn: {
       FWLTHEME_STATE eState = GetState(pParams.m_dwStates);
       DrawArrowBtn(pParams.GetGraphics(), pParams.m_PartRect,
-                   FWLTHEME_DIRECTION_Right, eState, pParams.m_matrix);
+                   FWLTHEME_DIRECTION::kRight, eState, pParams.m_matrix);
       break;
     }
     case CFWL_ThemePart::Part::kHSeparator: {
@@ -268,8 +268,8 @@
 
 FWLTHEME_STATE CFWL_MonthCalendarTP::GetState(uint32_t dwFWLStates) {
   if (dwFWLStates & CFWL_PartState_Hovered)
-    return FWLTHEME_STATE_Hover;
+    return FWLTHEME_STATE::kHover;
   if (dwFWLStates & CFWL_PartState_Pressed)
-    return FWLTHEME_STATE_Pressed;
-  return FWLTHEME_STATE_Normal;
+    return FWLTHEME_STATE::kPressed;
+  return FWLTHEME_STATE::kNormal;
 }
diff --git a/xfa/fwl/theme/cfwl_scrollbartp.cpp b/xfa/fwl/theme/cfwl_scrollbartp.cpp
index ff9e329..7e4cfcd 100644
--- a/xfa/fwl/theme/cfwl_scrollbartp.cpp
+++ b/xfa/fwl/theme/cfwl_scrollbartp.cpp
@@ -22,27 +22,28 @@
 
 void CFWL_ScrollBarTP::DrawBackground(const CFWL_ThemeBackground& pParams) {
   CFWL_Widget* pWidget = pParams.GetWidget();
-  FWLTHEME_STATE eState = FWLTHEME_STATE_Normal;
+  FWLTHEME_STATE eState = FWLTHEME_STATE::kNormal;
   if (pParams.m_dwStates & CFWL_PartState_Hovered)
-    eState = FWLTHEME_STATE_Hover;
+    eState = FWLTHEME_STATE::kHover;
   else if (pParams.m_dwStates & CFWL_PartState_Pressed)
-    eState = FWLTHEME_STATE_Pressed;
+    eState = FWLTHEME_STATE::kPressed;
   else if (pParams.m_dwStates & CFWL_PartState_Disabled)
-    eState = FWLTHEME_STATE_Disable;
+    eState = FWLTHEME_STATE::kDisable;
 
   CFGAS_GEGraphics* pGraphics = pParams.GetGraphics();
   bool bVert = !!pWidget->GetStyleExts();
   switch (pParams.m_iPart) {
     case CFWL_ThemePart::Part::kForeArrow: {
       DrawMaxMinBtn(pGraphics, pParams.m_PartRect,
-                    bVert ? FWLTHEME_DIRECTION_Up : FWLTHEME_DIRECTION_Left,
+                    bVert ? FWLTHEME_DIRECTION::kUp : FWLTHEME_DIRECTION::kLeft,
                     eState, pParams.m_matrix);
       break;
     }
     case CFWL_ThemePart::Part::kBackArrow: {
-      DrawMaxMinBtn(pGraphics, pParams.m_PartRect,
-                    bVert ? FWLTHEME_DIRECTION_Down : FWLTHEME_DIRECTION_Right,
-                    eState, pParams.m_matrix);
+      DrawMaxMinBtn(
+          pGraphics, pParams.m_PartRect,
+          bVert ? FWLTHEME_DIRECTION::kDown : FWLTHEME_DIRECTION::kRight,
+          eState, pParams.m_matrix);
       break;
     }
     case CFWL_ThemePart::Part::kThumb: {
@@ -70,7 +71,7 @@
                                     bool bVert,
                                     FWLTHEME_STATE eState,
                                     const CFX_Matrix& matrix) {
-  if (eState < FWLTHEME_STATE_Normal || eState > FWLTHEME_STATE_Disable)
+  if (eState < FWLTHEME_STATE::kNormal || eState > FWLTHEME_STATE::kDisable)
     return;
 
   CFX_RectF rect = input_rect;
@@ -82,14 +83,16 @@
   if (rect.IsEmpty(0.1f))
     return;
 
-  FillSolidRect(pGraphics, m_pThemeData->clrBtnBK[eState - 1][1], rect, matrix);
+  FillSolidRect(pGraphics,
+                m_pThemeData->clrBtnBK[static_cast<size_t>(eState) - 1][1],
+                rect, matrix);
 
   pGraphics->SaveGraphState();
 
   CFGAS_GEPath path;
   path.AddRectangle(rect.left, rect.top, rect.width, rect.height);
-  pGraphics->SetStrokeColor(
-      CFGAS_GEColor(m_pThemeData->clrBtnBorder[eState - 1]));
+  pGraphics->SetStrokeColor(CFGAS_GEColor(
+      m_pThemeData->clrBtnBorder[static_cast<size_t>(eState) - 1]));
   pGraphics->StrokePath(path, matrix);
   pGraphics->RestoreGraphState();
 }
@@ -100,7 +103,7 @@
                                  FWLTHEME_STATE eState,
                                  bool bLowerTrack,
                                  const CFX_Matrix& matrix) {
-  if (eState < FWLTHEME_STATE_Normal || eState > FWLTHEME_STATE_Disable)
+  if (eState < FWLTHEME_STATE::kNormal || eState > FWLTHEME_STATE::kDisable)
     return;
 
   pGraphics->SaveGraphState();
@@ -127,9 +130,10 @@
                                      FWLTHEME_DIRECTION eDict,
                                      FWLTHEME_STATE eState,
                                      const CFX_Matrix& matrix) {
-  DrawTrack(pGraphics, rect,
-            eDict == FWLTHEME_DIRECTION_Up || eDict == FWLTHEME_DIRECTION_Down,
-            eState, true, matrix);
+  DrawTrack(
+      pGraphics, rect,
+      eDict == FWLTHEME_DIRECTION::kUp || eDict == FWLTHEME_DIRECTION::kDown,
+      eState, true, matrix);
   CFX_RectF rtArrowBtn = rect;
   rtArrowBtn.Deflate(1, 1, 1, 1);
   DrawArrowBtn(pGraphics, rtArrowBtn, eDict, eState, matrix);
diff --git a/xfa/fwl/theme/cfwl_utils.h b/xfa/fwl/theme/cfwl_utils.h
index d9185c6..0e815f6 100644
--- a/xfa/fwl/theme/cfwl_utils.h
+++ b/xfa/fwl/theme/cfwl_utils.h
@@ -7,21 +7,14 @@
 #ifndef XFA_FWL_THEME_CFWL_UTILS_H_
 #define XFA_FWL_THEME_CFWL_UTILS_H_
 
+#include <stdint.h>
+
 #include "core/fxge/dib/fx_dib.h"
 
-enum FWLTHEME_STATE {
-  FWLTHEME_STATE_Normal = 1,
-  FWLTHEME_STATE_Hover,
-  FWLTHEME_STATE_Pressed,
-  FWLTHEME_STATE_Disable
-};
+// Values matter, used for indexing.
+enum class FWLTHEME_STATE : uint8_t { kNormal = 1, kHover, kPressed, kDisable };
 
-enum FWLTHEME_DIRECTION {
-  FWLTHEME_DIRECTION_Up = 0,
-  FWLTHEME_DIRECTION_Down,
-  FWLTHEME_DIRECTION_Left,
-  FWLTHEME_DIRECTION_Right
-};
+enum class FWLTHEME_DIRECTION : uint8_t { kUp = 0, kDown, kLeft, kRight };
 
 #define FWLTHEME_COLOR_EDGERB1 (ArgbEncode(255, 241, 239, 226))
 #define FWLTHEME_COLOR_Background (ArgbEncode(255, 236, 233, 216))
diff --git a/xfa/fwl/theme/cfwl_widgettp.cpp b/xfa/fwl/theme/cfwl_widgettp.cpp
index 70f33ecb..55434e5 100644
--- a/xfa/fwl/theme/cfwl_widgettp.cpp
+++ b/xfa/fwl/theme/cfwl_widgettp.cpp
@@ -146,12 +146,12 @@
                               FX_ARGB argSign,
                               const CFX_Matrix& matrix) {
   bool bVert =
-      (eDict == FWLTHEME_DIRECTION_Up || eDict == FWLTHEME_DIRECTION_Down);
+      (eDict == FWLTHEME_DIRECTION::kUp || eDict == FWLTHEME_DIRECTION::kDown);
   float fLeft = ((rect.width - (bVert ? 9 : 6)) / 2 + rect.left) + 0.5f;
   float fTop = ((rect.height - (bVert ? 6 : 9)) / 2 + rect.top) + 0.5f;
   CFGAS_GEPath path;
   switch (eDict) {
-    case FWLTHEME_DIRECTION_Down: {
+    case FWLTHEME_DIRECTION::kDown:
       path.MoveTo(CFX_PointF(fLeft, fTop + 1));
       path.LineTo(CFX_PointF(fLeft + 4, fTop + 5));
       path.LineTo(CFX_PointF(fLeft + 8, fTop + 1));
@@ -159,8 +159,7 @@
       path.LineTo(CFX_PointF(fLeft + 4, fTop + 3));
       path.LineTo(CFX_PointF(fLeft + 1, fTop));
       break;
-    }
-    case FWLTHEME_DIRECTION_Up: {
+    case FWLTHEME_DIRECTION::kUp:
       path.MoveTo(CFX_PointF(fLeft, fTop + 4));
       path.LineTo(CFX_PointF(fLeft + 4, fTop));
       path.LineTo(CFX_PointF(fLeft + 8, fTop + 4));
@@ -168,8 +167,7 @@
       path.LineTo(CFX_PointF(fLeft + 4, fTop + 2));
       path.LineTo(CFX_PointF(fLeft + 1, fTop + 5));
       break;
-    }
-    case FWLTHEME_DIRECTION_Right: {
+    case FWLTHEME_DIRECTION::kRight:
       path.MoveTo(CFX_PointF(fLeft + 1, fTop));
       path.LineTo(CFX_PointF(fLeft + 5, fTop + 4));
       path.LineTo(CFX_PointF(fLeft + 1, fTop + 8));
@@ -177,8 +175,7 @@
       path.LineTo(CFX_PointF(fLeft + 3, fTop + 4));
       path.LineTo(CFX_PointF(fLeft, fTop + 1));
       break;
-    }
-    case FWLTHEME_DIRECTION_Left: {
+    case FWLTHEME_DIRECTION::kLeft:
       path.MoveTo(CFX_PointF(fLeft, fTop + 4));
       path.LineTo(CFX_PointF(fLeft + 4, fTop));
       path.LineTo(CFX_PointF(fLeft + 5, fTop + 1));
@@ -186,7 +183,6 @@
       path.LineTo(CFX_PointF(fLeft + 5, fTop + 7));
       path.LineTo(CFX_PointF(fLeft + 4, fTop + 8));
       break;
-    }
   }
   pGraphics->SetFillColor(CFGAS_GEColor(argSign));
   pGraphics->FillPath(path, CFX_FillRenderOptions::FillType::kWinding, matrix);
@@ -197,11 +193,14 @@
                             FWLTHEME_STATE eState,
                             const CFX_Matrix& matrix) {
   InitializeArrowColorData();
-  FillSolidRect(pGraphics, m_pColorData->clrEnd[eState - 1], rect, matrix);
+  FillSolidRect(pGraphics,
+                m_pColorData->clrEnd[static_cast<size_t>(eState) - 1], rect,
+                matrix);
 
   CFGAS_GEPath path;
   path.AddRectangle(rect.left, rect.top, rect.width, rect.height);
-  pGraphics->SetStrokeColor(CFGAS_GEColor(m_pColorData->clrBorder[eState - 1]));
+  pGraphics->SetStrokeColor(
+      CFGAS_GEColor(m_pColorData->clrBorder[static_cast<size_t>(eState) - 1]));
   pGraphics->StrokePath(path, matrix);
 }
 
@@ -212,5 +211,6 @@
                                  const CFX_Matrix& matrix) {
   DrawBtn(pGraphics, rect, eState, matrix);
   InitializeArrowColorData();
-  DrawArrow(pGraphics, rect, eDict, m_pColorData->clrSign[eState - 1], matrix);
+  DrawArrow(pGraphics, rect, eDict,
+            m_pColorData->clrSign[static_cast<size_t>(eState) - 1], matrix);
 }
diff --git a/xfa/fwl/theme/cfwl_widgettp.h b/xfa/fwl/theme/cfwl_widgettp.h
index 95a7a28..b206d73 100644
--- a/xfa/fwl/theme/cfwl_widgettp.h
+++ b/xfa/fwl/theme/cfwl_widgettp.h
@@ -36,10 +36,10 @@
 
  protected:
   struct CColorData {
-    FX_ARGB clrBorder[4];
-    FX_ARGB clrStart[4];
-    FX_ARGB clrEnd[4];
-    FX_ARGB clrSign[4];
+    FX_ARGB clrBorder[4];  // Indexed by enum FWLTHEME_STATE - 1.
+    FX_ARGB clrStart[4];   // Indexed by enum FWLTHEME_STATE - 1.
+    FX_ARGB clrEnd[4];     // Indexed by enum FWLTHEME_STATE - 1.
+    FX_ARGB clrSign[4];    // Indexed by enum FWLTHEME_STATE - 1.
   };
 
   CFWL_WidgetTP();