void CXFA_ResolveProcessor::XFA_ResolveNode_DoPredicateFilter( int32_t iCurIndex, CFX_WideString wsCondition, int32_t iFoundCount, CXFA_ResolveNodesData& rnd) { CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; FXSYS_assert(iFoundCount == findNodes.GetSize()); CFX_WideString wsExpression; IXFA_ScriptContext* pContext = NULL; XFA_SCRIPTLANGTYPE eLangType = XFA_SCRIPTLANGTYPE_Unkown; if (wsCondition.Left(2) == FX_WSTRC(L".[") && wsCondition.Right(1) == FX_WSTRC(L"]")) { eLangType = XFA_SCRIPTLANGTYPE_Formcalc; } else if (wsCondition.Left(2) == FX_WSTRC(L".(") && wsCondition.Right(1) == FX_WSTRC(L")")) { eLangType = XFA_SCRIPTLANGTYPE_Javascript; } else { return; } pContext = rnd.m_pSC; wsExpression = wsCondition.Mid(2, wsCondition.GetLength() - 3); for (int32_t i = iFoundCount - 1; i >= 0; i--) { CXFA_Object* node = findNodes[i]; FX_BOOL bRet = FALSE; FXJSE_HVALUE pRetValue = FXJSE_Value_Create(rnd.m_pSC->GetRuntime()); bRet = pContext->RunScript(eLangType, wsExpression, pRetValue, node); if (!bRet || !FXJSE_Value_ToBoolean(pRetValue)) { findNodes.RemoveAt(i); } FXJSE_Value_Release(pRetValue); } }
FX_BOOL CFWL_NoteDriver::DoDeactivate(CFWL_MsgDeactivate* pMsg, IFWL_Widget* pMessageForm) { if (m_bFullScreen) { return FALSE; } int32_t iTrackLoop = m_noteLoopQueue.GetSize(); if (iTrackLoop <= 0) return FALSE; if (iTrackLoop == 1) { if (pMessageForm->IsInstance(FX_WSTRC(L"FWL_FORMPROXY"))) { return FALSE; } if (pMsg->m_pSrcTarget && pMsg->m_pSrcTarget->IsInstance(FX_WSTRC(L"FWL_FORMPROXY"))) { return FALSE; } if (pMsg->m_pSrcTarget && pMsg->m_pSrcTarget->GetClassID() == 1111984755) { return FALSE; } return TRUE; } IFWL_Widget* pDst = pMsg->m_pDstTarget; if (!pDst) return FALSE; #if (_FX_OS_ == _FX_MACOSX_) if (pDst == pMessageForm && pDst->IsInstance(L"FWL_FORMPROXY")) { return TRUE; } #endif return pDst != pMessageForm && !pDst->IsInstance(FX_WSTRC(L"FWL_FORMPROXY")) && !pMessageForm->IsInstance(FX_WSTRC(L"FWL_FORMPROXY")); }
void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) { switch (m_op) { case TOKlt: case TOKkslt: javascript << gs_lpStrExpFuncName[LESS]; break; case TOKgt: case TOKksgt: javascript << gs_lpStrExpFuncName[GREATER]; break; case TOKle: case TOKksle: javascript << gs_lpStrExpFuncName[LESSEQUAL]; break; case TOKge: case TOKksge: javascript << gs_lpStrExpFuncName[GREATEREQUAL]; break; default: ASSERT(FALSE); break; } javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
void CXFA_FMStringExpression::ToJavaScript(CFX_WideTextBuf& javascript) { CFX_WideString tempStr(m_wsString); if (tempStr.GetLength() > 2) { javascript.AppendChar(L'\"'); FX_WCHAR oneChar; for (int16_t i = 1; i < tempStr.GetLength() - 1; i++) { oneChar = tempStr[i]; switch (oneChar) { case L'\"': { i++; javascript << FX_WSTRC(L"\\\""); } break; case 0x0d: break; case 0x0a: { javascript << FX_WSTRC(L"\\n"); } break; default: { javascript.AppendChar(oneChar); } break; } } javascript.AppendChar(L'\"'); } else { javascript << tempStr; } }
FX_BOOL CXFA_FFConfigAcc::GetFontInfo(int32_t index, CFX_WideString& wsFontFamily, CFX_WideString& wsPsName, FX_BOOL bBold, FX_BOOL bItalic) { if (index < 0 || index >= CountChildren()) { return FALSE; } CXFA_Node* pFontNode = m_pPsMapNode->GetChild(index, XFA_ELEMENT_Font); if (pFontNode == NULL) { return FALSE; } wsFontFamily.Empty(); wsPsName.Empty(); bBold = FALSE; bItalic = FALSE; pFontNode->GetAttribute(XFA_ATTRIBUTE_Typeface, wsFontFamily); pFontNode->GetAttribute(XFA_ATTRIBUTE_PsName, wsPsName); CFX_WideString wsValue; pFontNode->GetAttribute(XFA_ATTRIBUTE_Weight, wsValue); wsValue.MakeLower(); if (wsValue == FX_WSTRC(L"bold")) { bBold = TRUE; } pFontNode->GetAttribute(XFA_ATTRIBUTE_Posture, wsValue); wsValue.MakeLower(); if (wsValue == FX_WSTRC(L"italic")) { bItalic = TRUE; } return wsFontFamily.GetLength() > 0; }
void CXFA_FFDocView::ShowNullTestMsg() { int32_t iCount = m_arrNullTestMsg.GetSize(); CXFA_FFApp* pApp = m_pDoc->GetApp(); IXFA_AppProvider* pAppProvider = pApp->GetAppProvider(); if (pAppProvider && iCount) { int32_t iRemain = iCount > 7 ? iCount - 7 : 0; iCount -= iRemain; CFX_WideString wsMsg; for (int32_t i = 0; i < iCount; i++) { wsMsg += m_arrNullTestMsg[i] + FX_WSTRC(L"\n"); } if (iRemain > 0) { CFX_WideString wsLimit; pAppProvider->LoadString(XFA_IDS_ValidateLimit, wsLimit); if (!wsLimit.IsEmpty()) { CFX_WideString wsTemp; wsTemp.Format((const FX_WCHAR*)wsLimit, iRemain); wsMsg += FX_WSTRC(L"\n") + wsTemp; } } CFX_WideString wsTitle; pAppProvider->LoadString(XFA_IDS_AppName, wsTitle); pAppProvider->MsgBox(wsMsg, wsTitle, XFA_MBICON_Status, XFA_MB_OK); } m_arrNullTestMsg.RemoveAll(); }
void CXFA_FMWhileExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << RUNTIMEFUNCTIONRETURNVALUE; javascript << FX_WSTRC(L" = 0;\n"); javascript << FX_WSTRC(L"while ("); m_pCondition->ToJavaScript(javascript); javascript << FX_WSTRC(L")\n"); m_pExpression->ToImpliedReturnJS(javascript); }
void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << gs_lpStrExpFuncName[LOGICALAND]; javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString &wsMode) { if (dwModes & FX_FILEMODE_ReadOnly) { wsMode = FX_WSTRC(L"rb"); } else if (dwModes & FX_FILEMODE_Truncate) { wsMode = FX_WSTRC(L"w+b"); } else { wsMode = FX_WSTRC(L"a+b"); } }
void CXFA_FMIfExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << RUNTIMEFUNCTIONRETURNVALUE; javascript << FX_WSTRC(L" = 0;\n"); javascript << FX_WSTRC(L"if ("); if (m_pExpression) { javascript << XFA_FM_EXPTypeToString(GETFMVALUE); javascript << FX_WSTRC(L"("); m_pExpression->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); } javascript << FX_WSTRC(L")\n"); if (m_pIfExpression) { m_pIfExpression->ToImpliedReturnJS(javascript); } if (m_pElseExpression) { if (m_pElseExpression->GetExpType() == XFA_FM_EXPTYPE_IF) { javascript << FX_WSTRC(L"else\n"); javascript << FX_WSTRC(L"{\n"); m_pElseExpression->ToImpliedReturnJS(javascript); javascript << FX_WSTRC(L"}\n"); } else { javascript << FX_WSTRC(L"else\n"); m_pElseExpression->ToImpliedReturnJS(javascript); } } }
void CXFA_FMBlockExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << FX_WSTRC(L"{\n"); if (m_pExpressionList) { for (int i = 0; i < m_pExpressionList->GetSize(); ++i) { CXFA_FMExpression* e = reinterpret_cast<CXFA_FMExpression*>(m_pExpressionList->GetAt(i)); e->ToJavaScript(javascript); } } javascript << FX_WSTRC(L"}\n"); }
void CXFA_FMBlockExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << FX_WSTRC(L"{\n"); if (m_pExpressionList) { int32_t expc = m_pExpressionList->GetSize(); int32_t index = 0; CXFA_FMExpression* e = 0; while (index < expc) { e = (CXFA_FMExpression*)m_pExpressionList->GetAt(index); e->ToJavaScript(javascript); index++; } } javascript << FX_WSTRC(L"}\n"); }
FX_BOOL CScript_HostPseudoModel::Script_HostPseudoModel_ValidateArgsForMsg( CFXJSE_Arguments* pArguments, int32_t iArgIndex, CFX_WideString& wsValue) { if (pArguments == NULL || iArgIndex < 0) { return FALSE; } FX_BOOL bIsJsType = FALSE; if (m_pDocument->GetScriptContext()->GetType() == XFA_SCRIPTLANGTYPE_Javascript) { bIsJsType = TRUE; } FXJSE_HVALUE hValueArg = pArguments->GetValue(iArgIndex); if (!FXJSE_Value_IsUTF8String(hValueArg) && bIsJsType) { ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); FXJSE_Value_Release(hValueArg); return FALSE; } if (FXJSE_Value_IsNull(hValueArg)) { wsValue = FX_WSTRC(L""); } else { CFX_ByteString byMessage; FXJSE_Value_ToUTF8String(hValueArg, byMessage); wsValue = CFX_WideString::FromUTF8(byMessage, byMessage.GetLength()); } FXJSE_Value_Release(hValueArg); return TRUE; }
CXFA_Node* XFA_DataDescription_MaybeCreateDataNode( CXFA_Document* pDocument, CXFA_Node* pDataParent, XFA_Element eNodeType, const CFX_WideString& wsName) { if (!pDataParent) { return nullptr; } CXFA_Node* pParentDDNode = pDataParent->GetDataDescriptionNode(); if (!pParentDDNode) { CXFA_Node* pDataNode = pDocument->CreateNode(XFA_XDPPACKET_Datasets, eNodeType); ASSERT(pDataNode); pDataNode->SetCData(XFA_ATTRIBUTE_Name, wsName); pDataNode->CreateXMLMappingNode(); pDataParent->InsertChild(pDataNode); pDataNode->SetFlag(XFA_NodeFlag_Initialized, false); return pDataNode; } else { CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_DDGroup> sIterator(pParentDDNode); for (CXFA_Node* pDDGroupNode = sIterator.GetCurrent(); pDDGroupNode; pDDGroupNode = sIterator.MoveToNext()) { if (pDDGroupNode != pParentDDNode) { if (pDDGroupNode->GetElementType() != XFA_Element::DataGroup) { continue; } CFX_WideString wsNamespace; if (!pDDGroupNode->TryNamespace(wsNamespace) || wsNamespace != FX_WSTRC(L"http://ns.adobe.com/data-description/")) { continue; } } CXFA_Node* pDDNode = pDDGroupNode->GetFirstChildByName(wsName.AsStringC()); if (!pDDNode) { continue; } if (pDDNode->GetElementType() != eNodeType) { break; } CXFA_Node* pDataNode = pDocument->CreateNode(XFA_XDPPACKET_Datasets, eNodeType); ASSERT(pDataNode); pDataNode->SetCData(XFA_ATTRIBUTE_Name, wsName); pDataNode->CreateXMLMappingNode(); if (eNodeType == XFA_Element::DataValue && pDDNode->GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData) { pDataNode->SetEnum(XFA_ATTRIBUTE_Contains, XFA_ATTRIBUTEENUM_MetaData); } pDataParent->InsertChild(pDataNode); pDataNode->SetDataDescriptionNode(pDDNode); pDataNode->SetFlag(XFA_NodeFlag_Initialized, false); return pDataNode; } return nullptr; } }
void CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& javascript) { if (m_pExpression->GetOperatorToken() == TOKassign) { m_pExpression->ToJavaScript(javascript); } else { m_pExpression->ToJavaScript(javascript); javascript << FX_WSTRC(L";\n"); } }
void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) { switch (m_accessorIndex) { case ACCESSOR_NO_INDEX: javascript << FX_WSTRC(L"0"); break; case ACCESSOR_NO_RELATIVEINDEX: javascript << FX_WSTRC(L"1"); break; case ACCESSOR_POSITIVE_INDEX: javascript << FX_WSTRC(L"2"); break; case ACCESSOR_NEGATIVE_INDEX: javascript << FX_WSTRC(L"3"); break; default: javascript << FX_WSTRC(L"0"); } if (!m_bIsStarIndex) { javascript << FX_WSTRC(L", "); if (m_pExp) { m_pExp->ToJavaScript(javascript); } else { javascript << FX_WSTRC(L"0"); } } }
void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) { switch (m_op) { case TOKplus: javascript << gs_lpStrExpFuncName[PLUS]; break; case TOKminus: javascript << gs_lpStrExpFuncName[MINUS]; break; default: ASSERT(FALSE); break; } javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
void CXFA_FMMultiplicativeExpression::ToJavaScript( CFX_WideTextBuf& javascript) { switch (m_op) { case TOKmul: javascript << gs_lpStrExpFuncName[MULTIPLE]; break; case TOKdiv: javascript << gs_lpStrExpFuncName[DIVIDE]; break; default: ASSERT(FALSE); break; } javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, CXFA_WidgetAcc* pWidgetAcc) { if (pParam == NULL) { return XFA_EVENTERROR_Error; } if (pParam->m_eType == XFA_EVENT_Validate) { CFX_WideString wsValidateStr = FX_WSTRC(L"preSubmit"); CXFA_Node* pConfigItem = ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Config)); if (pConfigItem) { CXFA_Node* pValidateNode = NULL; CXFA_Node* pAcrobatNode = pConfigItem->GetChild(0, XFA_ELEMENT_Acrobat); pValidateNode = pAcrobatNode ? pAcrobatNode->GetChild(0, XFA_ELEMENT_Validate) : NULL; if (!pValidateNode) { CXFA_Node* pPresentNode = pConfigItem->GetChild(0, XFA_ELEMENT_Present); pValidateNode = pPresentNode ? pPresentNode->GetChild(0, XFA_ELEMENT_Validate) : NULL; } if (pValidateNode) { wsValidateStr = pValidateNode->GetContent(); } } FX_BOOL bValidate = FALSE; switch (pParam->m_iValidateActivities) { case XFA_VALIDATE_preSubmit: bValidate = wsValidateStr.Find(L"preSubmit") != -1; break; case XFA_VALIDATE_prePrint: bValidate = wsValidateStr.Find(L"prePrint") != -1; break; case XFA_VALIDATE_preExecute: bValidate = wsValidateStr.Find(L"preExecute") != -1; break; case XFA_VALIDATE_preSave: bValidate = wsValidateStr.Find(L"preSave") != -1; break; } if (!bValidate) { return XFA_EVENTERROR_Sucess; } } CXFA_Node* pNode = pWidgetAcc ? pWidgetAcc->GetNode() : NULL; if (!pNode) { CXFA_Node* pRootItem = ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form)); if (!pRootItem) { return XFA_EVENTERROR_Error; } pNode = pRootItem->GetChild(0, XFA_ELEMENT_Subform); } ExecEventActivityByDeepFirst(pNode, pParam->m_eType, pParam->m_bIsFormReady); return XFA_EVENTERROR_Sucess; }
FX_DWORD XFA_GetRelevant(CXFA_Node* pFormItem, FX_DWORD dwParentRelvant) { FX_DWORD dwRelevant = XFA_LAYOUTSTATUS_Viewable | XFA_LAYOUTSTATUS_Printable; CFX_WideStringC wsRelevant; if (pFormItem->TryCData(XFA_ATTRIBUTE_Relevant, wsRelevant)) { if (wsRelevant == FX_WSTRC(L"+print") || wsRelevant == FX_WSTRC(L"print")) { dwRelevant &= ~XFA_LAYOUTSTATUS_Viewable; } else if (wsRelevant == FX_WSTRC(L"-print")) { dwRelevant &= ~XFA_LAYOUTSTATUS_Printable; } } if (!(dwParentRelvant & XFA_LAYOUTSTATUS_Viewable) && (dwRelevant != XFA_LAYOUTSTATUS_Viewable)) { dwRelevant &= ~XFA_LAYOUTSTATUS_Viewable; } if (!(dwParentRelvant & XFA_LAYOUTSTATUS_Printable) && (dwRelevant != XFA_LAYOUTSTATUS_Printable)) { dwRelevant &= ~XFA_LAYOUTSTATUS_Printable; } return dwRelevant; }
void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) { switch (m_op) { case TOKeq: case TOKkseq: javascript << gs_lpStrExpFuncName[EQUALITY]; break; case TOKne: case TOKksne: javascript << gs_lpStrExpFuncName[NOTEQUALITY]; break; default: ASSERT(FALSE); break; } javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
FX_BOOL CFWL_WidgetMgr::IsAbleNative(IFWL_Widget* pWidget) const { if (!pWidget) return FALSE; if (!pWidget->IsInstance(FX_WSTRC(FWL_CLASS_Form))) { return FALSE; } uint32_t dwStyles = pWidget->GetStyles(); return ((dwStyles & FWL_WGTSTYLE_WindowTypeMask) == FWL_WGTSTYLE_OverLapper) || (dwStyles & FWL_WGTSTYLE_Popup); }
FX_ERR CFWL_WidgetTP::InitTTO() { if (m_pTextOut) { return FWL_ERR_Succeeded; } m_pFDEFont = CFWL_FontManager::GetInstance()->FindFont(FX_WSTRC(L"Helvetica"), 0, 0); m_pTextOut = IFDE_TextOut::Create(); m_pTextOut->SetFont(m_pFDEFont); m_pTextOut->SetFontSize(FWLTHEME_CAPACITY_FontSize); m_pTextOut->SetTextColor(FWLTHEME_CAPACITY_TextColor); m_pTextOut->SetEllipsisString(L"..."); return FWL_ERR_Succeeded; }
FWL_Error CFWL_WidgetTP::InitTTO() { if (m_pTextOut) return FWL_Error::Succeeded; m_pFDEFont = CFWL_FontManager::GetInstance()->FindFont(FX_WSTRC(L"Helvetica"), 0, 0); m_pTextOut.reset(new CFDE_TextOut); m_pTextOut->SetFont(m_pFDEFont); m_pTextOut->SetFontSize(FWLTHEME_CAPACITY_FontSize); m_pTextOut->SetTextColor(FWLTHEME_CAPACITY_TextColor); m_pTextOut->SetEllipsisString(L"..."); return FWL_Error::Succeeded; }
FX_BOOL CXFA_NodeHelper::XFA_CreateNode_ForCondition( CFX_WideString& wsCondition) { int32_t iLen = wsCondition.GetLength(); CFX_WideString wsIndex = FX_WSTRC(L"0"); ; FX_BOOL bAll = FALSE; if (iLen == 0) { m_iCreateFlag = XFA_RESOLVENODE_RSTYPE_CreateNodeOne; return FALSE; } if (wsCondition.GetAt(0) == '[') { int32_t i = 1; for (; i < iLen; ++i) { FX_WCHAR ch = wsCondition[i]; if (ch == ' ') { continue; } if (ch == '+' || ch == '-') { break; } else if (ch == '*') { bAll = TRUE; break; } else { break; } } if (bAll) { wsIndex = FX_WSTRC(L"1"); m_iCreateFlag = XFA_RESOLVENODE_RSTYPE_CreateNodeAll; } else { m_iCreateFlag = XFA_RESOLVENODE_RSTYPE_CreateNodeOne; wsIndex = wsCondition.Mid(i, iLen - 1 - i); } int32_t iIndex = wsIndex.GetInteger(); m_iCreateCount = iIndex; return TRUE; } return FALSE; }
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; }
void CXFA_FMExpExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { if (m_pExpression->GetOperatorToken() == TOKassign) { m_pExpression->ToImpliedReturnJS(javascript); } else { if (m_pExpression->GetOperatorToken() == TOKstar || m_pExpression->GetOperatorToken() == TOKdotstar || m_pExpression->GetOperatorToken() == TOKdotscream || m_pExpression->GetOperatorToken() == TOKdotdot || m_pExpression->GetOperatorToken() == TOKdot) { javascript << RUNTIMEFUNCTIONRETURNVALUE; javascript << FX_WSTRC(L" = "); javascript << XFA_FM_EXPTypeToString(GETFMVALUE); javascript << FX_WSTRC(L"("); m_pExpression->ToJavaScript(javascript); javascript << FX_WSTRC(L");\n"); } else { javascript << RUNTIMEFUNCTIONRETURNVALUE; javascript << FX_WSTRC(L" = "); m_pExpression->ToJavaScript(javascript); javascript << FX_WSTRC(L";\n"); } } }
void CXFA_ScriptContext::NormalPropertyGetter(CFXJSE_Value* pOriginalValue, const CFX_ByteStringC& szPropName, CFXJSE_Value* pReturnValue) { CXFA_Object* pOriginalObject = ToObject(pOriginalValue, nullptr); if (!pOriginalObject) { pReturnValue->SetUndefined(); return; } CFX_WideString wsPropName = CFX_WideString::FromUTF8(szPropName); CXFA_ScriptContext* lpScriptContext = pOriginalObject->GetDocument()->GetScriptContext(); CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOriginalObject); if (wsPropName == FX_WSTRC(L"xfa")) { CFXJSE_Value* pValue = lpScriptContext->GetJSValueFromMap( lpScriptContext->GetDocument()->GetRoot()); pReturnValue->Assign(pValue); return; } uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Attributes; FX_BOOL bRet = lpScriptContext->QueryNodeByFlag( ToNode(pObject), wsPropName.AsStringC(), pReturnValue, dwFlag, FALSE); if (bRet) { return; } if (pObject == lpScriptContext->GetThisObject() || (lpScriptContext->GetType() == XFA_SCRIPTLANGTYPE_Javascript && !lpScriptContext->IsStrictScopeInJavaScript())) { dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; bRet = lpScriptContext->QueryNodeByFlag( ToNode(pObject), wsPropName.AsStringC(), pReturnValue, dwFlag, FALSE); } if (bRet) { return; } CXFA_Object* pScriptObject = lpScriptContext->GetVariablesThis(pOriginalObject, TRUE); if (pScriptObject) { bRet = lpScriptContext->QueryVariableValue(ToNode(pScriptObject), szPropName, pReturnValue, TRUE); } if (!bRet) { pReturnValue->SetUndefined(); } }
void CXFA_FMDotDotAccessorExpression::ToJavaScript( CFX_WideTextBuf& javascript) { javascript << gs_lpStrExpFuncName[DOTDOT]; javascript << FX_WSTRC(L"("); m_pExp1->ToJavaScript(javascript); javascript << FX_WSTRC(L", "); javascript << FX_WSTRC(L"\""); if (m_pExp1 && m_pExp1->GetOperatorToken() == TOKidentifier) { m_pExp1->ToJavaScript(javascript); } javascript << FX_WSTRC(L"\", "); javascript << FX_WSTRC(L"\""); javascript << m_wsIdentifier; javascript << FX_WSTRC(L"\", "); m_pExp2->ToJavaScript(javascript); javascript << FX_WSTRC(L")"); }
int32_t CXFA_FMProgram::ParseProgram() { CFX_PtrArray* expressions = 0; m_parse.NextToken(); if (!m_pErrorInfo.message.IsEmpty()) { return -1; } expressions = m_parse.ParseTopExpression(); if (!m_pErrorInfo.message.IsEmpty()) { CXFA_FMExpression* e = 0; for (int32_t u = 0; u < expressions->GetSize(); ++u) { e = (CXFA_FMExpression*)expressions->GetAt(u); if (e) { delete e; } } delete expressions; return -1; } m_globalFunction = new CXFA_FMFunctionDefinition(1, 1, FX_WSTRC(L""), 0, expressions); return 0; }