Merge pull request #1279 from ONLYOFFICE/fix/SvgConversion

Fixes in svg conversion
This commit is contained in:
Oleg Korshul
2023-09-18 20:36:43 +03:00
committed by GitHub
21 changed files with 355 additions and 221 deletions

View File

@ -9,7 +9,7 @@ namespace NSCSS
{
namespace NSProperties
{
#define CHECK_CONDITIONS (m_bImportant || unLevel <= m_unLevel)
#define CHECK_CONDITIONS (m_bImportant || unLevel < m_unLevel)
static bool CutImportant(std::wstring& wsValue)
{
@ -435,7 +435,7 @@ namespace NSCSS
bool CColor::SetValue(const std::wstring &wsValue, unsigned int unLevel, bool bHardMode)
{
if (wsValue.empty() || (CHECK_CONDITIONS && !bHardMode))
if ((CHECK_CONDITIONS && !bHardMode) || (wsValue.empty() && unLevel == m_unLevel))
return false;
if (wsValue.empty())
@ -665,6 +665,10 @@ namespace NSCSS
enType = TransformScale;
else if (std::wstring::npos != wsTransform.find(L"rotate"))
enType = TransformRotate;
else if (std::wstring::npos != wsTransform.find(L"skewx"))
enType = TransformSkewX;
else if (std::wstring::npos != wsTransform.find(L"skewy"))
enType = TransformSkewY;
else
{
Clear();
@ -739,6 +743,16 @@ namespace NSCSS
else
return false;
break;
}
case TransformSkewX:
case TransformSkewY:
{
if (arValues.empty())
return false;
m_oValue.push_back(std::make_pair(std::vector<double>{arValues[0]}, enType));
break;
}
}
@ -855,6 +869,16 @@ namespace NSCSS
oMatrix.RotateAt(oElement.first[0], -oElement.first[1], -oElement.first[2]);
break;
}
case TransformSkewX:
{
oMatrix.Shear(oElement.first[0] * 3.14 / 180.0, 0);
break;
}
case TransformSkewY:
{
oMatrix.Shear(0, oElement.first[0] * 3.14 / 180.0);
break;
}
default: break;
}
}
@ -890,6 +914,16 @@ namespace NSCSS
oMatrix.RotateAt(oElement.first[0], -oElement.first[1], -oElement.first[2], order);
break;
}
case TransformSkewX:
{
oMatrix.Shear(oElement.first[0] * 3.14 / 180.0, 0, order);
break;
}
case TransformSkewY:
{
oMatrix.Shear(0, oElement.first[0] * 3.14 / 180.0, order);
break;
}
default: break;
}
}

View File

@ -234,6 +234,8 @@ namespace NSCSS
TransformTranslate,
TransformScale,
TransformRotate,
TransformSkewX,
TransformSkewY,
TransformNone
} TransformType;