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);
-}