mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Fixed working with units of measurement in CSSCalculator
This commit is contained in:
@ -12,7 +12,7 @@
|
||||
#include "StaticFunctions.h"
|
||||
#include "ConstValues.h"
|
||||
|
||||
#define DEFAULTFONTSIZE 14
|
||||
#define DEFAULTFONTSIZE 28 // 14 * 2
|
||||
|
||||
namespace NSCSS
|
||||
{
|
||||
|
||||
@ -27,7 +27,7 @@ namespace NSCSS
|
||||
case NSCSS::Peak:
|
||||
return 0.16667 / (double)ushDPI * dValue;
|
||||
case NSCSS::Twips:
|
||||
return (dValue / 96.) * 1440.;
|
||||
return (dValue / (double)ushDPI) * 144.;
|
||||
}
|
||||
|
||||
return 0.;
|
||||
@ -95,6 +95,8 @@ namespace NSCSS
|
||||
return dValue;
|
||||
case NSCSS::Peak:
|
||||
return dValue / 72.;
|
||||
case NSCSS::Twips:
|
||||
return dValue * 144.;
|
||||
}
|
||||
|
||||
return 0.;
|
||||
@ -117,7 +119,7 @@ namespace NSCSS
|
||||
case NSCSS::Peak:
|
||||
return dValue / 12.;
|
||||
case NSCSS::Twips:
|
||||
return (dValue / 72.) * 1440.;
|
||||
return (dValue / 72.) * 144.;
|
||||
}
|
||||
|
||||
return 0.;
|
||||
@ -140,7 +142,7 @@ namespace NSCSS
|
||||
case NSCSS::Peak:
|
||||
return dValue;
|
||||
case NSCSS::Twips:
|
||||
return dValue * 12. * 20;
|
||||
return dValue * 24.;
|
||||
}
|
||||
|
||||
return 0.;
|
||||
|
||||
@ -1984,10 +1984,10 @@ namespace NSCSS
|
||||
bool CFont::SetSize(const std::wstring &wsValue, unsigned int unLevel, bool bHardMode)
|
||||
{
|
||||
const std::map<std::wstring, std::wstring> arAbsoluteFontValues =
|
||||
{{L"xx-small", L"9px"}, {L"x-small", L"10px"},
|
||||
{L"small", L"13px"}, {L"medium", L"16px"},
|
||||
{L"large", L"18px"}, {L"x-large", L"24px"},
|
||||
{L"xx-large", L"32px"}};
|
||||
{{L"xx-small", L"0.6em"}, {L"x-small", L"0.75em"},
|
||||
{L"small", L"0.875em"}, {L"medium", L"1em"},
|
||||
{L"large", L"1.125em"}, {L"x-large", L"1.25em"},
|
||||
{L"xx-large", L"1.5em"}};
|
||||
|
||||
size_t unFoundPos = std::wstring::npos;
|
||||
std::wstring wsNewValue(wsValue);
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
#define LINEHEIGHTSCALE 10 // Значение LineHeight в OOXML должно быть в 10 раз больше чем указано в стиле
|
||||
#define LINEHEIGHTCOEF 24 // Используется когда необходимо перевести в twips значение
|
||||
#define POINTCOEF 20 // Используется для конвертации в OOXML значение интервала между абзацами (Измерение в двадцатых долях от точки)
|
||||
#define FONTSCALE 2 // Значение шрифта при конвертации в OOXML необходимо увеличиыать в 2 рааз
|
||||
|
||||
#define PAGEWIDTH (12240 / POINTCOEF)
|
||||
#define PAGEHEIGHT (15840 / POINTCOEF)
|
||||
@ -319,8 +318,11 @@ namespace NSCSS
|
||||
|
||||
if (!oStyle.m_oFont.GetLineHeight().Empty())
|
||||
{
|
||||
const double dLineHeight = oStyle.m_oFont.GetLineHeight().ToDouble(NSCSS::Twips, LINEHEIGHTCOEF) * LINEHEIGHTSCALE;
|
||||
double dLineHeight = oStyle.m_oFont.GetLineHeight().ToDouble(NSCSS::Twips, LINEHEIGHTCOEF) * LINEHEIGHTSCALE;
|
||||
|
||||
if (NSCSS::None == oStyle.m_oFont.GetLineHeight().GetUnitMeasure())
|
||||
dLineHeight *= LINEHEIGHTCOEF;
|
||||
|
||||
if (0. != dLineHeight)
|
||||
wsLineHeight = DOUBLE_TO_INTW(dLineHeight);
|
||||
}
|
||||
@ -425,7 +427,7 @@ namespace NSCSS
|
||||
return;
|
||||
|
||||
if (!oStyle.m_oFont.GetSize().Empty())
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Sz, DOUBLE_TO_INTW(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Twips) * FONTSCALE));
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Sz, DOUBLE_TO_INTW(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Twips)));
|
||||
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Highlight, oStyle.m_oBackground.GetColor().ToWString());
|
||||
oXmlElement.AddPropertiesInR(RProperties::R_Color, oStyle.m_oText.GetColor().ToWString());
|
||||
|
||||
Reference in New Issue
Block a user