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; }
TEST(fxstring, FX_UTF8Encode) { EXPECT_EQ("", FX_UTF8Encode(WideStringView())); EXPECT_EQ( "x" "\xc2\x80" "\xc3\xbf" "\xef\xbc\xac" "y", FX_UTF8Encode(L"x" L"\u0080" L"\u00ff" L"\uff2c" L"y")); }
void CScript_HostPseudoModel::Response(CFXJSE_Arguments* pArguments) { int32_t iLength = pArguments->GetLength(); if (iLength < 1 || iLength > 4) { ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"response"); return; } CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } CFX_WideString wsQuestion; CFX_WideString wsTitle; CFX_WideString wsDefaultAnswer; FX_BOOL bMark = FALSE; if (iLength >= 1) { CFX_ByteString bsQuestion = pArguments->GetUTF8String(0); wsQuestion = CFX_WideString::FromUTF8(bsQuestion.AsStringC()); } if (iLength >= 2) { CFX_ByteString bsTitle = pArguments->GetUTF8String(1); wsTitle = CFX_WideString::FromUTF8(bsTitle.AsStringC()); } if (iLength >= 3) { CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2); wsDefaultAnswer = CFX_WideString::FromUTF8(bsDefaultAnswer.AsStringC()); } if (iLength >= 4) { bMark = pArguments->GetInt32(3) == 0 ? FALSE : TRUE; } CFX_WideString wsAnswer = pNotify->GetAppProvider()->Response( wsQuestion, wsTitle, wsDefaultAnswer, bMark); CFXJSE_Value* pValue = pArguments->GetReturnValue(); if (pValue) pValue->SetString(FX_UTF8Encode(wsAnswer).AsStringC()); }
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; }
void CScript_HostPseudoModel::LoadString(CFXJSE_Value* pValue, CXFA_FFNotify* pNotify, uint32_t dwFlag) { CFX_WideString wsValue; pNotify->GetAppProvider()->LoadString(dwFlag, wsValue); pValue->SetString(FX_UTF8Encode(wsValue).AsStringC()); }
void CScript_HostPseudoModel::Script_HostPseudoModel_LoadString( FXJSE_HVALUE hValue, IXFA_Notify* pNotify, FX_DWORD dwFlag) { CFX_WideString wsValue; pNotify->GetAppProvider()->LoadString(dwFlag, wsValue); FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsValue)); }
void CScript_HostPseudoModel::CurrentDateTime(CFXJSE_Arguments* pArguments) { CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } CFX_WideString wsDataTime = pNotify->GetCurrentDateTime(); CFXJSE_Value* pValue = pArguments->GetReturnValue(); if (pValue) pValue->SetString(FX_UTF8Encode(wsDataTime).AsStringC()); }
void Script_EventPseudoModel_StringProperty(FXJSE_HVALUE hValue, CFX_WideString& wsValue, FX_BOOL bSetting) { if (bSetting) { CFX_ByteString bsValue; FXJSE_Value_ToUTF8String(hValue, bsValue); wsValue = CFX_WideString::FromUTF8(bsValue, bsValue.GetLength()); } else { FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsValue)); } }
TEST(fxstring, FX_UTF8EncodeDecodeConsistency) { WideString wstr; wstr.Reserve(0x10000); for (int w = 0; w < 0x10000; ++w) wstr += static_cast<wchar_t>(w); ByteString bstr = FX_UTF8Encode(wstr.AsStringView()); WideString wstr2 = FX_UTF8Decode(bstr.AsStringView()); EXPECT_EQ(0x10000u, wstr2.GetLength()); EXPECT_EQ(wstr, wstr2); }
void CScript_HostPseudoModel::Script_HostPseudoModel_CurrentDateTime( CFXJSE_Arguments* pArguments) { IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } CFX_WideString wsDataTime = pNotify->GetCurrentDateTime(); FXJSE_HVALUE hValue = pArguments->GetReturnValue(); if (hValue) { FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsDataTime)); } }
void CScript_HostPseudoModel::Language(CFXJSE_Value* pValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowException(XFA_IDS_UNABLE_SET_LANGUAGE); return; } CFX_WideString wsLanguage; pNotify->GetAppProvider()->GetLanguage(wsLanguage); pValue->SetString(FX_UTF8Encode(wsLanguage).AsStringC()); }
void CScript_HostPseudoModel::AppType(CFXJSE_Value* pValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowException(XFA_IDS_INVAlID_PROP_SET); return; } CFX_WideString wsAppType; pNotify->GetAppProvider()->GetAppType(wsAppType); pValue->SetString(FX_UTF8Encode(wsAppType).AsStringC()); }
void CScript_HostPseudoModel::Script_HostPseudoModel_Language( FXJSE_HVALUE hValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_LANGUAGE); return; } CFX_WideString wsLanguage; pNotify->GetAppProvider()->GetLanguage(wsLanguage); FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsLanguage)); }
void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitAppType( FXJSE_HVALUE hValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); return; } CFX_WideString wsAppType; pNotify->GetAppProvider()->GetFoxitAppType(wsAppType); FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType)); }
CFX_ByteString CXML_Element::GetNamespaceURI( const CFX_ByteString& qName) const { const CFX_WideString* pwsSpace; const CXML_Element* pElement = this; do { if (qName.IsEmpty()) { pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); } else { pwsSpace = pElement->m_AttrMap.Lookup("xmlns", qName); } if (pwsSpace) { break; } pElement = pElement->GetParent(); } while (pElement); return pwsSpace ? FX_UTF8Encode(*pwsSpace) : CFX_ByteString(); }
void CScript_HostPseudoModel::Variation(CFXJSE_Value* pValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { return; } CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowException(XFA_IDS_UNABLE_SET_VARIATION); return; } CFX_WideString wsVariation; pNotify->GetAppProvider()->GetVariation(wsVariation); pValue->SetString(FX_UTF8Encode(wsVariation).AsStringC()); }
void CScript_HostPseudoModel::Title(CFXJSE_Value* pValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { return; } CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); if (!pNotify) { return; } CXFA_FFDoc* hDoc = pNotify->GetHDOC(); if (bSetting) { pNotify->GetDocEnvironment()->SetTitle(hDoc, pValue->ToWideString()); return; } CFX_WideString wsTitle; pNotify->GetDocEnvironment()->GetTitle(hDoc, wsTitle); pValue->SetString(FX_UTF8Encode(wsTitle).AsStringC()); }
void CScript_HostPseudoModel::Script_HostPseudoModel_Variation( FXJSE_HVALUE hValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { return; } IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } if (bSetting) { ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VARIATION); return; } CFX_WideString wsVariation; pNotify->GetAppProvider()->GetVariation(wsVariation); FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVariation)); }
void CScript_HostPseudoModel::Script_HostPseudoModel_Response( CFXJSE_Arguments* pArguments) { int32_t iLength = pArguments->GetLength(); if (iLength < 1 || iLength > 4) { ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"response"); return; } IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } CFX_WideString wsQuestion; CFX_WideString wsTitle; CFX_WideString wsDefaultAnswer; FX_BOOL bMark = FALSE; if (iLength >= 1) { CFX_ByteString bsQuestion = pArguments->GetUTF8String(0); wsQuestion = CFX_WideString::FromUTF8(bsQuestion, bsQuestion.GetLength()); } if (iLength >= 2) { CFX_ByteString bsTitle = pArguments->GetUTF8String(1); wsTitle = CFX_WideString::FromUTF8(bsTitle, bsTitle.GetLength()); } if (iLength >= 3) { CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2); wsDefaultAnswer = CFX_WideString::FromUTF8(bsDefaultAnswer, bsDefaultAnswer.GetLength()); } if (iLength >= 4) { bMark = pArguments->GetInt32(3) == 0 ? FALSE : TRUE; } CFX_WideString wsAnswer; pNotify->GetAppProvider()->Response(wsAnswer, wsQuestion, wsTitle, wsDefaultAnswer, bMark); FXJSE_HVALUE hValue = pArguments->GetReturnValue(); if (hValue) { FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAnswer)); } }
void CScript_HostPseudoModel::Script_HostPseudoModel_Title( FXJSE_HVALUE hValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute) { if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { return; } IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify(); if (!pNotify) { return; } IXFA_Doc* hDoc = pNotify->GetHDOC(); if (bSetting) { CFX_ByteString bsValue; FXJSE_Value_ToUTF8String(hValue, bsValue); pNotify->GetDocProvider()->SetTitle( hDoc, CFX_WideString::FromUTF8(bsValue, bsValue.GetLength())); return; } CFX_WideString wsTitle; pNotify->GetDocProvider()->GetTitle(hDoc, wsTitle); FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsTitle)); }
v8::Local<v8::String> CFX_V8::NewString(WideStringView str) { // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t // wide-strings isn't handled by v8, so use UTF8 as a common // intermediate format. return NewString(FX_UTF8Encode(str).AsStringView()); }
FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) { return Open(FX_UTF8Encode(fileName), dwMode); }
FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_WideStringC& fileName, uint32_t dwMode) { return Open(FX_UTF8Encode(fileName).AsStringC(), dwMode); }
CFX_ByteString CFX_WideString::UTF8Encode() const { return FX_UTF8Encode(*this); }
void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents, CFX_DIBitmap* pOutBitmap, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth, int32_t multiple, int32_t& e) { if (!device && !pOutBitmap) { e = BCExceptionIllegalArgument; return; } int32_t leftPadding = 7 * multiple; int32_t leftPosition = 10 * multiple + leftPadding; CFX_ByteString str = FX_UTF8Encode(contents); int32_t iLen = str.GetLength(); FXTEXT_CHARPOS* pCharPos = FX_Alloc(FXTEXT_CHARPOS, iLen); FXSYS_memset(pCharPos, 0, sizeof(FXTEXT_CHARPOS) * iLen); CFX_ByteString tempStr = str.Mid(1, 5); FX_FLOAT strWidth = (FX_FLOAT)35 * multiple; FX_FLOAT blank = 0.0; CFX_FxgeDevice geBitmap; if (pOutBitmap) geBitmap.Attach(pOutBitmap, false, nullptr, false); iLen = tempStr.GetLength(); int32_t iFontSize = (int32_t)fabs(m_fFontSize); int32_t iTextHeight = iFontSize + 1; if (!pOutBitmap) { CFX_Matrix matr(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); CFX_FloatRect rect( (FX_FLOAT)leftPosition, (FX_FLOAT)(m_Height - iTextHeight), (FX_FLOAT)(leftPosition + strWidth - 0.5), (FX_FLOAT)m_Height); matr.Concat(*matrix); matr.TransformRect(rect); FX_RECT re = rect.GetOutterRect(); device->FillRect(&re, m_backgroundColor); CFX_Matrix matr1(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); CFX_FloatRect rect1( (FX_FLOAT)(leftPosition + 40 * multiple), (FX_FLOAT)(m_Height - iTextHeight), (FX_FLOAT)((leftPosition + 40 * multiple) + strWidth - 0.5), (FX_FLOAT)m_Height); matr1.Concat(*matrix); matr1.TransformRect(rect1); re = rect1.GetOutterRect(); device->FillRect(&re, m_backgroundColor); FX_FLOAT strWidth1 = (FX_FLOAT)multiple * 7; CFX_Matrix matr2(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); CFX_FloatRect rect2(0.0, (FX_FLOAT)(m_Height - iTextHeight), (FX_FLOAT)strWidth1 - 1, (FX_FLOAT)m_Height); matr2.Concat(*matrix); matr2.TransformRect(rect2); re = rect2.GetOutterRect(); device->FillRect(&re, m_backgroundColor); CFX_Matrix matr3(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); CFX_FloatRect rect3( (FX_FLOAT)(leftPosition + 85 * multiple), (FX_FLOAT)(m_Height - iTextHeight), (FX_FLOAT)((leftPosition + 85 * multiple) + strWidth1 - 0.5), (FX_FLOAT)m_Height); matr3.Concat(*matrix); matr3.TransformRect(rect3); re = rect3.GetOutterRect(); device->FillRect(&re, m_backgroundColor); } if (!pOutBitmap) strWidth = strWidth * m_outputHScale; CalcTextInfo(tempStr, pCharPos + 1, m_pFont, strWidth, iFontSize, blank); CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize); CFX_FxgeDevice ge; if (pOutBitmap) { ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr); ge.GetBitmap()->Clear(m_backgroundColor); ge.DrawNormalText(iLen, pCharPos + 1, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix, m_fontColor, FXTEXT_CLEARTYPE); geBitmap.SetDIBits(ge.GetBitmap(), leftPosition, m_Height - iTextHeight); } else { CFX_Matrix affine_matrix1(1.0, 0.0, 0.0, -1.0, (FX_FLOAT)leftPosition * m_outputHScale, (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); if (matrix) { affine_matrix1.Concat(*matrix); } device->DrawNormalText( iLen, pCharPos + 1, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix1, m_fontColor, FXTEXT_CLEARTYPE); } tempStr = str.Mid(6, 5); iLen = tempStr.GetLength(); CalcTextInfo(tempStr, pCharPos + 6, m_pFont, strWidth, iFontSize, blank); if (pOutBitmap) { FX_RECT rect2(0, 0, (int)strWidth, iTextHeight); ge.FillRect(&rect2, m_backgroundColor); ge.DrawNormalText(iLen, pCharPos + 6, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix, m_fontColor, FXTEXT_CLEARTYPE); geBitmap.SetDIBits(ge.GetBitmap(), leftPosition + 40 * multiple, m_Height - iTextHeight); } else { CFX_Matrix affine_matrix1( 1.0, 0.0, 0.0, -1.0, (FX_FLOAT)(leftPosition + 40 * multiple) * m_outputHScale, (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); if (matrix) { affine_matrix1.Concat(*matrix); } device->DrawNormalText( iLen, pCharPos + 6, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix1, m_fontColor, FXTEXT_CLEARTYPE); } tempStr = str.Mid(0, 1); iLen = tempStr.GetLength(); strWidth = (FX_FLOAT)multiple * 7; if (!pOutBitmap) strWidth = strWidth * m_outputHScale; CalcTextInfo(tempStr, pCharPos, m_pFont, strWidth, iFontSize, blank); if (pOutBitmap) { delete ge.GetBitmap(); ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr); ge.GetBitmap()->Clear(m_backgroundColor); ge.DrawNormalText(iLen, pCharPos, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix, m_fontColor, FXTEXT_CLEARTYPE); geBitmap.SetDIBits(ge.GetBitmap(), 0, m_Height - iTextHeight); } else { CFX_Matrix affine_matrix1(1.0, 0.0, 0.0, -1.0, 0, (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); if (matrix) { affine_matrix1.Concat(*matrix); } device->DrawNormalText( iLen, pCharPos, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix1, m_fontColor, FXTEXT_CLEARTYPE); } tempStr = str.Mid(11, 1); iLen = tempStr.GetLength(); CalcTextInfo(tempStr, pCharPos + 11, m_pFont, strWidth, iFontSize, blank); if (pOutBitmap) { delete ge.GetBitmap(); ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr); ge.GetBitmap()->Clear(m_backgroundColor); ge.DrawNormalText(iLen, pCharPos + 11, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix, m_fontColor, FXTEXT_CLEARTYPE); geBitmap.SetDIBits(ge.GetBitmap(), leftPosition + 85 * multiple, m_Height - iTextHeight); } else { CFX_Matrix affine_matrix1( 1.0, 0.0, 0.0, -1.0, (FX_FLOAT)(leftPosition + 85 * multiple) * m_outputHScale, (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); if (matrix) { affine_matrix1.Concat(*matrix); } device->DrawNormalText( iLen, pCharPos + 11, m_pFont, CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, &affine_matrix1, m_fontColor, FXTEXT_CLEARTYPE); } FX_Free(pCharPos); }
FX_BOOL FX_File_Move(FX_WSTR fileNameSrc, FX_WSTR fileNameDst) { return FX_File_Move(FX_UTF8Encode(fileNameSrc), FX_UTF8Encode(fileNameDst)); }
FX_BOOL FX_File_Delete(FX_WSTR fileName) { return FX_File_Delete(FX_UTF8Encode(fileName)); }
FX_BOOL FX_File_Exist(FX_WSTR fileName) { return FX_File_Exist(FX_UTF8Encode(fileName)); }
FX_BOOL CFXCRT_FileAccess_Posix::Open(FX_WSTR fileName, FX_DWORD dwMode) { return Open(FX_UTF8Encode(fileName), dwMode); }
void CBC_OneDimWriter::ShowChars(const CFX_WideStringC& contents, CFX_DIBitmap* pOutBitmap, CFX_RenderDevice* device, const CFX_Matrix* matrix, int32_t barWidth, int32_t multiple, int32_t& e) { if (!device && !pOutBitmap) { e = BCExceptionIllegalArgument; return; } if (!m_pFont) { e = BCExceptionNullPointer; return; } CFX_ByteString str = FX_UTF8Encode(contents); int32_t iLen = str.GetLength(); FXTEXT_CHARPOS* pCharPos = FX_Alloc(FXTEXT_CHARPOS, iLen); FXSYS_memset(pCharPos, 0, sizeof(FXTEXT_CHARPOS) * iLen); FX_FLOAT charsLen = 0; FX_FLOAT geWidth = 0; if (m_locTextLoc == BC_TEXT_LOC_ABOVEEMBED || m_locTextLoc == BC_TEXT_LOC_BELOWEMBED) { geWidth = 0; } else if (m_locTextLoc == BC_TEXT_LOC_ABOVE || m_locTextLoc == BC_TEXT_LOC_BELOW) { geWidth = (FX_FLOAT)barWidth; } int32_t iFontSize = (int32_t)fabs(m_fFontSize); int32_t iTextHeight = iFontSize + 1; CalcTextInfo(str, pCharPos, m_pFont, geWidth, iFontSize, charsLen); if (charsLen < 1) { return; } int32_t locX = 0; int32_t locY = 0; switch (m_locTextLoc) { case BC_TEXT_LOC_ABOVEEMBED: locX = (int32_t)(barWidth - charsLen) / 2; locY = 0; geWidth = charsLen; break; case BC_TEXT_LOC_ABOVE: locX = 0; locY = 0; geWidth = (FX_FLOAT)barWidth; break; case BC_TEXT_LOC_BELOWEMBED: locX = (int32_t)(barWidth - charsLen) / 2; locY = m_Height - iTextHeight; geWidth = charsLen; break; case BC_TEXT_LOC_BELOW: default: locX = 0; locY = m_Height - iTextHeight; geWidth = (FX_FLOAT)barWidth; break; } if (device) { ShowDeviceChars(device, matrix, str, geWidth, pCharPos, (FX_FLOAT)locX, (FX_FLOAT)locY, barWidth); } else { ShowBitmapChars(pOutBitmap, str, geWidth, pCharPos, (FX_FLOAT)locX, (FX_FLOAT)locY, barWidth); } FX_Free(pCharPos); }