FX_BOOL CPDF_TextPageFind::ExtractSubString(CFX_WideString& rString, const FX_WCHAR* lpszFullString, int iSubString, FX_WCHAR chSep) { if (!lpszFullString) return FALSE; while (iSubString--) { lpszFullString = std::wcschr(lpszFullString, chSep); if (!lpszFullString) { rString.clear(); return FALSE; } lpszFullString++; while (*lpszFullString == chSep) lpszFullString++; } const FX_WCHAR* lpchEnd = std::wcschr(lpszFullString, chSep); int nLen = lpchEnd ? (int)(lpchEnd - lpszFullString) : (int)FXSYS_wcslen(lpszFullString); ASSERT(nLen >= 0); FXSYS_memcpy(rString.GetBuffer(nLen), lpszFullString, nLen * sizeof(FX_WCHAR)); rString.ReleaseBuffer(); return TRUE; }
void CFGAS_FontMgr::GetNames(const uint8_t* name_table, CFX_WideStringArray& Names) { if (!name_table) return; uint8_t* lpTable = (uint8_t*)name_table; CFX_WideString wsFamily; uint8_t* sp = lpTable + 2; uint8_t* lpNameRecord = lpTable + 6; uint16_t nNameCount = GetUInt16(sp); uint8_t* lpStr = lpTable + GetUInt16(sp + 2); for (uint16_t j = 0; j < nNameCount; j++) { uint16_t nNameID = GetUInt16(lpNameRecord + j * 12 + 6); if (nNameID != 1) continue; uint16_t nPlatformID = GetUInt16(lpNameRecord + j * 12 + 0); uint16_t nNameLength = GetUInt16(lpNameRecord + j * 12 + 8); uint16_t nNameOffset = GetUInt16(lpNameRecord + j * 12 + 10); wsFamily.clear(); if (nPlatformID != 1) { for (uint16_t k = 0; k < nNameLength / 2; k++) { FX_WCHAR wcTemp = GetUInt16(lpStr + nNameOffset + k * 2); wsFamily += wcTemp; } Names.Add(wsFamily); continue; } for (uint16_t k = 0; k < nNameLength; k++) { FX_WCHAR wcTemp = GetUInt8(lpStr + nNameOffset + k); wsFamily += wcTemp; } Names.Add(wsFamily); } }
void CXFA_NodeHelper::GetNameExpression(CXFA_Node* refNode, CFX_WideString& wsName, FX_BOOL bIsAllPath, XFA_LOGIC_TYPE eLogicType) { wsName.clear(); if (bIsAllPath) { GetNameExpression(refNode, wsName, FALSE, eLogicType); CFX_WideString wsParent; CXFA_Node* parent = ResolveNodes_GetParent(refNode, XFA_LOGIC_NoTransparent); while (parent) { GetNameExpression(parent, wsParent, FALSE, eLogicType); wsParent += L"."; wsParent += wsName; wsName = wsParent; parent = ResolveNodes_GetParent(parent, XFA_LOGIC_NoTransparent); } return; } CFX_WideString ws; FX_BOOL bIsProperty = NodeIsProperty(refNode); if (refNode->IsUnnamed() || (bIsProperty && refNode->GetElementType() != XFA_Element::PageSet)) { ws = refNode->GetClassName(); wsName.Format(L"#%s[%d]", ws.c_str(), GetIndex(refNode, eLogicType, bIsProperty, TRUE)); return; } ws = refNode->GetCData(XFA_ATTRIBUTE_Name); ws.Replace(L".", L"\\."); wsName.Format(L"%s[%d]", ws.c_str(), GetIndex(refNode, eLogicType, bIsProperty, FALSE)); }
void CPDF_TextPageFind::ExtractFindWhat(const CFX_WideString& findwhat) { if (findwhat.IsEmpty()) return; int index = 0; while (1) { CFX_WideString csWord = TEXT_EMPTY; int ret = ExtractSubString(csWord, findwhat.c_str(), index, TEXT_SPACE_CHAR); if (csWord.IsEmpty()) { if (ret) { m_csFindWhatArray.push_back(L""); index++; continue; } else { break; } } int pos = 0; while (pos < csWord.GetLength()) { CFX_WideString curStr = csWord.Mid(pos, 1); FX_WCHAR curChar = csWord.GetAt(pos); if (IsIgnoreSpaceCharacter(curChar)) { if (pos > 0 && curChar == 0x2019) { pos++; continue; } if (pos > 0) m_csFindWhatArray.push_back(csWord.Mid(0, pos)); m_csFindWhatArray.push_back(curStr); if (pos == csWord.GetLength() - 1) { csWord.clear(); break; } csWord = csWord.Right(csWord.GetLength() - pos - 1); pos = 0; continue; } pos++; } if (!csWord.IsEmpty()) m_csFindWhatArray.push_back(csWord); index++; } }
void CPWL_Edit::SetText(const CFX_WideString& csText) { CFX_WideString swText = csText; if (!HasFlag(PES_RICH)) { m_pEdit->SetText(swText); return; } CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText); std::unique_ptr<CXML_Element> pXML( CXML_Element::Parse(sValue.c_str(), sValue.GetLength())); if (!pXML) { m_pEdit->SetText(swText); return; } int32_t nCount = pXML->CountChildren(); bool bFirst = true; swText.clear(); for (int32_t i = 0; i < nCount; i++) { CXML_Element* pSubElement = pXML->GetElement(i); if (!pSubElement) continue; CFX_ByteString tag = pSubElement->GetTagName(); if (tag.EqualNoCase("p")) { int nChild = pSubElement->CountChildren(); CFX_WideString swSection; for (int32_t j = 0; j < nChild; j++) swSection += pSubElement->GetContent(j); if (bFirst) bFirst = false; else swText += FWL_VKEY_Return; swText += swSection; } } m_pEdit->SetText(swText); }
FX_BOOL CXFA_LocaleValue::FormatPatterns(CFX_WideString& wsResult, const CFX_WideString& wsFormat, IFX_Locale* pLocale, XFA_VALUEPICTURE eValueType) const { wsResult.clear(); FX_BOOL bRet = FALSE; CFX_FormatString* pFormat = nullptr; if (m_pLocaleMgr) pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); CFX_WideStringArray wsPatterns; pFormat->SplitFormatString(wsFormat, wsPatterns); int32_t iCount = wsPatterns.GetSize(); for (int32_t i = 0; i < iCount; i++) { bRet = FormatSinglePattern(wsResult, wsPatterns[i], pLocale, eValueType); if (bRet) { break; } } pFormat->Release(); return bRet; }
FX_BOOL CXFA_LocaleValue::ValidateValue(const CFX_WideString& wsValue, const CFX_WideString& wsPattern, IFX_Locale* pLocale, CFX_WideString* pMatchFormat) { CFX_WideString wsOutput; IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); if (pLocale) { m_pLocaleMgr->SetDefLocale(pLocale); } CFX_FormatString* pFormat = nullptr; if (m_pLocaleMgr) pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); CFX_WideStringArray wsPatterns; pFormat->SplitFormatString(wsPattern, wsPatterns); FX_BOOL bRet = FALSE; int32_t iCount = wsPatterns.GetSize(); int32_t i = 0; for (; i < iCount && !bRet; i++) { CFX_WideString wsFormat = wsPatterns[i]; FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); eCategory = XFA_ValugeCategory(eCategory, m_dwType); switch (eCategory) { case FX_LOCALECATEGORY_Null: bRet = pFormat->ParseNull(wsValue, wsFormat); if (!bRet) { bRet = wsValue.IsEmpty(); } break; case FX_LOCALECATEGORY_Zero: bRet = pFormat->ParseZero(wsValue, wsFormat); if (!bRet) { bRet = wsValue == FX_WSTRC(L"0"); } break; case FX_LOCALECATEGORY_Num: { CFX_WideString fNum; bRet = pFormat->ParseNum(wsValue, wsFormat, fNum); if (!bRet) { bRet = pFormat->FormatNum(wsValue, wsFormat, wsOutput); } break; } case FX_LOCALECATEGORY_Text: bRet = pFormat->ParseText(wsValue, wsFormat, wsOutput); wsOutput.clear(); if (!bRet) { bRet = pFormat->FormatText(wsValue, wsFormat, wsOutput); } break; case FX_LOCALECATEGORY_Date: { CFX_Unitime dt; bRet = ValidateCanonicalDate(wsValue, dt); if (!bRet) { bRet = pFormat->ParseDateTime(wsValue, wsFormat, FX_DATETIMETYPE_Date, dt); if (!bRet) { bRet = pFormat->FormatDateTime(wsValue, wsFormat, wsOutput, FX_DATETIMETYPE_Date); } } break; } case FX_LOCALECATEGORY_Time: { CFX_Unitime dt; bRet = pFormat->ParseDateTime(wsValue, wsFormat, FX_DATETIMETYPE_Time, dt); if (!bRet) { bRet = pFormat->FormatDateTime(wsValue, wsFormat, wsOutput, FX_DATETIMETYPE_Time); } break; } case FX_LOCALECATEGORY_DateTime: { CFX_Unitime dt; bRet = pFormat->ParseDateTime(wsValue, wsFormat, FX_DATETIMETYPE_DateTime, dt); if (!bRet) { bRet = pFormat->FormatDateTime(wsValue, wsFormat, wsOutput, FX_DATETIMETYPE_DateTime); } break; } default: bRet = FALSE; break; } } if (bRet && pMatchFormat) { *pMatchFormat = wsPatterns[i - 1]; } pFormat->Release(); if (pLocale) { m_pLocaleMgr->SetDefLocale(locale); } return bRet; }
FX_BOOL CXFA_LocaleValue::FormatSinglePattern( CFX_WideString& wsResult, const CFX_WideString& wsFormat, IFX_Locale* pLocale, XFA_VALUEPICTURE eValueType) const { IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); if (pLocale) { m_pLocaleMgr->SetDefLocale(pLocale); } wsResult.clear(); FX_BOOL bRet = FALSE; CFX_FormatString* pFormat = nullptr; if (m_pLocaleMgr) pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); eCategory = XFA_ValugeCategory(eCategory, m_dwType); switch (eCategory) { case FX_LOCALECATEGORY_Null: if (m_wsValue.IsEmpty()) { bRet = pFormat->FormatNull(wsFormat, wsResult); } break; case FX_LOCALECATEGORY_Zero: if (m_wsValue == FX_WSTRC(L"0")) { bRet = pFormat->FormatZero(wsFormat, wsResult); } break; case FX_LOCALECATEGORY_Num: bRet = pFormat->FormatNum(m_wsValue, wsFormat, wsResult); break; case FX_LOCALECATEGORY_Text: bRet = pFormat->FormatText(m_wsValue, wsFormat, wsResult); break; case FX_LOCALECATEGORY_Date: bRet = pFormat->FormatDateTime(m_wsValue, wsFormat, wsResult, FX_DATETIMETYPE_Date); break; case FX_LOCALECATEGORY_Time: bRet = pFormat->FormatDateTime(m_wsValue, wsFormat, wsResult, FX_DATETIMETYPE_Time); break; case FX_LOCALECATEGORY_DateTime: bRet = pFormat->FormatDateTime(m_wsValue, wsFormat, wsResult, FX_DATETIMETYPE_DateTime); break; default: wsResult = m_wsValue; bRet = TRUE; } pFormat->Release(); if (!bRet && (eCategory != FX_LOCALECATEGORY_Num || eValueType != XFA_VALUEPICTURE_Display)) { wsResult = m_wsValue; } if (pLocale) { m_pLocaleMgr->SetDefLocale(locale); } return bRet; }
void CPDFXFA_App::GetFoxitAppType(CFX_WideString& wsFoxitAppType) { wsFoxitAppType.clear(); }