Merge pull request #1144 from ONLYOFFICE/fix/bug61383

Fix bug #61383
This commit is contained in:
Oleg Korshul
2023-02-28 14:18:08 +03:00
committed by GitHub
3 changed files with 25 additions and 2 deletions

View File

@ -1282,7 +1282,10 @@ namespace NSCSS
Scale(nValue, enScalingDirection);
sValueString += std::to_wstring(nValue);
sValueString += std::to_wstring(nValue);
if (!iswdigit(sValueTemp.back()))
sValueString += sValueTemp.back();
}
else
sValueString += sValueTemp;

View File

@ -2023,7 +2023,7 @@ namespace NSCSS
if (sValue.empty())
return BorderSide();
const std::vector<std::wstring> arValues = NS_STATIC_FUNCTIONS::GetWordsW(sValue, L" ");
const std::vector<std::wstring> arValues = NS_STATIC_FUNCTIONS::GetWordsW(NS_STATIC_FUNCTIONS::NormalizeRGB(sValue), L" ");
BorderSide oBorderSide;
for (std::wstring sValue : arValues)
{

View File

@ -315,6 +315,26 @@ namespace NSCSS
return sValue.empty() ? false : std::all_of(sValue.begin(), sValue.end(), [] (const wchar_t& cChar) { return iswdigit(cChar); });
}
inline std::wstring NormalizeRGB(const std::wstring& wsValue)
{
std::wstring wsNewValue = wsValue;
size_t unBegin = 0, unEnd;
while (std::wstring::npos != (unBegin = wsNewValue.find(L"rgb(", unBegin)))
{
unEnd = wsNewValue.find(L")", unBegin);
while ((unBegin = wsNewValue.find(L" ", unBegin)) != std::wstring::npos && unBegin < unEnd)
{
wsNewValue.replace(unBegin, 1, L",");
++unBegin;
}
}
return wsNewValue;
}
inline std::wstring ConvertRgbToHex(const std::wstring& sRgbValue)
{
size_t posFirst = sRgbValue.find_first_of(L"01234567890");