FX_BOOL CXFA_ScriptContext::RunVariablesScript(CXFA_Node* pScriptNode) { if (!pScriptNode) return FALSE; if (pScriptNode->GetElementType() != XFA_Element::Script) return TRUE; CXFA_Node* pParent = pScriptNode->GetNodeItem(XFA_NODEITEM_Parent); if (!pParent || pParent->GetElementType() != XFA_Element::Variables) return FALSE; if (m_mapVariableToContext.GetValueAt(pScriptNode)) return TRUE; CXFA_Node* pTextNode = pScriptNode->GetNodeItem(XFA_NODEITEM_FirstChild); if (!pTextNode) return FALSE; CFX_WideStringC wsScript; if (!pTextNode->TryCData(XFA_ATTRIBUTE_Value, wsScript)) return FALSE; CFX_ByteString btScript = FX_UTF8Encode(wsScript.c_str(), wsScript.GetLength()); std::unique_ptr<CFXJSE_Value> hRetValue(new CFXJSE_Value(m_pIsolate)); CXFA_Node* pThisObject = pParent->GetNodeItem(XFA_NODEITEM_Parent); CFXJSE_Context* pVariablesContext = CreateVariablesContext(pScriptNode, pThisObject); CXFA_Object* pOriginalObject = m_pThisObject; m_pThisObject = pThisObject; FX_BOOL bRet = pVariablesContext->ExecuteScript(btScript.c_str(), hRetValue.get()); m_pThisObject = pOriginalObject; return bRet; }
bool CFX_WideString::Equal(const CFX_WideStringC& str) const { if (m_pData == NULL) { return str.IsEmpty(); } return str.GetLength() == m_pData->m_nDataLength && wmemcmp(str.GetPtr(), m_pData->m_String, m_pData->m_nDataLength) == 0; }
void CBC_OneDimWriter::RenderDeviceResult(CFX_RenderDevice* device, const CFX_Matrix* matrix, const CFX_WideStringC& contents, int32_t& e) { if (!m_output) BC_EXCEPTION_CHECK_ReturnVoid(e); CFX_GraphStateData stateData; CFX_PathData path; path.AppendRect(0, 0, (FX_FLOAT)m_Width, (FX_FLOAT)m_Height); device->DrawPath(&path, matrix, &stateData, m_backgroundColor, m_backgroundColor, FXFILL_ALTERNATE); CFX_Matrix matri(m_outputHScale, 0.0, 0.0, (FX_FLOAT)m_Height, 0.0, 0.0); matri.Concat(*matrix); for (int32_t x = 0; x < m_output->GetWidth(); x++) { for (int32_t y = 0; y < m_output->GetHeight(); y++) { CFX_PathData rect; rect.AppendRect((FX_FLOAT)x, (FX_FLOAT)y, (FX_FLOAT)(x + 1), (FX_FLOAT)(y + 1)); if (m_output->Get(x, y)) { CFX_GraphStateData data; device->DrawPath(&rect, &matri, &data, m_barColor, 0, FXFILL_WINDING); } } } int32_t i = 0; for (; i < contents.GetLength(); i++) if (contents.GetAt(i) != ' ') { break; } if (m_locTextLoc != BC_TEXT_LOC_NONE && i < contents.GetLength()) { ShowChars(contents, nullptr, device, matrix, m_barWidth, m_multiple, e); BC_EXCEPTION_CHECK_ReturnVoid(e); } }
FX_BOOL CXFA_ScriptContext::RunScript(XFA_SCRIPTLANGTYPE eScriptType, const CFX_WideStringC& wsScript, CFXJSE_Value* hRetValue, CXFA_Object* pThisObject) { CFX_ByteString btScript; XFA_SCRIPTLANGTYPE eSaveType = m_eScriptType; m_eScriptType = eScriptType; if (eScriptType == XFA_SCRIPTLANGTYPE_Formcalc) { if (!m_FM2JSContext) { m_FM2JSContext.reset( new CXFA_FM2JSContext(m_pIsolate, m_JsContext.get(), m_pDocument)); } CFX_WideTextBuf wsJavaScript; CFX_WideString wsErrorInfo; int32_t iFlags = CXFA_FM2JSContext::Translate(wsScript, wsJavaScript, wsErrorInfo); if (iFlags) { hRetValue->SetUndefined(); return FALSE; } btScript = FX_UTF8Encode(wsJavaScript.GetBuffer(), wsJavaScript.GetLength()); } else { btScript = FX_UTF8Encode(wsScript.c_str(), wsScript.GetLength()); } CXFA_Object* pOriginalObject = m_pThisObject; m_pThisObject = pThisObject; CFXJSE_Value* pValue = pThisObject ? GetJSValueFromMap(pThisObject) : nullptr; FX_BOOL bRet = m_JsContext->ExecuteScript(btScript.c_str(), hRetValue, pValue); m_pThisObject = pOriginalObject; m_eScriptType = eSaveType; return bRet; }
void CBC_OneDimWriter::RenderBitmapResult(CFX_DIBitmap*& pOutBitmap, const CFX_WideStringC& contents, int32_t& e) { if (!m_output) BC_EXCEPTION_CHECK_ReturnVoid(e); pOutBitmap = CreateDIBitmap(m_output->GetWidth(), m_output->GetHeight()); pOutBitmap->Clear(m_backgroundColor); if (!pOutBitmap) { e = BCExceptionFailToCreateBitmap; return; } for (int32_t x = 0; x < m_output->GetWidth(); x++) { for (int32_t y = 0; y < m_output->GetHeight(); y++) { if (m_output->Get(x, y)) { pOutBitmap->SetPixel(x, y, m_barColor); } } } int32_t i = 0; for (; i < contents.GetLength(); i++) if (contents.GetAt(i) != ' ') { break; } if (m_locTextLoc != BC_TEXT_LOC_NONE && i < contents.GetLength()) { ShowChars(contents, pOutBitmap, nullptr, nullptr, m_barWidth, m_multiple, e); BC_EXCEPTION_CHECK_ReturnVoid(e); } CFX_DIBitmap* pStretchBitmap = pOutBitmap->StretchTo(m_Width, m_Height); delete pOutBitmap; pOutBitmap = pStretchBitmap; }
FX_BOOL CBC_OnedUPCAWriter::CheckContentValidity( const CFX_WideStringC& contents) { for (FX_STRSIZE i = 0; i < contents.GetLength(); ++i) { if (contents.GetAt(i) < '0' || contents.GetAt(i) > '9') return FALSE; } return TRUE; }
bool CFX_WideString::Equal(const CFX_WideStringC& str) const { if (m_pData == NULL) { return str.IsEmpty(); } return str.GetLength() == m_pData->m_nDataLength && FXSYS_memcmp32(str.GetPtr(), m_pData->m_String, m_pData->m_nDataLength * sizeof(FX_WCHAR)) == 0; }
FX_BOOL CPDFXFA_App::PutRequestURL(const CFX_WideStringC& wsURL, const CFX_WideStringC& wsData, const CFX_WideStringC& wsEncode) { CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0); if (pEnv) { return pEnv->FFI_PutRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsEncode.GetPtr()); } return FALSE; }
FX_BOOL CBC_OnedEAN8Writer::CheckContentValidity( const CFX_WideStringC& contents) { for (int32_t i = 0; i < contents.GetLength(); i++) { if (contents.GetAt(i) >= '0' && contents.GetAt(i) <= '9') { continue; } else { return FALSE; } } return TRUE; }
CFX_WideString::CFX_WideString(const CFX_WideStringC& str) { if (str.IsEmpty()) { m_pData = NULL; return; } m_pData = StringData::Create(str.GetLength()); if (m_pData) { FXSYS_memcpy(m_pData->m_String, str.GetPtr(), str.GetLength()*sizeof(FX_WCHAR)); } }
int32_t CPDFXFA_App::MsgBox(const CFX_WideStringC& wsMessage, const CFX_WideStringC& wsTitle, FX_DWORD dwIconType, FX_DWORD dwButtonType) { CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0); if (!pEnv) return -1; FX_DWORD iconType = 0; int iButtonType = 0; switch (dwIconType) { case XFA_MBICON_Error: iconType |= 0; break; case XFA_MBICON_Warning: iconType |= 1; break; case XFA_MBICON_Question: iconType |= 2; break; case XFA_MBICON_Status: iconType |= 3; break; } switch (dwButtonType) { case XFA_MB_OK: iButtonType |= 0; break; case XFA_MB_OKCancel: iButtonType |= 1; break; case XFA_MB_YesNo: iButtonType |= 2; break; case XFA_MB_YesNoCancel: iButtonType |= 3; break; } int32_t iRet = pEnv->JS_appAlert(wsMessage.GetPtr(), wsTitle.GetPtr(), iButtonType, iconType); switch (iRet) { case 1: return XFA_IDOK; case 2: return XFA_IDCancel; case 3: return XFA_IDNo; case 4: return XFA_IDYes; } return XFA_IDYes; }
FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc, FX_WCHAR* pDst) { FX_STRSIZE nCount = 0; for (FX_STRSIZE len = 0; len < wsSrc.GetLength(); len++) { FX_WCHAR wch = wsSrc.GetAt(len); if (pDst) { nCount += FX_Unicode_GetNormalization(wch, pDst + nCount); } else { nCount += FX_Unicode_GetNormalization(wch, pDst); } } return nCount; }
// Static. FX_ARGB CXFA_Data::ToColor(const CFX_WideStringC& wsValue) { uint8_t r = 0, g = 0, b = 0; if (wsValue.GetLength() == 0) return 0xff000000; int cc = 0; const FX_WCHAR* str = wsValue.c_str(); int len = wsValue.GetLength(); while (FXSYS_iswspace(str[cc]) && cc < len) cc++; if (cc >= len) return 0xff000000; while (cc < len) { if (str[cc] == ',' || !FXSYS_isDecimalDigit(str[cc])) break; r = r * 10 + str[cc] - '0'; cc++; } if (cc < len && str[cc] == ',') { cc++; while (FXSYS_iswspace(str[cc]) && cc < len) cc++; while (cc < len) { if (str[cc] == ',' || !FXSYS_isDecimalDigit(str[cc])) break; g = g * 10 + str[cc] - '0'; cc++; } if (cc < len && str[cc] == ',') { cc++; while (FXSYS_iswspace(str[cc]) && cc < len) cc++; while (cc < len) { if (str[cc] == ',' || !FXSYS_isDecimalDigit(str[cc])) break; b = b * 10 + str[cc] - '0'; cc++; } } } return (0xff << 24) | (r << 16) | (g << 8) | b; }
FX_BOOL CPDFXFA_App::PostRequestURL(const CFX_WideStringC& wsURL, const CFX_WideStringC& wsData, const CFX_WideStringC& wsContentType, const CFX_WideStringC& wsEncode, const CFX_WideStringC& wsHeader, CFX_WideString& wsResponse) { CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0); if (pEnv) { wsResponse = pEnv->FFI_PostRequestURL(wsURL.GetPtr(), wsData.GetPtr(), wsContentType.GetPtr(), wsEncode.GetPtr(), wsHeader.GetPtr()); return TRUE; } return FALSE; }
FX_BOOL FX_File_Exist(const CFX_WideStringC& fileName) { FX_DWORD dwAttri = ::GetFileAttributesW((LPCWSTR)fileName.GetPtr()); if (dwAttri == -1) { return FALSE; } return (dwAttri & FILE_ATTRIBUTE_DIRECTORY) == 0; }
CFX_WideString CBC_OnedUPCAWriter::FilterContents( const CFX_WideStringC& contents) { CFX_WideString filtercontents; FX_WCHAR ch; for (int32_t i = 0; i < contents.GetLength(); i++) { ch = contents.GetAt(i); if (ch > 175) { i++; continue; } if (ch >= '0' && ch <= '9') { filtercontents += ch; } } return filtercontents; }
void CXML_Parser::InsertContentSegment(bool bCDATA, const CFX_WideStringC& content, CXML_Element* pElement) { if (content.IsEmpty()) { return; } CXML_Content* pContent = new CXML_Content; pContent->Set(bCDATA, content); pElement->m_Children.push_back({CXML_Element::Content, pContent}); }
void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, const CFX_WideStringC& content, CXML_Element* pElement) { if (content.IsEmpty()) { return; } CXML_Content* pContent = new CXML_Content; pContent->Set(bCDATA, content); pElement->m_Children.Add((void*)CXML_Element::Content); pElement->m_Children.Add(pContent); }
static XFA_LPCBARCODETYPEENUMINFO XFA_GetBarcodeTypeByName( const CFX_WideStringC& wsName) { int32_t iLength = wsName.GetLength(); if (iLength == 0) { return NULL; } uint32_t uHash = FX_HashCode_String_GetW(wsName.GetPtr(), iLength, TRUE); int32_t iStart = 0, iEnd = g_iXFABarcodeTypeCount - 1; do { int32_t iMid = (iStart + iEnd) / 2; XFA_LPCBARCODETYPEENUMINFO pInfo = g_XFABarCodeTypeEnumData + iMid; if (uHash == pInfo->uHash) { return pInfo; } else if (uHash < pInfo->uHash) { iEnd = iMid - 1; } else { iStart = iMid + 1; } } while (iStart <= iEnd); return NULL; }
FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_WideStringC& fileName, uint32_t dwMode) { if (m_hFile) { return FALSE; } uint32_t dwAccess, dwShare, dwCreation; FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); m_hFile = ::CreateFileW((LPCWSTR)fileName.c_str(), dwAccess, dwShare, nullptr, dwCreation, FILE_ATTRIBUTE_NORMAL, nullptr); if (m_hFile == INVALID_HANDLE_VALUE) m_hFile = nullptr; return !!m_hFile; }
FX_BOOL CBC_OnedCode128Writer::CheckContentValidity( const CFX_WideStringC& contents) { FX_BOOL ret = TRUE; int32_t position = 0; int32_t patternIndex = -1; if (m_codeFormat == BC_CODE128_B || m_codeFormat == BC_CODE128_C) { while (position < contents.GetLength()) { patternIndex = (int32_t)contents.GetAt(position); if (patternIndex >= 32 && patternIndex <= 126 && patternIndex != 34) { position++; continue; } else { ret = FALSE; break; } position++; } } else { ret = FALSE; } return ret; }
void CPDFXFA_App::Response(CFX_WideString& wsAnswer, const CFX_WideStringC& wsQuestion, const CFX_WideStringC& wsTitle, const CFX_WideStringC& wsDefaultAnswer, FX_BOOL bMark) { CPDFDoc_Environment* pEnv = m_pEnvList.GetAt(0); if (pEnv) { int nLength = 2048; char* pBuff = new char[nLength]; nLength = pEnv->JS_appResponse(wsQuestion.GetPtr(), wsTitle.GetPtr(), wsDefaultAnswer.GetPtr(), NULL, bMark, pBuff, nLength); if (nLength > 0) { nLength = nLength > 2046 ? 2046 : nLength; pBuff[nLength] = 0; pBuff[nLength + 1] = 0; wsAnswer = CFX_WideString::FromUTF16LE( reinterpret_cast<const unsigned short*>(pBuff), nLength / sizeof(unsigned short)); } delete[] pBuff; } }
FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) { if (m_hFile) { return FALSE; } FX_DWORD dwAccess, dwShare, dwCreation; FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); m_hFile = ::CreateFileW((LPCWSTR)fileName.GetPtr(), dwAccess, dwShare, NULL, dwCreation, FILE_ATTRIBUTE_NORMAL, NULL); if (m_hFile == INVALID_HANDLE_VALUE) { m_hFile = NULL; } return m_hFile != NULL; }
CFX_WideString::CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2) { m_pData = NULL; int nNewLen = str1.GetLength() + str2.GetLength(); if (nNewLen == 0) { return; } m_pData = StringData::Create(nNewLen); if (m_pData) { FXSYS_memcpy(m_pData->m_String, str1.GetPtr(), str1.GetLength()*sizeof(FX_WCHAR)); FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetPtr(), str2.GetLength()*sizeof(FX_WCHAR)); } }
static int32_t XFA_FilterName(const CFX_WideStringC& wsExpression, int32_t nStart, CFX_WideString& wsFilter) { FXSYS_assert(nStart > -1); int32_t iLength = wsExpression.GetLength(); if (nStart >= iLength) { return iLength; } FX_WCHAR* pBuf = wsFilter.GetBuffer(iLength - nStart); int32_t nCount = 0; const FX_WCHAR* pSrc = wsExpression.GetPtr(); FX_WCHAR wCur; while (nStart < iLength) { wCur = pSrc[nStart++]; if (wCur == ',') { break; } pBuf[nCount++] = wCur; } wsFilter.ReleaseBuffer(nCount); wsFilter.TrimLeft(); wsFilter.TrimRight(); return nStart; }
CFX_WideString CBC_OnedCode128Writer::FilterContents( const CFX_WideStringC& contents) { CFX_WideString filterChineseChar; FX_WCHAR ch; for (int32_t i = 0; i < contents.GetLength(); i++) { ch = contents.GetAt(i); if (ch > 175) { i++; continue; } filterChineseChar += ch; } CFX_WideString filtercontents; if (m_codeFormat == BC_CODE128_B) { for (int32_t i = 0; i < filterChineseChar.GetLength(); i++) { ch = filterChineseChar.GetAt(i); if (ch >= 32 && ch <= 126) { filtercontents += ch; } else { continue; } } } else if (m_codeFormat == BC_CODE128_C) { for (int32_t i = 0; i < filterChineseChar.GetLength(); i++) { ch = filterChineseChar.GetAt(i); if (ch >= 32 && ch <= 106) { filtercontents += ch; } else { continue; } } } else { filtercontents = contents; } return filtercontents; }
bool CFWL_FontData::LoadFont(const CFX_WideStringC& wsFontFamily, uint32_t dwFontStyles, uint16_t dwCodePage) { m_wsFamily = wsFontFamily; m_dwStyles = dwFontStyles; m_dwCodePage = dwCodePage; if (!m_pFontMgr) { #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ m_pFontMgr = CFGAS_FontMgr::Create(FX_GetDefFontEnumerator()); #else m_pFontSource = pdfium::MakeUnique<CFX_FontSourceEnum_File>(); m_pFontMgr = CFGAS_FontMgr::Create(m_pFontSource.get()); #endif } m_pFont = CFGAS_GEFont::LoadFont(wsFontFamily.c_str(), dwFontStyles, dwCodePage, m_pFontMgr.get()); return !!m_pFont; }
FX_BOOL CFWL_FontData::LoadFont(const CFX_WideStringC& wsFontFamily, FX_DWORD dwFontStyles, FX_WORD dwCodePage) { m_wsFamily = wsFontFamily; m_dwStyles = dwFontStyles; m_dwCodePage = dwCodePage; if (!m_pFontMgr) { #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ m_pFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator()); #else m_pFontSource = FX_CreateDefaultFontSourceEnum(); m_pFontMgr = IFX_FontMgr::Create(m_pFontSource); #endif } m_pFont = IFX_Font::LoadFont(wsFontFamily.GetPtr(), dwFontStyles, dwCodePage, m_pFontMgr); return m_pFont != NULL; }
bool CBC_EAN8::Encode(const CFX_WideStringC& contents, bool isDevice, int32_t& e) { if (contents.IsEmpty()) { e = BCExceptionNoContents; return false; } BCFORMAT format = BCFORMAT_EAN_8; int32_t outWidth = 0; int32_t outHeight = 0; CFX_WideString encodeContents = Preprocess(contents); CFX_ByteString byteString = encodeContents.UTF8Encode(); m_renderContents = encodeContents; uint8_t* data = static_cast<CBC_OnedEAN8Writer*>(m_pBCWriter.get()) ->Encode(byteString, format, outWidth, outHeight, e); BC_EXCEPTION_CHECK_ReturnValue(e, false); static_cast<CBC_OneDimWriter*>(m_pBCWriter.get()) ->RenderResult(encodeContents.AsStringC(), data, outWidth, isDevice, e); FX_Free(data); BC_EXCEPTION_CHECK_ReturnValue(e, false); return true; }
int32_t XFA_FM2JS_Translate(const CFX_WideStringC& wsFormcalc, CFX_WideTextBuf& wsJavascript, CFX_WideString& wsError) { if (wsFormcalc.IsEmpty()) { wsJavascript.Clear(); wsError.Empty(); return 0; } int32_t status = 0; CXFA_FMProgram program; status = program.Init(wsFormcalc); if (status) { wsError = program.GetError().message; return status; } status = program.ParseProgram(); if (status) { wsError = program.GetError().message; return status; } program.TranslateProgram(wsJavascript); return 0; }