Fix nits in CFFL_FormFiller

Cleanup nits in CFFL_FormFiller. Split CFFL_Button into own files.

Change-Id: I41fa7118a46aa1f495c15f90a4c4b77b309a10d3
Reviewed-on: https://pdfium-review.googlesource.com/7339
Reviewed-by: Nicolás Peña <npm@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/fpdfsdk/formfiller/cffl_formfiller.cpp b/fpdfsdk/formfiller/cffl_formfiller.cpp
index f45a52c..31f6963 100644
--- a/fpdfsdk/formfiller/cffl_formfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_formfiller.cpp
@@ -17,11 +17,13 @@
 #include "fpdfsdk/fsdk_common.h"
 #include "fpdfsdk/pdfwindow/cpwl_utils.h"
 
-#define GetRed(rgb) ((uint8_t)(rgb))
-#define GetGreen(rgb) ((uint8_t)(((uint16_t)(rgb)) >> 8))
-#define GetBlue(rgb) ((uint8_t)((rgb) >> 16))
+namespace {
 
-#define FFL_HINT_ELAPSE 800
+CPDFSDK_Widget* CPDFSDKAnnotToWidget(CPDFSDK_Annot* annot) {
+  return static_cast<CPDFSDK_Widget*>(annot);
+}
+
+}  // namespace
 
 CFFL_FormFiller::CFFL_FormFiller(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  CPDFSDK_Widget* pWidget)
@@ -36,7 +38,8 @@
 void CFFL_FormFiller::DestroyWindows() {
   for (const auto& it : m_Maps) {
     CPWL_Wnd* pWnd = it.second;
-    CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
+    CFFL_PrivateData* pData =
+        static_cast<CFFL_PrivateData*>(pWnd->GetAttachedData());
     pWnd->InvalidateProvider(this);
     pWnd->Destroy();
     delete pWnd;
@@ -47,16 +50,13 @@
 
 void CFFL_FormFiller::SetWindowRect(CPDFSDK_PageView* pPageView,
                                     const CFX_FloatRect& rcWindow) {
-  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false)) {
+  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false))
     pWnd->Move(CFX_FloatRect(rcWindow), true, false);
-  }
 }
 
 CFX_FloatRect CFFL_FormFiller::GetWindowRect(CPDFSDK_PageView* pPageView) {
-  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false)) {
-    return pWnd->GetWindowRect();
-  }
-  return CFX_FloatRect();
+  CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false);
+  return pWnd ? pWnd->GetWindowRect() : CFX_FloatRect();
 }
 
 FX_RECT CFFL_FormFiller::GetViewBBox(CPDFSDK_PageView* pPageView,
@@ -65,21 +65,15 @@
   ASSERT(pAnnot);
 
   CFX_FloatRect rcAnnot = m_pWidget->GetRect();
-
-  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false)) {
-    CFX_FloatRect rcWindow = pWnd->GetWindowRect();
-    rcAnnot = PWLtoFFL(rcWindow);
-  }
+  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false))
+    rcAnnot = PWLtoFFL(pWnd->GetWindowRect());
 
   CFX_FloatRect rcWin = rcAnnot;
-
   CFX_FloatRect rcFocus = GetFocusBox(pPageView);
   if (!rcFocus.IsEmpty())
     rcWin.Union(rcFocus);
 
-  CFX_FloatRect rect = CPWL_Utils::InflateRect(rcWin, 1);
-
-  return rect.GetOuterRect();
+  return CPWL_Utils::InflateRect(rcWin, 1).GetOuterRect();
 }
 
 void CFFL_FormFiller::OnDraw(CPDFSDK_PageView* pPageView,
@@ -92,20 +86,22 @@
     CFX_Matrix mt = GetCurMatrix();
     mt.Concat(*pUser2Device);
     pWnd->DrawAppearance(pDevice, &mt);
-  } else {
-    CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
-    if (CFFL_InteractiveFormFiller::IsVisible(pWidget))
-      pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal,
-                              nullptr);
+    return;
   }
+
+  CPDFSDK_Widget* pWidget = CPDFSDKAnnotToWidget(pAnnot);
+  if (!CFFL_InteractiveFormFiller::IsVisible(pWidget))
+    return;
+
+  pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr);
 }
 
 void CFFL_FormFiller::OnDrawDeactive(CPDFSDK_PageView* pPageView,
                                      CPDFSDK_Annot* pAnnot,
                                      CFX_RenderDevice* pDevice,
                                      CFX_Matrix* pUser2Device) {
-  CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
-  pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr);
+  CPDFSDKAnnotToWidget(pAnnot)->DrawAppearance(pDevice, pUser2Device,
+                                               CPDF_Annot::Normal, nullptr);
 }
 
 void CFFL_FormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView,
@@ -262,12 +258,8 @@
     return;
 
   CPDFSDK_PageView* pPageView = GetCurPageView(false);
-  if (!pPageView)
+  if (!pPageView || !CommitData(pPageView, nFlag))
     return;
-
-  if (!CommitData(pPageView, nFlag))
-    return;
-
   if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false))
     pWnd->KillFocus();
 
@@ -297,26 +289,19 @@
 
   uint32_t dwCreateFlags = PWS_BORDER | PWS_BACKGROUND | PWS_VISIBLE;
   uint32_t dwFieldFlag = m_pWidget->GetFieldFlags();
-  if (dwFieldFlag & FIELDFLAG_READONLY) {
+  if (dwFieldFlag & FIELDFLAG_READONLY)
     dwCreateFlags |= PWS_READONLY;
-  }
 
   FX_COLORREF color;
-  if (m_pWidget->GetFillColor(color)) {
-    cp.sBackgroundColor =
-        CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
-  }
-
-  if (m_pWidget->GetBorderColor(color)) {
-    cp.sBorderColor =
-        CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
-  }
+  if (m_pWidget->GetFillColor(color))
+    cp.sBackgroundColor = CPWL_Color(color);
+  if (m_pWidget->GetBorderColor(color))
+    cp.sBorderColor = CPWL_Color(color);
 
   cp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
 
-  if (m_pWidget->GetTextColor(color)) {
-    cp.sTextColor = CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
-  }
+  if (m_pWidget->GetTextColor(color))
+    cp.sTextColor = CPWL_Color(color);
 
   cp.fFontSize = m_pWidget->GetFontSize();
   cp.dwBorderWidth = m_pWidget->GetBorderWidth();
@@ -327,8 +312,6 @@
       cp.sDash = CPWL_Dash(3, 3, 0);
       break;
     case BorderStyle::BEVELED:
-      cp.dwBorderWidth *= 2;
-      break;
     case BorderStyle::INSET:
       cp.dwBorderWidth *= 2;
       break;
@@ -408,9 +391,6 @@
   CFX_Matrix mt;
   CFX_FloatRect rcDA = m_pWidget->GetPDFAnnot()->GetRect();
   switch (m_pWidget->GetRotate()) {
-    default:
-    case 0:
-      break;
     case 90:
       mt = CFX_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0);
       break;
@@ -421,6 +401,9 @@
     case 270:
       mt = CFX_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom);
       break;
+    case 0:
+    default:
+      break;
   }
   mt.e += rcDA.left;
   mt.f += rcDA.bottom;
@@ -444,13 +427,14 @@
 }
 
 CFX_FloatRect CFFL_FormFiller::GetFocusBox(CPDFSDK_PageView* pPageView) {
-  if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false)) {
-    CFX_FloatRect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect()));
-    CFX_FloatRect rcPage = pPageView->GetPDFPage()->GetPageBBox();
-    if (rcPage.Contains(rcFocus))
-      return rcFocus;
-  }
-  return CFX_FloatRect();
+  CPWL_Wnd* pWnd = GetPDFWindow(pPageView, false);
+  if (!pWnd)
+    return CFX_FloatRect();
+
+  CFX_FloatRect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect()));
+  return pPageView->GetPDFPage()->GetPageBBox().Contains(rcFocus)
+             ? rcFocus
+             : CFX_FloatRect();
 }
 
 CFX_FloatRect CFFL_FormFiller::FFLtoPWL(const CFX_FloatRect& rect) {
@@ -484,38 +468,40 @@
 }
 
 bool CFFL_FormFiller::CommitData(CPDFSDK_PageView* pPageView, uint32_t nFlag) {
-  if (IsDataChanged(pPageView)) {
-    CFFL_InteractiveFormFiller* pFormFiller =
-        m_pFormFillEnv->GetInteractiveFormFiller();
-    CPDFSDK_Annot::ObservedPtr pObserved(m_pWidget.Get());
+  if (!IsDataChanged(pPageView))
+    return true;
 
-    if (!pFormFiller->OnKeyStrokeCommit(&pObserved, pPageView, nFlag)) {
-      if (!pObserved)
-        return false;
-      ResetPDFWindow(pPageView, false);
-      return true;
-    }
+  CFFL_InteractiveFormFiller* pFormFiller =
+      m_pFormFillEnv->GetInteractiveFormFiller();
+  CPDFSDK_Annot::ObservedPtr pObserved(m_pWidget.Get());
+
+  if (!pFormFiller->OnKeyStrokeCommit(&pObserved, pPageView, nFlag)) {
     if (!pObserved)
       return false;
-
-    if (!pFormFiller->OnValidate(&pObserved, pPageView, nFlag)) {
-      if (!pObserved)
-        return false;
-      ResetPDFWindow(pPageView, false);
-      return true;
-    }
-    if (!pObserved)
-      return false;
-
-    SaveData(pPageView);
-    pFormFiller->OnCalculate(&pObserved, pPageView, nFlag);
-    if (!pObserved)
-      return false;
-
-    pFormFiller->OnFormat(&pObserved, pPageView, nFlag);
-    if (!pObserved)
-      return false;
+    ResetPDFWindow(pPageView, false);
+    return true;
   }
+  if (!pObserved)
+    return false;
+
+  if (!pFormFiller->OnValidate(&pObserved, pPageView, nFlag)) {
+    if (!pObserved)
+      return false;
+    ResetPDFWindow(pPageView, false);
+    return true;
+  }
+  if (!pObserved)
+    return false;
+
+  SaveData(pPageView);
+  pFormFiller->OnCalculate(&pObserved, pPageView, nFlag);
+  if (!pObserved)
+    return false;
+
+  pFormFiller->OnFormat(&pObserved, pPageView, nFlag);
+  if (!pObserved)
+    return false;
+
   return true;
 }
 
@@ -578,97 +564,3 @@
 void CFFL_FormFiller::InvalidateRect(const FX_RECT& rect) {
   m_pFormFillEnv->Invalidate(m_pWidget->GetUnderlyingPage(), rect);
 }
-
-CFFL_Button::CFFL_Button(CPDFSDK_FormFillEnvironment* pApp,
-                         CPDFSDK_Widget* pWidget)
-    : CFFL_FormFiller(pApp, pWidget), m_bMouseIn(false), m_bMouseDown(false) {}
-
-CFFL_Button::~CFFL_Button() {}
-
-void CFFL_Button::OnMouseEnter(CPDFSDK_PageView* pPageView,
-                               CPDFSDK_Annot* pAnnot) {
-  m_bMouseIn = true;
-  InvalidateRect(GetViewBBox(pPageView, pAnnot));
-}
-
-void CFFL_Button::OnMouseExit(CPDFSDK_PageView* pPageView,
-                              CPDFSDK_Annot* pAnnot) {
-  m_bMouseIn = false;
-
-  InvalidateRect(GetViewBBox(pPageView, pAnnot));
-  EndTimer();
-  ASSERT(m_pWidget);
-}
-
-bool CFFL_Button::OnLButtonDown(CPDFSDK_PageView* pPageView,
-                                CPDFSDK_Annot* pAnnot,
-                                uint32_t nFlags,
-                                const CFX_PointF& point) {
-  if (!pAnnot->GetRect().Contains(point))
-    return false;
-
-  m_bMouseDown = true;
-  m_bValid = true;
-  InvalidateRect(GetViewBBox(pPageView, pAnnot));
-  return true;
-}
-
-bool CFFL_Button::OnLButtonUp(CPDFSDK_PageView* pPageView,
-                              CPDFSDK_Annot* pAnnot,
-                              uint32_t nFlags,
-                              const CFX_PointF& point) {
-  if (!pAnnot->GetRect().Contains(point))
-    return false;
-
-  m_bMouseDown = false;
-  m_pWidget->GetPDFPage();
-
-  InvalidateRect(GetViewBBox(pPageView, pAnnot));
-  return true;
-}
-
-bool CFFL_Button::OnMouseMove(CPDFSDK_PageView* pPageView,
-                              CPDFSDK_Annot* pAnnot,
-                              uint32_t nFlags,
-                              const CFX_PointF& point) {
-  return true;
-}
-
-void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView,
-                         CPDFSDK_Annot* pAnnot,
-                         CFX_RenderDevice* pDevice,
-                         CFX_Matrix* pUser2Device) {
-  ASSERT(pPageView);
-  CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
-  CPDF_FormControl* pCtrl = pWidget->GetFormControl();
-  CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode();
-
-  if (eHM != CPDF_FormControl::Push) {
-    pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr);
-    return;
-  }
-
-  if (m_bMouseDown) {
-    if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down))
-      pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, nullptr);
-    else
-      pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal,
-                              nullptr);
-  } else if (m_bMouseIn) {
-    if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Rollover))
-      pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Rollover,
-                              nullptr);
-    else
-      pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal,
-                              nullptr);
-  } else {
-    pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr);
-  }
-}
-
-void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView,
-                                 CPDFSDK_Annot* pAnnot,
-                                 CFX_RenderDevice* pDevice,
-                                 CFX_Matrix* pUser2Device) {
-  OnDraw(pPageView, pAnnot, pDevice, pUser2Device);
-}