mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Fix ToBin function
This commit is contained in:
@ -1101,7 +1101,6 @@ namespace NSDocxRenderer
|
||||
|
||||
//Условие пересечения по горизонтали
|
||||
bool bIf3 = h_type != eHorizontalCrossingType::hctUnknown &&
|
||||
h_type != eHorizontalCrossingType::hctCurrentLeftOfNext &&
|
||||
h_type != eHorizontalCrossingType::hctNoCrossingCurrentLeftOfNext &&
|
||||
h_type != eHorizontalCrossingType::hctNoCrossingCurrentRightOfNext;
|
||||
|
||||
|
||||
@ -154,7 +154,7 @@ namespace NSDocxRenderer
|
||||
|
||||
oWriter.WriteString(L"<a:spcAft>");
|
||||
oWriter.WriteString(L"<a:spcPts val=\"");
|
||||
oWriter.AddInt(static_cast<int>(m_dSpaceBefore * c_dMMToPt * 100));
|
||||
oWriter.AddInt(static_cast<int>(m_dSpaceAfter * c_dMMToPt * 100));
|
||||
oWriter.WriteString(L"\"/>");
|
||||
oWriter.WriteString(L"</a:spcAft>");
|
||||
|
||||
@ -176,7 +176,64 @@ namespace NSDocxRenderer
|
||||
[this, &oWriter] () {
|
||||
oWriter.StartRecord(0);
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeStart);
|
||||
oWriter.WriteBYTE(0);
|
||||
switch (m_eTextAlignmentType)
|
||||
{
|
||||
case tatByCenter:
|
||||
oWriter.WriteBYTE(0);
|
||||
break;
|
||||
case tatByRight:
|
||||
oWriter.WriteBYTE(5);
|
||||
break;
|
||||
case tatByWidth:
|
||||
oWriter.WriteBYTE(2);
|
||||
break;
|
||||
case tatByLeft: // fallthrough
|
||||
case tatUnknown: // fallthrough
|
||||
default:
|
||||
oWriter.WriteBYTE(4);
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_bIsNeedFirstLineIndent)
|
||||
{
|
||||
oWriter.WriteBYTE(5);
|
||||
oWriter.AddSInt(static_cast<int>(m_dFirstLine * c_dMMToEMU));
|
||||
}
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeEnd);
|
||||
|
||||
const int max_value = 158400;
|
||||
|
||||
// line spacing
|
||||
oWriter.StartRecord(0);
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeStart);
|
||||
int height_value = static_cast<int>(m_dLineHeight * c_dMMToPt * 100);
|
||||
if (fabs(height_value) > max_value)
|
||||
height_value > 0 ? height_value = max_value : height_value = -max_value;
|
||||
oWriter.WriteBYTE(1); oWriter.AddSInt(static_cast<int>(height_value));
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeEnd);
|
||||
oWriter.EndRecord();
|
||||
|
||||
// space after
|
||||
oWriter.StartRecord(1);
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeStart);
|
||||
int after_value = static_cast<int>(m_dSpaceAfter * c_dMMToPt * 100);
|
||||
if (fabs(after_value) > max_value)
|
||||
after_value > 0 ? after_value = max_value : after_value = -max_value;
|
||||
oWriter.WriteBYTE(1); oWriter.AddSInt(static_cast<int>(after_value));
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeEnd);
|
||||
oWriter.EndRecord();
|
||||
|
||||
// space before
|
||||
oWriter.StartRecord(2);
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeStart);
|
||||
int before_value = static_cast<int>(m_dSpaceBefore * c_dMMToPt * 100);
|
||||
if (fabs(before_value) > max_value)
|
||||
before_value > 0 ? before_value = max_value : before_value = -max_value;
|
||||
oWriter.WriteBYTE(1); oWriter.AddSInt(static_cast<int>(before_value));
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeEnd);
|
||||
oWriter.EndRecord();
|
||||
|
||||
oWriter.EndRecord();
|
||||
}();
|
||||
|
||||
|
||||
@ -1109,15 +1109,15 @@ namespace NSDocxRenderer
|
||||
oWriter.StartRecord(0);
|
||||
oWriter.AddInt(static_cast<unsigned int>(data.size()));
|
||||
|
||||
auto write_coords = [&oWriter] (const CVectorGraphics::CPathCommand& command) {
|
||||
auto write_coords = [&oWriter, &left, &top] (const CVectorGraphics::CPathCommand& command) {
|
||||
BYTE byte_count = 0;
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeStart);
|
||||
for (const auto& point : command.points)
|
||||
{
|
||||
oWriter.WriteBYTE(byte_count++);
|
||||
oWriter.WriteStringUtf16(std::to_wstring(point.x * c_dMMToEMU));
|
||||
oWriter.WriteStringUtf16(std::to_wstring((point.x - left) * c_dMMToEMU));
|
||||
oWriter.WriteBYTE(byte_count++);
|
||||
oWriter.WriteStringUtf16(std::to_wstring(point.y * c_dMMToEMU));
|
||||
oWriter.WriteStringUtf16(std::to_wstring((point.y - top) * c_dMMToEMU));
|
||||
}
|
||||
oWriter.WriteBYTE(kBin_g_nodeAttributeEnd);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user