Replace duplicate FXCT_* definitions with enum class CursorStyle.

Bug: pdfium:1085
Change-Id: I64ea1b6719fbec02218d8a6adb14fdce01d9faeb
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80571
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
index c284f86..15d80f1 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
@@ -28,6 +28,25 @@
 #include "third_party/base/check.h"
 #include "third_party/base/stl_util.h"
 
+static_assert(FXCT_ARROW ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kArrow),
+              "kArrow value mismatch");
+static_assert(FXCT_NESW ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kNESW),
+              "kNEWS value mismatch");
+static_assert(FXCT_NWSE ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kNWSE),
+              "kNWSE value mismatch");
+static_assert(FXCT_VBEAM ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kVBeam),
+              "kVBeam value mismatch");
+static_assert(FXCT_HBEAM ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kHBeam),
+              "HBeam value mismatch");
+static_assert(FXCT_HAND ==
+                  static_cast<int>(IPWL_SystemHandler::CursorStyle::kHand),
+              "kHand value mismatch");
+
 FPDF_WIDESTRING AsFPDFWideString(ByteString* bsUTF16LE) {
   // Force a private version of the string, since we're about to hand it off
   // to the embedder. Should the embedder modify it by accident, it won't
@@ -345,9 +364,9 @@
   }
 }
 
-void CPDFSDK_FormFillEnvironment::SetCursor(int nCursorType) {
+void CPDFSDK_FormFillEnvironment::SetCursor(CursorStyle nCursorType) {
   if (m_pInfo && m_pInfo->FFI_SetCursor)
-    m_pInfo->FFI_SetCursor(m_pInfo, nCursorType);
+    m_pInfo->FFI_SetCursor(m_pInfo, static_cast<int>(nCursorType));
 }
 
 int CPDFSDK_FormFillEnvironment::SetTimer(int uElapse,
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.h b/fpdfsdk/cpdfsdk_formfillenvironment.h
index cc1cdba..7cee3ed 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.h
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.h
@@ -64,7 +64,7 @@
   void OutputSelectedRect(CFFL_FormFiller* pFormFiller,
                           const CFX_FloatRect& rect) override;
   bool IsSelectionImplemented() const override;
-  void SetCursor(int32_t nCursorType) override;
+  void SetCursor(CursorStyle nCursorType) override;
 
   CPDFSDK_PageView* GetPageView(IPDF_Page* pUnderlyingPage, bool renew);
   CPDFSDK_PageView* GetPageViewAtIndex(int nIndex);
diff --git a/fpdfsdk/pwl/cpwl_button.cpp b/fpdfsdk/pwl/cpwl_button.cpp
index 39ea618..7b978bb 100644
--- a/fpdfsdk/pwl/cpwl_button.cpp
+++ b/fpdfsdk/pwl/cpwl_button.cpp
@@ -12,7 +12,7 @@
     const CreateParams& cp,
     std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData)
     : CPWL_Wnd(cp, std::move(pAttachedData)) {
-  GetCreationParams()->eCursorType = FXCT_HAND;
+  GetCreationParams()->eCursorType = IPWL_SystemHandler::CursorStyle::kHand;
 }
 
 CPWL_Button::~CPWL_Button() = default;
diff --git a/fpdfsdk/pwl/cpwl_combo_box.cpp b/fpdfsdk/pwl/cpwl_combo_box.cpp
index 1ddb1ef..2082792 100644
--- a/fpdfsdk/pwl/cpwl_combo_box.cpp
+++ b/fpdfsdk/pwl/cpwl_combo_box.cpp
@@ -170,7 +170,7 @@
   bcp.sBorderColor = PWL_DEFAULT_BLACKCOLOR;
   bcp.dwBorderWidth = 2;
   bcp.nBorderStyle = BorderStyle::kBeveled;
-  bcp.eCursorType = FXCT_ARROW;
+  bcp.eCursorType = IPWL_SystemHandler::CursorStyle::kArrow;
 
   auto pButton = std::make_unique<CPWL_CBButton>(bcp, CloneAttachedData());
   m_pButton = pButton.get();
@@ -186,7 +186,7 @@
   lcp.dwFlags = PWS_BORDER | PWS_BACKGROUND | PLBS_HOVERSEL | PWS_VSCROLL;
   lcp.nBorderStyle = BorderStyle::kSolid;
   lcp.dwBorderWidth = 1;
-  lcp.eCursorType = FXCT_ARROW;
+  lcp.eCursorType = IPWL_SystemHandler::CursorStyle::kArrow;
   lcp.rcRectWnd = CFX_FloatRect();
 
   lcp.fFontSize =
diff --git a/fpdfsdk/pwl/cpwl_edit.cpp b/fpdfsdk/pwl/cpwl_edit.cpp
index b359c99..2b64312 100644
--- a/fpdfsdk/pwl/cpwl_edit.cpp
+++ b/fpdfsdk/pwl/cpwl_edit.cpp
@@ -33,7 +33,7 @@
     std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData)
     : CPWL_Wnd(cp, std::move(pAttachedData)),
       m_pEditImpl(std::make_unique<CPWL_EditImpl>()) {
-  GetCreationParams()->eCursorType = FXCT_VBEAM;
+  GetCreationParams()->eCursorType = IPWL_SystemHandler::CursorStyle::kVBeam;
 }
 
 CPWL_Edit::~CPWL_Edit() {
@@ -482,8 +482,11 @@
 }
 
 void CPWL_Edit::SetCursor() {
-  if (IsValid())
-    GetSystemHandler()->SetCursor(IsWndHorV() ? FXCT_VBEAM : FXCT_HBEAM);
+  if (IsValid()) {
+    GetSystemHandler()->SetCursor(
+        IsWndHorV() ? IPWL_SystemHandler::CursorStyle::kVBeam
+                    : IPWL_SystemHandler::CursorStyle::kHBeam);
+  }
 }
 
 WideString CPWL_Edit::GetSelectedText() {
diff --git a/fpdfsdk/pwl/cpwl_sbbutton.cpp b/fpdfsdk/pwl/cpwl_sbbutton.cpp
index 7b96fcf..f2fbd52 100644
--- a/fpdfsdk/pwl/cpwl_sbbutton.cpp
+++ b/fpdfsdk/pwl/cpwl_sbbutton.cpp
@@ -17,7 +17,7 @@
     std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData,
     Type eButtonType)
     : CPWL_Wnd(cp, std::move(pAttachedData)), m_eSBButtonType(eButtonType) {
-  GetCreationParams()->eCursorType = FXCT_ARROW;
+  GetCreationParams()->eCursorType = IPWL_SystemHandler::CursorStyle::kArrow;
 }
 
 CPWL_SBButton::~CPWL_SBButton() = default;
diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.cpp b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
index 2e47f1b..fe78fcd 100644
--- a/fpdfsdk/pwl/cpwl_scroll_bar.cpp
+++ b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
@@ -107,7 +107,7 @@
     const CreateParams& cp,
     std::unique_ptr<IPWL_SystemHandler::PerWindowData> pAttachedData)
     : CPWL_Wnd(cp, std::move(pAttachedData)) {
-  GetCreationParams()->eCursorType = FXCT_ARROW;
+  GetCreationParams()->eCursorType = IPWL_SystemHandler::CursorStyle::kArrow;
 }
 
 CPWL_ScrollBar::~CPWL_ScrollBar() = default;
diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
index f2628f2..ed0b4af 100644
--- a/fpdfsdk/pwl/cpwl_wnd.cpp
+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
@@ -491,7 +491,7 @@
   CreateParams scp = cp;
   scp.dwFlags = PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP;
   scp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
-  scp.eCursorType = FXCT_ARROW;
+  scp.eCursorType = IPWL_SystemHandler::CursorStyle::kArrow;
   scp.nTransparency = PWL_SCROLLBAR_TRANSPARENCY;
 
   auto pBar = std::make_unique<CPWL_ScrollBar>(scp, CloneAttachedData());
diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h
index c51fd12..e293a2b 100644
--- a/fpdfsdk/pwl/cpwl_wnd.h
+++ b/fpdfsdk/pwl/cpwl_wnd.h
@@ -56,14 +56,6 @@
 // combobox styles
 #define PCBS_ALLOWCUSTOMTEXT 0x0001L
 
-// Cursor style. These must match the values in public/fpdf_formfill.h
-#define FXCT_ARROW 0
-#define FXCT_NESW 1
-#define FXCT_NWSE 2
-#define FXCT_VBEAM 3
-#define FXCT_HBEAM 4
-#define FXCT_HAND 5
-
 struct CPWL_Dash {
   CPWL_Dash() : nDash(0), nGap(0), nPhase(0) {}
   CPWL_Dash(int32_t dash, int32_t gap, int32_t phase)
@@ -102,6 +94,7 @@
     virtual void OnSetFocus(CPWL_Edit* pEdit) = 0;
   };
 
+  // Caller-provided options for window creation.
   class CreateParams {
    public:
     CreateParams();
@@ -114,6 +107,7 @@
     UnownedPtr<IPWL_SystemHandler> pSystemHandler;
     UnownedPtr<IPVT_FontMap> pFontMap;
     ObservedPtr<ProviderIface> pProvider;
+
     // Optional:
     UnownedPtr<FocusHandlerIface> pFocusHandler;
     uint32_t dwFlags = 0;
@@ -125,9 +119,11 @@
     int32_t nTransparency = 255;
     float fFontSize;
     CPWL_Dash sDash;
-    // Ignore:
+
+    // Ignore, used internally only:
     CPWL_MsgControl* pMsgControl = nullptr;
-    int32_t eCursorType = FXCT_ARROW;
+    IPWL_SystemHandler::CursorStyle eCursorType =
+        IPWL_SystemHandler::CursorStyle::kArrow;
   };
 
   static bool IsSHIFTKeyDown(uint32_t nFlag);
diff --git a/fpdfsdk/pwl/ipwl_systemhandler.h b/fpdfsdk/pwl/ipwl_systemhandler.h
index 8a14d8e..61ed7f6 100644
--- a/fpdfsdk/pwl/ipwl_systemhandler.h
+++ b/fpdfsdk/pwl/ipwl_systemhandler.h
@@ -16,6 +16,16 @@
 
 class IPWL_SystemHandler {
  public:
+  // These must match the values in public/fpdf_formfill.h
+  enum CursorStyle {
+    kArrow = 0,
+    kNESW = 1,
+    kNWSE = 2,
+    kVBeam = 3,
+    kHBeam = 4,
+    kHand = 5,
+  };
+
   class PerWindowData {
    public:
     virtual ~PerWindowData() = default;
@@ -29,7 +39,7 @@
   virtual void OutputSelectedRect(CFFL_FormFiller* pFormFiller,
                                   const CFX_FloatRect& rect) = 0;
   virtual bool IsSelectionImplemented() const = 0;
-  virtual void SetCursor(int32_t nCursorType) = 0;
+  virtual void SetCursor(CursorStyle nCursorStyle) = 0;
 };
 
 #endif  // FPDFSDK_PWL_IPWL_SYSTEMHANDLER_H_