Skip to content

Commit

Permalink
for bug #69781
Browse files Browse the repository at this point in the history
  • Loading branch information
ElenaSubbotina committed Aug 29, 2024
1 parent 64dfeee commit a748b08
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
11 changes: 9 additions & 2 deletions OOXML/Binary/Document/BinReader/Readers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1365,8 +1365,15 @@ int Binary_pPrReader::ReadBorder(BYTE type, long length, void* poResult)
{
pBorder->m_oVal.Init();

BYTE border_type = m_oBufferedStream.GetUChar(); // todooo change to int
pBorder->m_oVal->SetValueFromByte(border_type);
if (0 != m_oBufferedStream.GetUChar())
pBorder->m_oVal->SetValue(SimpleTypes::bordervalueSingle);
else
pBorder->m_oVal->SetValue(SimpleTypes::bordervalueNone);
}
else if (c_oSerBorderType::ValueType == type)
{
pBorder->m_oVal.Init();
pBorder->m_oVal->SetValue((SimpleTypes::EBorder)m_oBufferedStream.GetLong());
}
else if ( c_oSerBorderType::ColorTheme == type )
{
Expand Down
3 changes: 2 additions & 1 deletion OOXML/Binary/Document/BinWriter/BinReaderWriterDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,8 @@ extern int g_nCurFormatVersion;
Value = 3,
ColorTheme = 4,
SpacePoint = 5,
Size8Point = 6
Size8Point = 6,
ValueType = 7
};}
namespace c_oSerShdType{enum c_oSerShdType
{
Expand Down
20 changes: 16 additions & 4 deletions OOXML/Binary/Document/BinWriter/BinWriters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,9 @@ void BinaryCommonWriter::WriteBorder(const ComplexTypes::Word::CBorder& border)
{
if (border.m_oColor.IsInit())
WriteColor(c_oSerBorderType::Color, border.m_oColor.get());

WriteThemeColor(c_oSerBorderType::ColorTheme, border.m_oColor, border.m_oThemeColor, border.m_oThemeTint, border.m_oThemeShade);

if (border.m_oSpace.IsInit())
{
m_oStream.WriteBYTE(c_oSerBorderType::SpacePoint);
Expand All @@ -174,9 +176,16 @@ void BinaryCommonWriter::WriteBorder(const ComplexTypes::Word::CBorder& border)
m_oStream.WriteBYTE(c_oSerBorderType::Value);
m_oStream.WriteBYTE(c_oSerPropLenType::Byte);

int border_type = border.m_oVal.get().GetValue();
if (border_type > 0x0ff) border_type = 1;
m_oStream.WriteBYTE((BYTE)border_type); // todooo change to long type
switch (border.m_oVal.get().GetValue())
{
case SimpleTypes::bordervalueNone:
case SimpleTypes::bordervalueNil: m_oStream.WriteBYTE(0); break;
default: m_oStream.WriteBYTE(1); break;
}

m_oStream.WriteBYTE(c_oSerBorderType::ValueType);
m_oStream.WriteBYTE(c_oSerPropLenType::Long);
m_oStream.WriteLONG(border.m_oVal.get().GetValue());
}
}
void BinaryCommonWriter::WriteTblBorders(const OOX::Logic::CTblBorders& Borders)
Expand Down Expand Up @@ -9546,7 +9555,10 @@ void BinaryFileWriter::WriteMainTableStart(bool bSigTable)
if (bSigTable)
{
//BinarySigTableWriter
int nCurPos = WriteTableStart(c_oSerTableTypes::Signature);
memset(m_oBcw.m_oStream.GetBuffer() + m_oBcw.m_oStream.GetPosition(), 0, 5 + nTableCount * nmtItemSize);

int nCurPos = WriteTableStart(c_oSerTableTypes::Signature);

BinarySigTableWriter oBinarySigTableWriter(m_oParamsWriter);
oBinarySigTableWriter.Write();
WriteTableEnd(nCurPos);
Expand Down

0 comments on commit a748b08

Please sign in to comment.