From fb934ef527148907bc68d619ebb249086d9d3bb5 Mon Sep 17 00:00:00 2001 From: Green Date: Fri, 17 Jan 2025 15:18:52 +0300 Subject: [PATCH] Fix bug #72558 --- Common/3dParty/html/css/src/CCompiledStyle.cpp | 14 ++++++++++++-- Common/3dParty/html/css/src/CCompiledStyle.h | 3 ++- .../3dParty/html/css/src/xhtml/CDocumentStyle.cpp | 2 +- HtmlFile2/htmlfile2.cpp | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Common/3dParty/html/css/src/CCompiledStyle.cpp b/Common/3dParty/html/css/src/CCompiledStyle.cpp index 059140bc77..1d5d8d355e 100644 --- a/Common/3dParty/html/css/src/CCompiledStyle.cpp +++ b/Common/3dParty/html/css/src/CCompiledStyle.cpp @@ -25,7 +25,7 @@ namespace NSCSS m_arParentsStyles(oStyle.m_arParentsStyles), m_sId(oStyle.m_sId), m_nDpi(oStyle.m_nDpi), m_UnitMeasure(oStyle.m_UnitMeasure), m_dCoreFontSize(oStyle.m_dCoreFontSize), m_oFont(oStyle.m_oFont), m_oMargin(oStyle.m_oMargin), m_oPadding(oStyle.m_oPadding), m_oBackground(oStyle.m_oBackground), - m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay){} + m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay), m_oTransform(oStyle.m_oTransform){} CCompiledStyle::~CCompiledStyle() { @@ -44,6 +44,7 @@ namespace NSCSS m_oPadding += oElement.m_oPadding; m_oText += oElement.m_oText; m_oDisplay += oElement.m_oDisplay; + m_oTransform += oElement.m_oTransform; if (!oElement.m_sId.empty()) m_sId += L'+' + oElement.m_sId; @@ -66,6 +67,7 @@ namespace NSCSS m_oPadding = oElement.m_oPadding; m_oText = oElement.m_oText; m_oDisplay = oElement.m_oDisplay; + m_oTransform = oElement.m_oTransform; return *this; } @@ -78,7 +80,8 @@ namespace NSCSS m_oMargin == oStyle.m_oMargin && m_oPadding == oStyle.m_oPadding && m_oText == oStyle.m_oText && - m_oDisplay == oStyle.m_oDisplay; + m_oDisplay == oStyle.m_oDisplay && + m_oTransform == oStyle.m_oTransform; } void CCompiledStyle::StyleEquation(CCompiledStyle &oFirstStyle, CCompiledStyle &oSecondStyle) @@ -90,6 +93,7 @@ namespace NSCSS NSProperties::CText ::Equation(oFirstStyle.m_oText, oSecondStyle.m_oText); NSProperties::CBorder ::Equation(oFirstStyle.m_oBorder, oSecondStyle.m_oBorder); NSProperties::CDisplay ::Equation(oFirstStyle.m_oDisplay, oSecondStyle.m_oDisplay); + NSProperties::CTransform ::Equation(oFirstStyle.m_oTransform, oSecondStyle.m_oTransform); } void CCompiledStyle::SetDpi(const unsigned short &uiDpi) @@ -431,6 +435,12 @@ namespace NSCSS m_oDisplay.SetVAlign(pPropertie.second, unLevel, bHardMode); break; } + //TRANSFORM + CASE(L"transform"): + { + m_oTransform.SetMatrix(pPropertie.second, unLevel, bHardMode); + break; + } default: AddOtherStyle(pPropertie, unLevel, bHardMode); } } diff --git a/Common/3dParty/html/css/src/CCompiledStyle.h b/Common/3dParty/html/css/src/CCompiledStyle.h index 530e41b4a3..2a597c58c9 100644 --- a/Common/3dParty/html/css/src/CCompiledStyle.h +++ b/Common/3dParty/html/css/src/CCompiledStyle.h @@ -31,11 +31,12 @@ namespace NSCSS NSProperties::CText m_oText; NSProperties::CBorder m_oBorder; NSProperties::CDisplay m_oDisplay; + NSProperties::CTransform m_oTransform; CCompiledStyle(); CCompiledStyle(const CCompiledStyle& oStyle); - ~CCompiledStyle(); + virtual ~CCompiledStyle(); void SetDpi(const unsigned short& uiDpi); void SetUnitMeasure(const UnitMeasure& enUnitMeasure); diff --git a/Common/3dParty/html/css/src/xhtml/CDocumentStyle.cpp b/Common/3dParty/html/css/src/xhtml/CDocumentStyle.cpp index c69d7ffa9c..37c3e91f09 100644 --- a/Common/3dParty/html/css/src/xhtml/CDocumentStyle.cpp +++ b/Common/3dParty/html/css/src/xhtml/CDocumentStyle.cpp @@ -485,7 +485,7 @@ namespace NSCSS return; if (!oStyle.m_oFont.GetSize().Empty()) - oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. + 0.5))); // Значения шрифта увеличивает на 2 + oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. * oStyle.m_oTransform.GetMatrix().GetFinalValue().sy() + 0.5))); // Значения шрифта увеличивает на 2 if (oStyle.m_oText.GetDecoration().m_oLine.Underline()) oXmlElement.AddPropertiesInR(RProperties::R_U, (!oStyle.m_oText.GetDecoration().m_oStyle.Empty()) ? oStyle.m_oText.GetDecoration().m_oStyle.ToWString() : L"single"); diff --git a/HtmlFile2/htmlfile2.cpp b/HtmlFile2/htmlfile2.cpp index 38d09bd156..b52356b2c9 100644 --- a/HtmlFile2/htmlfile2.cpp +++ b/HtmlFile2/htmlfile2.cpp @@ -4766,7 +4766,8 @@ HRESULT CHtmlFile2::OpenBatchHtml(const std::vector& sSrc, const s m_internal->m_oLightReader.Clear(); m_internal->m_sBase.clear(); } - m_internal->m_oStylesCalculator.Clear(); + //Если очищать, то каждый раз при использовании внешнего css файла он заново парсится + // m_internal->m_oStylesCalculator.Clear(); } m_internal->write();