| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #include "xfa/src/foxitlib.h" |
| #include "xfa/src/fxfa/src/common/xfa_common.h" |
| #include "xfa_fwladapter.h" |
| #include "xfa_ffwidget.h" |
| #include "xfa_fffield.h" |
| #include "xfa_ffdoc.h" |
| |
| void FWL_PostMessageToMainRoop(CFWL_Message* pMessage) {} |
| FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, |
| FX_BOOL bVisible, |
| const CFX_RectF* pRtAnchor) { |
| CXFA_FFWidget* pXFAWidget = (CXFA_FFWidget*)pWidget->GetPrivateData(pWidget); |
| if (!pXFAWidget) { |
| return FALSE; |
| } |
| IXFA_DocProvider* pDocProvider = pXFAWidget->GetDoc()->GetDocProvider(); |
| if (!pDocProvider) { |
| return FALSE; |
| } |
| if (bVisible) { |
| CFX_Matrix mt; |
| pXFAWidget->GetRotateMatrix(mt); |
| CFX_RectF rt(*pRtAnchor); |
| mt.TransformRect(rt); |
| pDocProvider->DisplayCaret(pXFAWidget, bVisible, &rt); |
| return TRUE; |
| } |
| pDocProvider->DisplayCaret(pXFAWidget, bVisible, pRtAnchor); |
| return TRUE; |
| } |
| FWL_ERR CXFA_FWLAdapterWidgetMgr::RepaintWidget(IFWL_Widget* pWidget, |
| const CFX_RectF* pRect) { |
| if (!pWidget) |
| return FWL_ERR_Indefinite; |
| CXFA_FFField* pField = (CXFA_FFField*)pWidget->GetPrivateData(pWidget); |
| if (!pField) |
| return FWL_ERR_Indefinite; |
| #ifdef _XFA_EMB |
| CFX_RectF rtInvalidate; |
| pWidget->GetWidgetRect(rtInvalidate); |
| if (pRect) { |
| rtInvalidate.left += pRect->left; |
| rtInvalidate.top += pRect->top; |
| rtInvalidate.width = pRect->width; |
| rtInvalidate.height = pRect->height; |
| } |
| CFX_Matrix mt; |
| pField->GetRotateMatrix(mt); |
| mt.TransformRect(rtInvalidate); |
| pField->AddInvalidateRect(&rtInvalidate); |
| #else |
| pField->AddInvalidateRect(NULL); |
| #endif |
| return FWL_ERR_Succeeded; |
| } |
| FX_BOOL CXFA_FWLAdapterWidgetMgr::GetPopupPos(IFWL_Widget* pWidget, |
| FX_FLOAT fMinHeight, |
| FX_FLOAT fMaxHeight, |
| const CFX_RectF& rtAnchor, |
| CFX_RectF& rtPopup) { |
| CXFA_FFWidget* pFFWidget = (CXFA_FFWidget*)(pWidget->GetPrivateData(pWidget)); |
| CFX_Matrix mt; |
| pFFWidget->GetRotateMatrix(mt); |
| CFX_RectF rtRotateAnchor(rtAnchor); |
| mt.TransformRect(rtRotateAnchor); |
| pFFWidget->GetDoc()->GetDocProvider()->GetPopupPos( |
| pFFWidget, fMinHeight, fMaxHeight, rtRotateAnchor, rtPopup); |
| return TRUE; |
| } |