1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #include "xfa/src/foxitlib.h"
8 #include "xfa/src/fxfa/src/common/xfa_common.h"
9 #include "xfa_fwladapter.h"
10 #include "xfa_ffwidget.h"
11 #include "xfa_fffield.h"
12 #include "xfa_ffdoc.h"
FWL_CreateFuelAdapterNative()13 IFWL_AdapterNative* FWL_CreateFuelAdapterNative() {
14 return NULL;
15 }
FWL_ReleaseFuelAdapterNative(IFWL_AdapterNative * native)16 void FWL_ReleaseFuelAdapterNative(IFWL_AdapterNative* native) {}
FWL_PostMessageToMainRoop(CFWL_Message * pMessage)17 void FWL_PostMessageToMainRoop(CFWL_Message* pMessage) {}
FWL_ShowCaret(IFWL_Widget * pWidget,FX_BOOL bVisible,const CFX_RectF * pRtAnchor)18 FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget,
19 FX_BOOL bVisible,
20 const CFX_RectF* pRtAnchor) {
21 CXFA_FFWidget* pXFAWidget = (CXFA_FFWidget*)pWidget->GetPrivateData(pWidget);
22 if (!pXFAWidget) {
23 return FALSE;
24 }
25 IXFA_DocProvider* pDocProvider = pXFAWidget->GetDoc()->GetDocProvider();
26 if (!pDocProvider) {
27 return FALSE;
28 }
29 if (bVisible) {
30 CFX_Matrix mt;
31 pXFAWidget->GetRotateMatrix(mt);
32 CFX_RectF rt(*pRtAnchor);
33 mt.TransformRect(rt);
34 pDocProvider->DisplayCaret(pXFAWidget, bVisible, &rt);
35 return TRUE;
36 }
37 pDocProvider->DisplayCaret(pXFAWidget, bVisible, pRtAnchor);
38 return TRUE;
39 }
RepaintWidget(IFWL_Widget * pWidget,const CFX_RectF * pRect)40 FWL_ERR CXFA_FWLAdapterWidgetMgr::RepaintWidget(IFWL_Widget* pWidget,
41 const CFX_RectF* pRect) {
42 if (!pWidget)
43 return FWL_ERR_Indefinite;
44 CXFA_FFField* pField = (CXFA_FFField*)pWidget->GetPrivateData(pWidget);
45 if (!pField)
46 return FWL_ERR_Indefinite;
47 #ifdef _XFA_EMB
48 CFX_RectF rtInvalidate;
49 pWidget->GetWidgetRect(rtInvalidate);
50 if (pRect) {
51 rtInvalidate.left += pRect->left;
52 rtInvalidate.top += pRect->top;
53 rtInvalidate.width = pRect->width;
54 rtInvalidate.height = pRect->height;
55 }
56 CFX_Matrix mt;
57 pField->GetRotateMatrix(mt);
58 mt.TransformRect(rtInvalidate);
59 pField->AddInvalidateRect(&rtInvalidate);
60 #else
61 pField->AddInvalidateRect(NULL);
62 #endif
63 return FWL_ERR_Succeeded;
64 }
GetPopupPos(IFWL_Widget * pWidget,FX_FLOAT fMinHeight,FX_FLOAT fMaxHeight,const CFX_RectF & rtAnchor,CFX_RectF & rtPopup)65 FX_BOOL CXFA_FWLAdapterWidgetMgr::GetPopupPos(IFWL_Widget* pWidget,
66 FX_FLOAT fMinHeight,
67 FX_FLOAT fMaxHeight,
68 const CFX_RectF& rtAnchor,
69 CFX_RectF& rtPopup) {
70 CXFA_FFWidget* pFFWidget = (CXFA_FFWidget*)(pWidget->GetPrivateData(pWidget));
71 CFX_Matrix mt;
72 pFFWidget->GetRotateMatrix(mt);
73 CFX_RectF rtRotateAnchor(rtAnchor);
74 mt.TransformRect(rtRotateAnchor);
75 pFFWidget->GetDoc()->GetDocProvider()->GetPopupPos(
76 pFFWidget, fMinHeight, fMaxHeight, rtRotateAnchor, rtPopup);
77 return TRUE;
78 }
79