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 CXFA_LocaleValue::ValidateCanonicalDateTime( const CFX_WideString& wsDateTime) { CFX_WideString wsDate, wsTime; if (wsDateTime.IsEmpty()) { return FALSE; } int nSplitIndex = -1; nSplitIndex = wsDateTime.Find('T'); if (nSplitIndex < 0) { nSplitIndex = wsDateTime.Find(' '); } if (nSplitIndex < 0) { return FALSE; } wsDate = wsDateTime.Left(nSplitIndex); wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1); CFX_Unitime dt; return ValidateCanonicalDate(wsDate, dt) && ValidateCanonicalTime(wsTime); }
static FX_BOOL XFA_ValueSplitDateTime(const CFX_WideString& wsDateTime, CFX_WideString& wsDate, CFX_WideString& wsTime) { wsDate = L""; wsTime = L""; if (wsDateTime.IsEmpty()) { return FALSE; } int nSplitIndex = -1; nSplitIndex = wsDateTime.Find('T'); if (nSplitIndex < 0) { nSplitIndex = wsDateTime.Find(' '); } if (nSplitIndex < 0) { return FALSE; } wsDate = wsDateTime.Left(nSplitIndex); wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1); return TRUE; }
DLLEXPORT int STDCALL FPDFText_GetText(FPDF_TEXTPAGE text_page, int start, int count, unsigned short* result) { if (!text_page) return 0; CPDF_TextPage* textpage = CPDFTextPageFromFPDFTextPage(text_page); if (start >= textpage->CountChars()) return 0; CFX_WideString str = textpage->GetPageText(start, count); if (str.GetLength() > count) str = str.Left(count); CFX_ByteString cbUTF16str = str.UTF16LE_Encode(); FXSYS_memcpy(result, cbUTF16str.GetBuffer(cbUTF16str.GetLength()), cbUTF16str.GetLength()); cbUTF16str.ReleaseBuffer(cbUTF16str.GetLength()); return cbUTF16str.GetLength() / sizeof(unsigned short); }
bool CPDFXFA_DocEnvironment::MailToInfo(CFX_WideString& csURL, CFX_WideString& csToAddress, CFX_WideString& csCCAddress, CFX_WideString& csBCCAddress, CFX_WideString& csSubject, CFX_WideString& csMsg) { CFX_WideString srcURL = csURL; srcURL.TrimLeft(); if (srcURL.Left(7).CompareNoCase(L"mailto:") != 0) return false; int pos = srcURL.Find(L'?', 0); CFX_WideString tmp; if (pos == -1) { pos = srcURL.Find(L'@', 0); if (pos == -1) return false; tmp = srcURL.Right(csURL.GetLength() - 7); } else { tmp = srcURL.Left(pos); tmp = tmp.Right(tmp.GetLength() - 7); } tmp.TrimLeft(); tmp.TrimRight(); csToAddress = tmp; srcURL = srcURL.Right(srcURL.GetLength() - (pos + 1)); while (!srcURL.IsEmpty()) { srcURL.TrimLeft(); srcURL.TrimRight(); pos = srcURL.Find(L'&', 0); tmp = (pos == -1) ? srcURL : srcURL.Left(pos); tmp.TrimLeft(); tmp.TrimRight(); if (tmp.GetLength() >= 3 && tmp.Left(3).CompareNoCase(L"cc=") == 0) { tmp = tmp.Right(tmp.GetLength() - 3); if (!csCCAddress.IsEmpty()) csCCAddress += L';'; csCCAddress += tmp; } else if (tmp.GetLength() >= 4 && tmp.Left(4).CompareNoCase(L"bcc=") == 0) { tmp = tmp.Right(tmp.GetLength() - 4); if (!csBCCAddress.IsEmpty()) csBCCAddress += L';'; csBCCAddress += tmp; } else if (tmp.GetLength() >= 8 && tmp.Left(8).CompareNoCase(L"subject=") == 0) { tmp = tmp.Right(tmp.GetLength() - 8); csSubject += tmp; } else if (tmp.GetLength() >= 5 && tmp.Left(5).CompareNoCase(L"body=") == 0) { tmp = tmp.Right(tmp.GetLength() - 5); csMsg += tmp; } srcURL = (pos == -1) ? L"" : srcURL.Right(csURL.GetLength() - (pos + 1)); } csToAddress.Replace(L",", L";"); csCCAddress.Replace(L",", L";"); csBCCAddress.Replace(L",", L";"); return true; }