| Index: xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp
|
| diff --git a/xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp b/xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp
|
| index 6af98a6456d9e907bbe183b869f2c63f9c5ceb39..def79b796208a44a941361402d3f525772456db5 100644
|
| --- a/xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp
|
| +++ b/xfa/src/fxfa/src/app/xfa_ffwidgethandler.cpp
|
| @@ -1,639 +1,639 @@
|
| -// 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_ffwidgethandler.h"
|
| -#include "xfa_ffwidget.h"
|
| -#include "xfa_fffield.h"
|
| -#include "xfa_ffchoicelist.h"
|
| -#include "xfa_ffdoc.h"
|
| -#include "xfa_ffdocview.h"
|
| -CXFA_FFWidgetHandler::CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView)
|
| - : m_pDocView(pDocView) {}
|
| -CXFA_FFWidgetHandler::~CXFA_FFWidgetHandler() {}
|
| -IXFA_PageView* CXFA_FFWidgetHandler::GetPageView(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->GetPageView();
|
| -}
|
| -void CXFA_FFWidgetHandler::GetRect(IXFA_Widget* hWidget, CFX_RectF& rt) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->GetWidgetRect(rt);
|
| -}
|
| -FX_DWORD CXFA_FFWidgetHandler::GetStatus(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->GetStatus();
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::GetBBox(IXFA_Widget* hWidget,
|
| - CFX_RectF& rtBox,
|
| - FX_DWORD dwStatus,
|
| - FX_BOOL bDrawFocus) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)
|
| - ->GetBBox(rtBox, dwStatus, bDrawFocus);
|
| -}
|
| -CXFA_WidgetAcc* CXFA_FFWidgetHandler::GetDataAcc(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc();
|
| -}
|
| -void CXFA_FFWidgetHandler::GetName(IXFA_Widget* hWidget,
|
| - CFX_WideString& wsName,
|
| - int32_t iNameType) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc()->GetName(wsName,
|
| - iNameType);
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::GetToolTip(IXFA_Widget* hWidget,
|
| - CFX_WideString& wsToolTip) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->GetToolTip(wsToolTip);
|
| -}
|
| -void CXFA_FFWidgetHandler::SetPrivateData(IXFA_Widget* hWidget,
|
| - void* module_id,
|
| - void* pData,
|
| - PD_CALLBACK_FREEDATA callback) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)
|
| - ->SetPrivateData(module_id, pData, callback);
|
| -}
|
| -void* CXFA_FFWidgetHandler::GetPrivateData(IXFA_Widget* hWidget,
|
| - void* module_id) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->GetPrivateData(module_id);
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnMouseEnter(IXFA_Widget* hWidget) {
|
| - m_pDocView->LockUpdate();
|
| - FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseEnter();
|
| - m_pDocView->UnlockUpdate();
|
| - m_pDocView->UpdateDocView();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnMouseExit(IXFA_Widget* hWidget) {
|
| - m_pDocView->LockUpdate();
|
| - FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseExit();
|
| - m_pDocView->UnlockUpdate();
|
| - m_pDocView->UpdateDocView();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnLButtonDown(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - m_pDocView->LockUpdate();
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDown(dwFlags, fx, fy);
|
| - if (bRet && m_pDocView->SetFocus(hWidget)) {
|
| - ((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| - ->GetDocProvider()
|
| - ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget);
|
| - }
|
| - m_pDocView->UnlockUpdate();
|
| - m_pDocView->UpdateDocView();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnLButtonUp(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - m_pDocView->LockUpdate();
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - m_pDocView->m_bLayoutEvent = TRUE;
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonUp(dwFlags, fx, fy);
|
| - m_pDocView->UnlockUpdate();
|
| - m_pDocView->UpdateDocView();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnLButtonDblClk(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDblClk(dwFlags, fx, fy);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnMouseMove(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnMouseMove(dwFlags, fx, fy);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnMouseWheel(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - int16_t zDelta,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)
|
| - ->OnMouseWheel(dwFlags, zDelta, fx, fy);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnRButtonDown(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDown(dwFlags, fx, fy);
|
| - if (bRet && m_pDocView->SetFocus(hWidget)) {
|
| - ((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| - ->GetDocProvider()
|
| - ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget);
|
| - }
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnRButtonUp(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonUp(dwFlags, fx, fy);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnRButtonDblClk(IXFA_Widget* hWidget,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDblClk(dwFlags, fx, fy);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnKeyDown(IXFA_Widget* hWidget,
|
| - FX_DWORD dwKeyCode,
|
| - FX_DWORD dwFlags) {
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnKeyDown(dwKeyCode, dwFlags);
|
| - m_pDocView->RunInvalidate();
|
| - m_pDocView->UpdateDocView();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnKeyUp(IXFA_Widget* hWidget,
|
| - FX_DWORD dwKeyCode,
|
| - FX_DWORD dwFlags) {
|
| - FX_BOOL bRet =
|
| - static_cast<CXFA_FFWidget*>(hWidget)->OnKeyUp(dwKeyCode, dwFlags);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnChar(IXFA_Widget* hWidget,
|
| - FX_DWORD dwChar,
|
| - FX_DWORD dwFlags) {
|
| - FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnChar(dwChar, dwFlags);
|
| - m_pDocView->RunInvalidate();
|
| - return bRet;
|
| -}
|
| -FX_DWORD CXFA_FFWidgetHandler::OnHitTest(IXFA_Widget* hWidget,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - if (!(static_cast<CXFA_FFWidget*>(hWidget)->GetStatus() &
|
| - XFA_WIDGETSTATUS_Visible)) {
|
| - return FWL_WGTHITTEST_Unknown;
|
| - }
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->OnHitTest(fx, fy);
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::OnSetCursor(IXFA_Widget* hWidget,
|
| - FX_FLOAT fx,
|
| - FX_FLOAT fy) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->OnSetCursor(fx, fy);
|
| -}
|
| -void CXFA_FFWidgetHandler::RenderWidget(IXFA_Widget* hWidget,
|
| - CFX_Graphics* pGS,
|
| - CFX_Matrix* pMatrix,
|
| - FX_BOOL bHighlight) {
|
| - static_cast<CXFA_FFWidget*>(hWidget)->RenderWidget(
|
| - pGS, pMatrix, bHighlight ? XFA_WIDGETSTATUS_Highlight : 0, 0);
|
| -}
|
| -FX_BOOL CXFA_FFWidgetHandler::HasEvent(CXFA_WidgetAcc* pWidgetAcc,
|
| - XFA_EVENTTYPE eEventType) {
|
| - if (!pWidgetAcc || eEventType == XFA_EVENT_Unknown) {
|
| - return FALSE;
|
| - }
|
| - if (pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) {
|
| - return FALSE;
|
| - }
|
| - switch (eEventType) {
|
| - case XFA_EVENT_Calculate: {
|
| - CXFA_Calculate calc = pWidgetAcc->GetCalculate();
|
| - if (!calc) {
|
| - return FALSE;
|
| - }
|
| - if (calc.GetScript()) {
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| - }
|
| - case XFA_EVENT_Validate: {
|
| - CXFA_Validate val = pWidgetAcc->GetValidate();
|
| - if (!val) {
|
| - return FALSE;
|
| - }
|
| - if (val.GetScript()) {
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - CXFA_NodeArray eventArray;
|
| - return pWidgetAcc->GetEventByActivity(gs_EventActivity[eEventType],
|
| - eventArray);
|
| -}
|
| -int32_t CXFA_FFWidgetHandler::ProcessEvent(CXFA_WidgetAcc* pWidgetAcc,
|
| - CXFA_EventParam* pParam) {
|
| - if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) {
|
| - return XFA_EVENTERROR_NotExist;
|
| - }
|
| - if (!pWidgetAcc || pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) {
|
| - return XFA_EVENTERROR_NotExist;
|
| - }
|
| - switch (pParam->m_eType) {
|
| - case XFA_EVENT_Calculate:
|
| - return pWidgetAcc->ProcessCalculate();
|
| - case XFA_EVENT_Validate:
|
| - if (((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| - ->GetDocProvider()
|
| - ->IsValidationsEnabled(m_pDocView->GetDoc())) {
|
| - return pWidgetAcc->ProcessValidate();
|
| - }
|
| - return XFA_EVENTERROR_Disabled;
|
| - case XFA_EVENT_InitCalculate: {
|
| - CXFA_Calculate calc = pWidgetAcc->GetCalculate();
|
| - if (!calc) {
|
| - return XFA_EVENTERROR_NotExist;
|
| - }
|
| - if (pWidgetAcc->GetNode()->HasFlag(XFA_NODEFLAG_UserInteractive)) {
|
| - return XFA_EVENTERROR_Disabled;
|
| - }
|
| - CXFA_Script script = calc.GetScript();
|
| - return pWidgetAcc->ExecuteScript(script, pParam);
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - int32_t iRet =
|
| - pWidgetAcc->ProcessEvent(gs_EventActivity[pParam->m_eType], pParam);
|
| - return iRet;
|
| -}
|
| -IXFA_Widget* CXFA_FFWidgetHandler::CreateWidget(IXFA_Widget* hParent,
|
| - XFA_WIDGETTYPE eType,
|
| - IXFA_Widget* hBefore) {
|
| - CXFA_Node* pParentFormItem =
|
| - hParent ? static_cast<CXFA_FFWidget*>(hParent)->GetDataAcc()->GetNode()
|
| - : NULL;
|
| - CXFA_Node* pBeforeFormItem =
|
| - hBefore ? static_cast<CXFA_FFWidget*>(hBefore)->GetDataAcc()->GetNode()
|
| - : NULL;
|
| - CXFA_Node* pNewFormItem =
|
| - CreateWidgetFormItem(eType, pParentFormItem, pBeforeFormItem);
|
| - if (pNewFormItem == NULL) {
|
| - return NULL;
|
| - }
|
| - pNewFormItem->GetTemplateNode()->SetFlag(XFA_NODEFLAG_Initialized);
|
| - pNewFormItem->SetFlag(XFA_NODEFLAG_Initialized);
|
| - m_pDocView->RunLayout();
|
| - CXFA_LayoutItem* pLayout =
|
| - m_pDocView->GetXFALayout()->GetLayoutItem(pNewFormItem);
|
| - return (IXFA_Widget*)pLayout;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateWidgetFormItem(
|
| - XFA_WIDGETTYPE eType,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - switch (eType) {
|
| - case XFA_WIDGETTYPE_Barcode:
|
| - return NULL;
|
| - case XFA_WIDGETTYPE_PushButton:
|
| - return CreatePushButton(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_CheckButton:
|
| - return CreateCheckButton(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_ExcludeGroup:
|
| - return CreateExclGroup(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_RadioButton:
|
| - return CreateRadioButton(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Arc:
|
| - return CreateArc(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Rectangle:
|
| - return CreateRectangle(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Image:
|
| - return CreateImage(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Line:
|
| - return CreateLine(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Text:
|
| - return CreateText(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_DatetimeEdit:
|
| - return CreateDatetimeEdit(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_DecimalField:
|
| - return CreateDecimalField(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_NumericField:
|
| - return CreateNumericField(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Signature:
|
| - return CreateSignature(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_TextEdit:
|
| - return CreateTextEdit(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_DropdownList:
|
| - return CreateDropdownList(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_ListBox:
|
| - return CreateListBox(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_ImageField:
|
| - return CreateImageField(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_PasswordEdit:
|
| - return CreatePasswordEdit(pParent, pBefore);
|
| - case XFA_WIDGETTYPE_Subform:
|
| - return CreateSubform(pParent, pBefore);
|
| - default:
|
| - break;
|
| - }
|
| - return NULL;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreatePushButton(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_Button, pParent, pBefore);
|
| - CXFA_Node* pCaption = CreateCopyNode(XFA_ELEMENT_Caption, pField);
|
| - CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pCaption);
|
| - CXFA_Node* pText = CreateCopyNode(XFA_ELEMENT_Text, pValue);
|
| - pText->SetContent(FX_WSTRC(L"Button"), FX_WSTRC(L"Button"), FALSE);
|
| - CXFA_Node* pPara = CreateCopyNode(XFA_ELEMENT_Para, pCaption);
|
| - pPara->SetEnum(XFA_ATTRIBUTE_VAlign, XFA_ATTRIBUTEENUM_Middle, FALSE);
|
| - pPara->SetEnum(XFA_ATTRIBUTE_HAlign, XFA_ATTRIBUTEENUM_Center, FALSE);
|
| - CreateFontNode(pCaption);
|
| - CXFA_Node* pBorder = CreateCopyNode(XFA_ELEMENT_Border, pField);
|
| - pBorder->SetEnum(XFA_ATTRIBUTE_Hand, XFA_ATTRIBUTEENUM_Right, FALSE);
|
| - CXFA_Node* pEdge = CreateCopyNode(XFA_ELEMENT_Edge, pBorder);
|
| - pEdge->SetEnum(XFA_ATTRIBUTE_Stroke, XFA_ATTRIBUTEENUM_Raised, FALSE);
|
| - CXFA_Node* pFill = CreateCopyNode(XFA_ELEMENT_Fill, pBorder);
|
| - CXFA_Node* pColor = CreateCopyNode(XFA_ELEMENT_Color, pFill);
|
| - pColor->SetCData(XFA_ATTRIBUTE_Value, FX_WSTRC(L"212, 208, 200"), FALSE);
|
| - CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField);
|
| - pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateCheckButton(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateExclGroup(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - return CreateFormItem(XFA_ELEMENT_ExclGroup, pParent, pBefore);
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateRadioButton(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore);
|
| - CXFA_Node* pUi = pField->GetFirstChildByClass(XFA_ELEMENT_Ui);
|
| - CXFA_Node* pWidget = pUi->GetFirstChildByClass(XFA_ELEMENT_CheckButton);
|
| - pWidget->SetEnum(XFA_ATTRIBUTE_Shape, XFA_ATTRIBUTEENUM_Round);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateDatetimeEdit(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_DateTimeEdit, pParent, pBefore);
|
| - CreateValueNode(XFA_ELEMENT_Date, pField);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateDecimalField(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateNumericField(pParent, pBefore);
|
| - CreateValueNode(XFA_ELEMENT_Decimal, pField);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateNumericField(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_NumericEdit, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateSignature(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_Signature, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateTextEdit(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_TextEdit, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateDropdownList(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_ChoiceList, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateListBox(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateDropdownList(pParent, pBefore);
|
| - CXFA_Node* pUi = pField->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - CXFA_Node* pListBox = pUi->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - pListBox->SetEnum(XFA_ATTRIBUTE_Open, XFA_ATTRIBUTEENUM_Always);
|
| - pListBox->SetEnum(XFA_ATTRIBUTE_CommitOn, XFA_ATTRIBUTEENUM_Exit);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateImageField(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_ImageEdit, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreatePasswordEdit(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateField(XFA_ELEMENT_PasswordEdit, pParent, pBefore);
|
| - CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField);
|
| - pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None, FALSE);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateField(XFA_ELEMENT eElement,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateFormItem(XFA_ELEMENT_Field, pParent, pBefore);
|
| - CreateCopyNode(eElement, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| - CreateFontNode(pField);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateArc(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - return CreateDraw(XFA_ELEMENT_Arc, pParent, pBefore);
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateRectangle(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - return CreateDraw(XFA_ELEMENT_Rectangle, pParent, pBefore);
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateImage(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Image, pParent, pBefore);
|
| - CreateCopyNode(XFA_ELEMENT_ImageEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateLine(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Line, pParent, pBefore);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateText(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Text, pParent, pBefore);
|
| - CreateCopyNode(XFA_ELEMENT_TextEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| - CreateFontNode(pField);
|
| - return pField;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateDraw(XFA_ELEMENT eElement,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pDraw = CreateFormItem(XFA_ELEMENT_Draw, pParent, pBefore);
|
| - CreateValueNode(eElement, pDraw);
|
| - return pDraw;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateSubform(CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pSubform = CreateFormItem(XFA_ELEMENT_Subform, pParent, pBefore);
|
| - return pSubform;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateFormItem(XFA_ELEMENT eElement,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pTemplateParent =
|
| - pParent != NULL ? pParent->GetTemplateNode() : NULL;
|
| - CXFA_Node* pNewFormItem = pTemplateParent->CloneTemplateToForm(FALSE);
|
| - if (pParent != NULL) {
|
| - pParent->InsertChild(pNewFormItem, pBefore);
|
| - }
|
| - return pNewFormItem;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateCopyNode(XFA_ELEMENT eElement,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Node* pTemplateParent =
|
| - pParent != NULL ? pParent->GetTemplateNode() : NULL;
|
| - CXFA_Node* pNewNode =
|
| - CreateTemplateNode(eElement, pTemplateParent,
|
| - pBefore ? pBefore->GetTemplateNode() : NULL)
|
| - ->Clone(FALSE);
|
| - if (pParent != NULL) {
|
| - pParent->InsertChild(pNewNode, pBefore);
|
| - }
|
| - return pNewNode;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateTemplateNode(XFA_ELEMENT eElement,
|
| - CXFA_Node* pParent,
|
| - CXFA_Node* pBefore) const {
|
| - CXFA_Document* pXFADoc = GetXFADoc();
|
| - CXFA_Node* pNewTemplateNode = pXFADoc->GetParser()->GetFactory()->CreateNode(
|
| - XFA_XDPPACKET_Template, eElement);
|
| - if (pParent != NULL) {
|
| - pParent->InsertChild(pNewTemplateNode, pBefore);
|
| - }
|
| - return pNewTemplateNode;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateFontNode(CXFA_Node* pParent) const {
|
| - CXFA_Node* pFont = CreateCopyNode(XFA_ELEMENT_Font, pParent);
|
| - pFont->SetCData(XFA_ATTRIBUTE_Typeface, FX_WSTRC(L"Myriad Pro"), FALSE);
|
| - return pFont;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateMarginNode(CXFA_Node* pParent,
|
| - FX_DWORD dwFlags,
|
| - FX_FLOAT fInsets[4]) const {
|
| - CXFA_Node* pMargin = CreateCopyNode(XFA_ELEMENT_Margin, pParent);
|
| - if (dwFlags & 0x01) {
|
| - pMargin->SetMeasure(XFA_ATTRIBUTE_LeftInset,
|
| - CXFA_Measurement(fInsets[0], XFA_UNIT_Pt), FALSE);
|
| - }
|
| - if (dwFlags & 0x02) {
|
| - pMargin->SetMeasure(XFA_ATTRIBUTE_TopInset,
|
| - CXFA_Measurement(fInsets[1], XFA_UNIT_Pt), FALSE);
|
| - }
|
| - if (dwFlags & 0x04) {
|
| - pMargin->SetMeasure(XFA_ATTRIBUTE_RightInset,
|
| - CXFA_Measurement(fInsets[2], XFA_UNIT_Pt), FALSE);
|
| - }
|
| - if (dwFlags & 0x08) {
|
| - pMargin->SetMeasure(XFA_ATTRIBUTE_BottomInset,
|
| - CXFA_Measurement(fInsets[3], XFA_UNIT_Pt), FALSE);
|
| - }
|
| - return pMargin;
|
| -}
|
| -CXFA_Node* CXFA_FFWidgetHandler::CreateValueNode(XFA_ELEMENT eValue,
|
| - CXFA_Node* pParent) const {
|
| - CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pParent);
|
| - CreateCopyNode(eValue, pValue);
|
| - return pValue;
|
| -}
|
| -IXFA_ObjFactory* CXFA_FFWidgetHandler::GetObjFactory() const {
|
| - return GetXFADoc()->GetParser()->GetFactory();
|
| -}
|
| -CXFA_Document* CXFA_FFWidgetHandler::GetXFADoc() const {
|
| - return ((CXFA_FFDoc*)(m_pDocView->GetDoc()))->GetXFADoc();
|
| -}
|
| -CXFA_FFMenuHandler::CXFA_FFMenuHandler() {}
|
| -CXFA_FFMenuHandler::~CXFA_FFMenuHandler() {}
|
| -FX_BOOL CXFA_FFMenuHandler::CanCopy(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanCopy();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanCut(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanCut();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanPaste(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanPaste();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanSelectAll(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanSelectAll();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanDelete(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanDelete();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanDeSelect(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanDeSelect();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Copy(IXFA_Widget* hWidget, CFX_WideString& wsText) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Copy(wsText);
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Cut(IXFA_Widget* hWidget, CFX_WideString& wsText) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Cut(wsText);
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Paste(IXFA_Widget* hWidget,
|
| - const CFX_WideString& wsText) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Paste(wsText);
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::SelectAll(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->SelectAll();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Delete(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Delete();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::DeSelect(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->DeSelect();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanUndo(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanUndo();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::CanRedo(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->CanRedo();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Undo(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Undo();
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::Redo(IXFA_Widget* hWidget) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)->Redo();
|
| -}
|
| -#define FX_EDIT_ISLATINWORD(u) \
|
| - (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \
|
| - (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0) || \
|
| - u == 0x0027)
|
| -FX_BOOL CXFA_FFMenuHandler::GetSuggestWords(IXFA_Widget* hWidget,
|
| - CFX_PointF pointf,
|
| - CFX_ByteStringArray& sSuggest) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)
|
| - ->GetSuggestWords(pointf, sSuggest);
|
| -}
|
| -FX_BOOL CXFA_FFMenuHandler::ReplaceSpellCheckWord(
|
| - IXFA_Widget* hWidget,
|
| - CFX_PointF pointf,
|
| - const CFX_ByteStringC& bsReplace) {
|
| - return static_cast<CXFA_FFWidget*>(hWidget)
|
| - ->ReplaceSpellCheckWord(pointf, bsReplace);
|
| -}
|
| +// 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_ffwidgethandler.h"
|
| +#include "xfa_ffwidget.h"
|
| +#include "xfa_fffield.h"
|
| +#include "xfa_ffchoicelist.h"
|
| +#include "xfa_ffdoc.h"
|
| +#include "xfa_ffdocview.h"
|
| +CXFA_FFWidgetHandler::CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView)
|
| + : m_pDocView(pDocView) {}
|
| +CXFA_FFWidgetHandler::~CXFA_FFWidgetHandler() {}
|
| +IXFA_PageView* CXFA_FFWidgetHandler::GetPageView(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->GetPageView();
|
| +}
|
| +void CXFA_FFWidgetHandler::GetRect(IXFA_Widget* hWidget, CFX_RectF& rt) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->GetWidgetRect(rt);
|
| +}
|
| +FX_DWORD CXFA_FFWidgetHandler::GetStatus(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->GetStatus();
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::GetBBox(IXFA_Widget* hWidget,
|
| + CFX_RectF& rtBox,
|
| + FX_DWORD dwStatus,
|
| + FX_BOOL bDrawFocus) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)
|
| + ->GetBBox(rtBox, dwStatus, bDrawFocus);
|
| +}
|
| +CXFA_WidgetAcc* CXFA_FFWidgetHandler::GetDataAcc(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc();
|
| +}
|
| +void CXFA_FFWidgetHandler::GetName(IXFA_Widget* hWidget,
|
| + CFX_WideString& wsName,
|
| + int32_t iNameType) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->GetDataAcc()->GetName(wsName,
|
| + iNameType);
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::GetToolTip(IXFA_Widget* hWidget,
|
| + CFX_WideString& wsToolTip) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->GetToolTip(wsToolTip);
|
| +}
|
| +void CXFA_FFWidgetHandler::SetPrivateData(IXFA_Widget* hWidget,
|
| + void* module_id,
|
| + void* pData,
|
| + PD_CALLBACK_FREEDATA callback) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)
|
| + ->SetPrivateData(module_id, pData, callback);
|
| +}
|
| +void* CXFA_FFWidgetHandler::GetPrivateData(IXFA_Widget* hWidget,
|
| + void* module_id) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->GetPrivateData(module_id);
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnMouseEnter(IXFA_Widget* hWidget) {
|
| + m_pDocView->LockUpdate();
|
| + FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseEnter();
|
| + m_pDocView->UnlockUpdate();
|
| + m_pDocView->UpdateDocView();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnMouseExit(IXFA_Widget* hWidget) {
|
| + m_pDocView->LockUpdate();
|
| + FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnMouseExit();
|
| + m_pDocView->UnlockUpdate();
|
| + m_pDocView->UpdateDocView();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnLButtonDown(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + m_pDocView->LockUpdate();
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDown(dwFlags, fx, fy);
|
| + if (bRet && m_pDocView->SetFocus(hWidget)) {
|
| + ((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| + ->GetDocProvider()
|
| + ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget);
|
| + }
|
| + m_pDocView->UnlockUpdate();
|
| + m_pDocView->UpdateDocView();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnLButtonUp(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + m_pDocView->LockUpdate();
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + m_pDocView->m_bLayoutEvent = TRUE;
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonUp(dwFlags, fx, fy);
|
| + m_pDocView->UnlockUpdate();
|
| + m_pDocView->UpdateDocView();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnLButtonDblClk(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnLButtonDblClk(dwFlags, fx, fy);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnMouseMove(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnMouseMove(dwFlags, fx, fy);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnMouseWheel(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + int16_t zDelta,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)
|
| + ->OnMouseWheel(dwFlags, zDelta, fx, fy);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnRButtonDown(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDown(dwFlags, fx, fy);
|
| + if (bRet && m_pDocView->SetFocus(hWidget)) {
|
| + ((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| + ->GetDocProvider()
|
| + ->SetFocusWidget(m_pDocView->GetDoc(), (IXFA_Widget*)hWidget);
|
| + }
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnRButtonUp(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonUp(dwFlags, fx, fy);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnRButtonDblClk(IXFA_Widget* hWidget,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnRButtonDblClk(dwFlags, fx, fy);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnKeyDown(IXFA_Widget* hWidget,
|
| + FX_DWORD dwKeyCode,
|
| + FX_DWORD dwFlags) {
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnKeyDown(dwKeyCode, dwFlags);
|
| + m_pDocView->RunInvalidate();
|
| + m_pDocView->UpdateDocView();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnKeyUp(IXFA_Widget* hWidget,
|
| + FX_DWORD dwKeyCode,
|
| + FX_DWORD dwFlags) {
|
| + FX_BOOL bRet =
|
| + static_cast<CXFA_FFWidget*>(hWidget)->OnKeyUp(dwKeyCode, dwFlags);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnChar(IXFA_Widget* hWidget,
|
| + FX_DWORD dwChar,
|
| + FX_DWORD dwFlags) {
|
| + FX_BOOL bRet = static_cast<CXFA_FFWidget*>(hWidget)->OnChar(dwChar, dwFlags);
|
| + m_pDocView->RunInvalidate();
|
| + return bRet;
|
| +}
|
| +FX_DWORD CXFA_FFWidgetHandler::OnHitTest(IXFA_Widget* hWidget,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + if (!(static_cast<CXFA_FFWidget*>(hWidget)->GetStatus() &
|
| + XFA_WIDGETSTATUS_Visible)) {
|
| + return FWL_WGTHITTEST_Unknown;
|
| + }
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->OnHitTest(fx, fy);
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::OnSetCursor(IXFA_Widget* hWidget,
|
| + FX_FLOAT fx,
|
| + FX_FLOAT fy) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->Rotate2Normal(fx, fy);
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->OnSetCursor(fx, fy);
|
| +}
|
| +void CXFA_FFWidgetHandler::RenderWidget(IXFA_Widget* hWidget,
|
| + CFX_Graphics* pGS,
|
| + CFX_Matrix* pMatrix,
|
| + FX_BOOL bHighlight) {
|
| + static_cast<CXFA_FFWidget*>(hWidget)->RenderWidget(
|
| + pGS, pMatrix, bHighlight ? XFA_WIDGETSTATUS_Highlight : 0, 0);
|
| +}
|
| +FX_BOOL CXFA_FFWidgetHandler::HasEvent(CXFA_WidgetAcc* pWidgetAcc,
|
| + XFA_EVENTTYPE eEventType) {
|
| + if (!pWidgetAcc || eEventType == XFA_EVENT_Unknown) {
|
| + return FALSE;
|
| + }
|
| + if (pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) {
|
| + return FALSE;
|
| + }
|
| + switch (eEventType) {
|
| + case XFA_EVENT_Calculate: {
|
| + CXFA_Calculate calc = pWidgetAcc->GetCalculate();
|
| + if (!calc) {
|
| + return FALSE;
|
| + }
|
| + if (calc.GetScript()) {
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| + }
|
| + case XFA_EVENT_Validate: {
|
| + CXFA_Validate val = pWidgetAcc->GetValidate();
|
| + if (!val) {
|
| + return FALSE;
|
| + }
|
| + if (val.GetScript()) {
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| + }
|
| + default:
|
| + break;
|
| + }
|
| + CXFA_NodeArray eventArray;
|
| + return pWidgetAcc->GetEventByActivity(gs_EventActivity[eEventType],
|
| + eventArray);
|
| +}
|
| +int32_t CXFA_FFWidgetHandler::ProcessEvent(CXFA_WidgetAcc* pWidgetAcc,
|
| + CXFA_EventParam* pParam) {
|
| + if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) {
|
| + return XFA_EVENTERROR_NotExist;
|
| + }
|
| + if (!pWidgetAcc || pWidgetAcc->GetClassID() == XFA_ELEMENT_Draw) {
|
| + return XFA_EVENTERROR_NotExist;
|
| + }
|
| + switch (pParam->m_eType) {
|
| + case XFA_EVENT_Calculate:
|
| + return pWidgetAcc->ProcessCalculate();
|
| + case XFA_EVENT_Validate:
|
| + if (((CXFA_FFDoc*)m_pDocView->GetDoc())
|
| + ->GetDocProvider()
|
| + ->IsValidationsEnabled(m_pDocView->GetDoc())) {
|
| + return pWidgetAcc->ProcessValidate();
|
| + }
|
| + return XFA_EVENTERROR_Disabled;
|
| + case XFA_EVENT_InitCalculate: {
|
| + CXFA_Calculate calc = pWidgetAcc->GetCalculate();
|
| + if (!calc) {
|
| + return XFA_EVENTERROR_NotExist;
|
| + }
|
| + if (pWidgetAcc->GetNode()->HasFlag(XFA_NODEFLAG_UserInteractive)) {
|
| + return XFA_EVENTERROR_Disabled;
|
| + }
|
| + CXFA_Script script = calc.GetScript();
|
| + return pWidgetAcc->ExecuteScript(script, pParam);
|
| + }
|
| + default:
|
| + break;
|
| + }
|
| + int32_t iRet =
|
| + pWidgetAcc->ProcessEvent(gs_EventActivity[pParam->m_eType], pParam);
|
| + return iRet;
|
| +}
|
| +IXFA_Widget* CXFA_FFWidgetHandler::CreateWidget(IXFA_Widget* hParent,
|
| + XFA_WIDGETTYPE eType,
|
| + IXFA_Widget* hBefore) {
|
| + CXFA_Node* pParentFormItem =
|
| + hParent ? static_cast<CXFA_FFWidget*>(hParent)->GetDataAcc()->GetNode()
|
| + : NULL;
|
| + CXFA_Node* pBeforeFormItem =
|
| + hBefore ? static_cast<CXFA_FFWidget*>(hBefore)->GetDataAcc()->GetNode()
|
| + : NULL;
|
| + CXFA_Node* pNewFormItem =
|
| + CreateWidgetFormItem(eType, pParentFormItem, pBeforeFormItem);
|
| + if (pNewFormItem == NULL) {
|
| + return NULL;
|
| + }
|
| + pNewFormItem->GetTemplateNode()->SetFlag(XFA_NODEFLAG_Initialized);
|
| + pNewFormItem->SetFlag(XFA_NODEFLAG_Initialized);
|
| + m_pDocView->RunLayout();
|
| + CXFA_LayoutItem* pLayout =
|
| + m_pDocView->GetXFALayout()->GetLayoutItem(pNewFormItem);
|
| + return (IXFA_Widget*)pLayout;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateWidgetFormItem(
|
| + XFA_WIDGETTYPE eType,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + switch (eType) {
|
| + case XFA_WIDGETTYPE_Barcode:
|
| + return NULL;
|
| + case XFA_WIDGETTYPE_PushButton:
|
| + return CreatePushButton(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_CheckButton:
|
| + return CreateCheckButton(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_ExcludeGroup:
|
| + return CreateExclGroup(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_RadioButton:
|
| + return CreateRadioButton(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Arc:
|
| + return CreateArc(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Rectangle:
|
| + return CreateRectangle(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Image:
|
| + return CreateImage(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Line:
|
| + return CreateLine(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Text:
|
| + return CreateText(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_DatetimeEdit:
|
| + return CreateDatetimeEdit(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_DecimalField:
|
| + return CreateDecimalField(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_NumericField:
|
| + return CreateNumericField(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Signature:
|
| + return CreateSignature(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_TextEdit:
|
| + return CreateTextEdit(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_DropdownList:
|
| + return CreateDropdownList(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_ListBox:
|
| + return CreateListBox(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_ImageField:
|
| + return CreateImageField(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_PasswordEdit:
|
| + return CreatePasswordEdit(pParent, pBefore);
|
| + case XFA_WIDGETTYPE_Subform:
|
| + return CreateSubform(pParent, pBefore);
|
| + default:
|
| + break;
|
| + }
|
| + return NULL;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreatePushButton(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_Button, pParent, pBefore);
|
| + CXFA_Node* pCaption = CreateCopyNode(XFA_ELEMENT_Caption, pField);
|
| + CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pCaption);
|
| + CXFA_Node* pText = CreateCopyNode(XFA_ELEMENT_Text, pValue);
|
| + pText->SetContent(FX_WSTRC(L"Button"), FX_WSTRC(L"Button"), FALSE);
|
| + CXFA_Node* pPara = CreateCopyNode(XFA_ELEMENT_Para, pCaption);
|
| + pPara->SetEnum(XFA_ATTRIBUTE_VAlign, XFA_ATTRIBUTEENUM_Middle, FALSE);
|
| + pPara->SetEnum(XFA_ATTRIBUTE_HAlign, XFA_ATTRIBUTEENUM_Center, FALSE);
|
| + CreateFontNode(pCaption);
|
| + CXFA_Node* pBorder = CreateCopyNode(XFA_ELEMENT_Border, pField);
|
| + pBorder->SetEnum(XFA_ATTRIBUTE_Hand, XFA_ATTRIBUTEENUM_Right, FALSE);
|
| + CXFA_Node* pEdge = CreateCopyNode(XFA_ELEMENT_Edge, pBorder);
|
| + pEdge->SetEnum(XFA_ATTRIBUTE_Stroke, XFA_ATTRIBUTEENUM_Raised, FALSE);
|
| + CXFA_Node* pFill = CreateCopyNode(XFA_ELEMENT_Fill, pBorder);
|
| + CXFA_Node* pColor = CreateCopyNode(XFA_ELEMENT_Color, pFill);
|
| + pColor->SetCData(XFA_ATTRIBUTE_Value, FX_WSTRC(L"212, 208, 200"), FALSE);
|
| + CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField);
|
| + pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateCheckButton(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateExclGroup(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + return CreateFormItem(XFA_ELEMENT_ExclGroup, pParent, pBefore);
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateRadioButton(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_CheckButton, pParent, pBefore);
|
| + CXFA_Node* pUi = pField->GetFirstChildByClass(XFA_ELEMENT_Ui);
|
| + CXFA_Node* pWidget = pUi->GetFirstChildByClass(XFA_ELEMENT_CheckButton);
|
| + pWidget->SetEnum(XFA_ATTRIBUTE_Shape, XFA_ATTRIBUTEENUM_Round);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateDatetimeEdit(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_DateTimeEdit, pParent, pBefore);
|
| + CreateValueNode(XFA_ELEMENT_Date, pField);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateDecimalField(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateNumericField(pParent, pBefore);
|
| + CreateValueNode(XFA_ELEMENT_Decimal, pField);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateNumericField(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_NumericEdit, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateSignature(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_Signature, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateTextEdit(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_TextEdit, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateDropdownList(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_ChoiceList, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateListBox(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateDropdownList(pParent, pBefore);
|
| + CXFA_Node* pUi = pField->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + CXFA_Node* pListBox = pUi->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + pListBox->SetEnum(XFA_ATTRIBUTE_Open, XFA_ATTRIBUTEENUM_Always);
|
| + pListBox->SetEnum(XFA_ATTRIBUTE_CommitOn, XFA_ATTRIBUTEENUM_Exit);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateImageField(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_ImageEdit, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreatePasswordEdit(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateField(XFA_ELEMENT_PasswordEdit, pParent, pBefore);
|
| + CXFA_Node* pBind = CreateCopyNode(XFA_ELEMENT_Bind, pField);
|
| + pBind->SetEnum(XFA_ATTRIBUTE_Match, XFA_ATTRIBUTEENUM_None, FALSE);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateField(XFA_ELEMENT eElement,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateFormItem(XFA_ELEMENT_Field, pParent, pBefore);
|
| + CreateCopyNode(eElement, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| + CreateFontNode(pField);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateArc(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + return CreateDraw(XFA_ELEMENT_Arc, pParent, pBefore);
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateRectangle(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + return CreateDraw(XFA_ELEMENT_Rectangle, pParent, pBefore);
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateImage(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Image, pParent, pBefore);
|
| + CreateCopyNode(XFA_ELEMENT_ImageEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateLine(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Line, pParent, pBefore);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateText(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pField = CreateDraw(XFA_ELEMENT_Text, pParent, pBefore);
|
| + CreateCopyNode(XFA_ELEMENT_TextEdit, CreateCopyNode(XFA_ELEMENT_Ui, pField));
|
| + CreateFontNode(pField);
|
| + return pField;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateDraw(XFA_ELEMENT eElement,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pDraw = CreateFormItem(XFA_ELEMENT_Draw, pParent, pBefore);
|
| + CreateValueNode(eElement, pDraw);
|
| + return pDraw;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateSubform(CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pSubform = CreateFormItem(XFA_ELEMENT_Subform, pParent, pBefore);
|
| + return pSubform;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateFormItem(XFA_ELEMENT eElement,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pTemplateParent =
|
| + pParent != NULL ? pParent->GetTemplateNode() : NULL;
|
| + CXFA_Node* pNewFormItem = pTemplateParent->CloneTemplateToForm(FALSE);
|
| + if (pParent != NULL) {
|
| + pParent->InsertChild(pNewFormItem, pBefore);
|
| + }
|
| + return pNewFormItem;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateCopyNode(XFA_ELEMENT eElement,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Node* pTemplateParent =
|
| + pParent != NULL ? pParent->GetTemplateNode() : NULL;
|
| + CXFA_Node* pNewNode =
|
| + CreateTemplateNode(eElement, pTemplateParent,
|
| + pBefore ? pBefore->GetTemplateNode() : NULL)
|
| + ->Clone(FALSE);
|
| + if (pParent != NULL) {
|
| + pParent->InsertChild(pNewNode, pBefore);
|
| + }
|
| + return pNewNode;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateTemplateNode(XFA_ELEMENT eElement,
|
| + CXFA_Node* pParent,
|
| + CXFA_Node* pBefore) const {
|
| + CXFA_Document* pXFADoc = GetXFADoc();
|
| + CXFA_Node* pNewTemplateNode = pXFADoc->GetParser()->GetFactory()->CreateNode(
|
| + XFA_XDPPACKET_Template, eElement);
|
| + if (pParent != NULL) {
|
| + pParent->InsertChild(pNewTemplateNode, pBefore);
|
| + }
|
| + return pNewTemplateNode;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateFontNode(CXFA_Node* pParent) const {
|
| + CXFA_Node* pFont = CreateCopyNode(XFA_ELEMENT_Font, pParent);
|
| + pFont->SetCData(XFA_ATTRIBUTE_Typeface, FX_WSTRC(L"Myriad Pro"), FALSE);
|
| + return pFont;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateMarginNode(CXFA_Node* pParent,
|
| + FX_DWORD dwFlags,
|
| + FX_FLOAT fInsets[4]) const {
|
| + CXFA_Node* pMargin = CreateCopyNode(XFA_ELEMENT_Margin, pParent);
|
| + if (dwFlags & 0x01) {
|
| + pMargin->SetMeasure(XFA_ATTRIBUTE_LeftInset,
|
| + CXFA_Measurement(fInsets[0], XFA_UNIT_Pt), FALSE);
|
| + }
|
| + if (dwFlags & 0x02) {
|
| + pMargin->SetMeasure(XFA_ATTRIBUTE_TopInset,
|
| + CXFA_Measurement(fInsets[1], XFA_UNIT_Pt), FALSE);
|
| + }
|
| + if (dwFlags & 0x04) {
|
| + pMargin->SetMeasure(XFA_ATTRIBUTE_RightInset,
|
| + CXFA_Measurement(fInsets[2], XFA_UNIT_Pt), FALSE);
|
| + }
|
| + if (dwFlags & 0x08) {
|
| + pMargin->SetMeasure(XFA_ATTRIBUTE_BottomInset,
|
| + CXFA_Measurement(fInsets[3], XFA_UNIT_Pt), FALSE);
|
| + }
|
| + return pMargin;
|
| +}
|
| +CXFA_Node* CXFA_FFWidgetHandler::CreateValueNode(XFA_ELEMENT eValue,
|
| + CXFA_Node* pParent) const {
|
| + CXFA_Node* pValue = CreateCopyNode(XFA_ELEMENT_Value, pParent);
|
| + CreateCopyNode(eValue, pValue);
|
| + return pValue;
|
| +}
|
| +IXFA_ObjFactory* CXFA_FFWidgetHandler::GetObjFactory() const {
|
| + return GetXFADoc()->GetParser()->GetFactory();
|
| +}
|
| +CXFA_Document* CXFA_FFWidgetHandler::GetXFADoc() const {
|
| + return ((CXFA_FFDoc*)(m_pDocView->GetDoc()))->GetXFADoc();
|
| +}
|
| +CXFA_FFMenuHandler::CXFA_FFMenuHandler() {}
|
| +CXFA_FFMenuHandler::~CXFA_FFMenuHandler() {}
|
| +FX_BOOL CXFA_FFMenuHandler::CanCopy(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanCopy();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanCut(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanCut();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanPaste(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanPaste();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanSelectAll(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanSelectAll();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanDelete(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanDelete();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanDeSelect(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanDeSelect();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Copy(IXFA_Widget* hWidget, CFX_WideString& wsText) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Copy(wsText);
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Cut(IXFA_Widget* hWidget, CFX_WideString& wsText) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Cut(wsText);
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Paste(IXFA_Widget* hWidget,
|
| + const CFX_WideString& wsText) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Paste(wsText);
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::SelectAll(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->SelectAll();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Delete(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Delete();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::DeSelect(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->DeSelect();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanUndo(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanUndo();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::CanRedo(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->CanRedo();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Undo(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Undo();
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::Redo(IXFA_Widget* hWidget) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)->Redo();
|
| +}
|
| +#define FX_EDIT_ISLATINWORD(u) \
|
| + (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \
|
| + (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0) || \
|
| + u == 0x0027)
|
| +FX_BOOL CXFA_FFMenuHandler::GetSuggestWords(IXFA_Widget* hWidget,
|
| + CFX_PointF pointf,
|
| + CFX_ByteStringArray& sSuggest) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)
|
| + ->GetSuggestWords(pointf, sSuggest);
|
| +}
|
| +FX_BOOL CXFA_FFMenuHandler::ReplaceSpellCheckWord(
|
| + IXFA_Widget* hWidget,
|
| + CFX_PointF pointf,
|
| + const CFX_ByteStringC& bsReplace) {
|
| + return static_cast<CXFA_FFWidget*>(hWidget)
|
| + ->ReplaceSpellCheckWord(pointf, bsReplace);
|
| +}
|
|
|