mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 01:04:34 +08:00
Fix BE for empty border style
This commit is contained in:
@ -493,6 +493,7 @@
|
||||
rec["noRotate"] = (rec["annotflag"] >> 4) & 1; // NoRotate
|
||||
let bNoView = (rec["annotflag"] >> 5) & 1; // NoView
|
||||
rec["locked"] = (rec["annotflag"] >> 7) & 1; // Locked
|
||||
rec["ToggleNoView"] = (rec["annotflag"] >> 8) & 1; // ToggleNoView
|
||||
rec["lockedC"] = (rec["annotflag"] >> 9) & 1; // LockedContents
|
||||
// 0 - visible, 1 - hidden, 2 - noPrint, 3 - noView
|
||||
rec["display"] = 0;
|
||||
@ -531,7 +532,11 @@
|
||||
rec["Contents"] = reader.readString();
|
||||
// Эффекты границы - BE
|
||||
if (flags & (1 << 2))
|
||||
rec["borderCloudy"] = reader.readDouble();
|
||||
{
|
||||
rec["BE"] = {};
|
||||
rec["BE"]["S"] = reader.readByte();
|
||||
rec["BE"]["I"] = reader.readDouble();
|
||||
}
|
||||
// Специальный цвет аннотации - С
|
||||
if (flags & (1 << 3))
|
||||
{
|
||||
|
||||
@ -417,9 +417,14 @@ void ReadAnnot(BYTE* pWidgets, int& i)
|
||||
}
|
||||
if (nFlags & (1 << 2))
|
||||
{
|
||||
std::string arrEffects[] = {"S", "C"};
|
||||
nPathLength = READ_BYTE(pWidgets + i);
|
||||
i += 1;
|
||||
std::cout << "BE " << arrEffects[nPathLength] << " ";
|
||||
|
||||
nPathLength = READ_INT(pWidgets + i);
|
||||
i += 4;
|
||||
std::cout << "BE C " << (double)nPathLength / 100.0 << ", ";
|
||||
std::cout << (double)nPathLength / 100.0 << ", ";
|
||||
}
|
||||
if (nFlags & (1 << 3))
|
||||
{
|
||||
|
||||
@ -1568,13 +1568,22 @@ CAnnot::CAnnot(PDFDoc* pdfDoc, AcroFormField* pField)
|
||||
oObj.free();
|
||||
|
||||
// 3 - Эффекты границы - BE
|
||||
Object oBorderBEI;
|
||||
if (pField->fieldLookup("BE", &oObj)->isDict() && oObj.dictLookup("S", &oObj)->isName("C") && oObj.dictLookup("I", &oBorderBEI)->isNum())
|
||||
if (pField->fieldLookup("BE", &oObj)->isDict())
|
||||
{
|
||||
Object oBorderBE;
|
||||
m_unAFlags |= (1 << 2);
|
||||
m_dBE = oBorderBEI.getNum();
|
||||
|
||||
m_pBE.first = 0;
|
||||
if (oObj.dictLookup("S", &oBorderBE)->isName("C"))
|
||||
m_pBE.first = 1;
|
||||
oBorderBE.free();
|
||||
|
||||
m_pBE.second = 0;
|
||||
if (oObj.dictLookup("I", &oBorderBE)->isNum())
|
||||
m_pBE.second = oBorderBE.getNum();
|
||||
oBorderBE.free();
|
||||
}
|
||||
oObj.free(); oObj.free(); oBorderBEI.free();
|
||||
oObj.free();
|
||||
|
||||
// 4 - Специальный цвет для аннотации - C
|
||||
if (pField->fieldLookup("C", &oObj)->isArray())
|
||||
@ -1680,13 +1689,22 @@ CAnnot::CAnnot(PDFDoc* pdfDoc, Object* oAnnotRef, int nPageIndex)
|
||||
oObj.free();
|
||||
|
||||
// 3 - Эффекты границы - BE
|
||||
Object oBorderBEI;
|
||||
if (oAnnot.dictLookup("BE", &oObj)->isDict() && oObj.dictLookup("S", &oObj2)->isName("C") && oObj.dictLookup("I", &oBorderBEI)->isNum())
|
||||
if (oAnnot.dictLookup("BE", &oObj)->isDict())
|
||||
{
|
||||
Object oBorderBE;
|
||||
m_unAFlags |= (1 << 2);
|
||||
m_dBE = oBorderBEI.getNum();
|
||||
|
||||
m_pBE.first = 0;
|
||||
if (oObj.dictLookup("S", &oBorderBE)->isName("C"))
|
||||
m_pBE.first = 1;
|
||||
oBorderBE.free();
|
||||
|
||||
m_pBE.second = 0;
|
||||
if (oObj.dictLookup("I", &oBorderBE)->isNum())
|
||||
m_pBE.second = oBorderBE.getNum();
|
||||
oBorderBE.free();
|
||||
}
|
||||
oObj.free(); oObj2.free(); oBorderBEI.free();
|
||||
oObj.free();
|
||||
|
||||
// 4 - Цвет - C
|
||||
if (oAnnot.dictLookup("C", &oObj)->isArray())
|
||||
@ -2156,7 +2174,10 @@ void CAnnot::ToWASM(NSWasm::CData& oRes)
|
||||
if (m_unAFlags & (1 << 1))
|
||||
oRes.WriteString(m_sContents);
|
||||
if (m_unAFlags & (1 << 2))
|
||||
oRes.AddDouble(m_dBE);
|
||||
{
|
||||
oRes.WriteBYTE(m_pBE.first);
|
||||
oRes.AddDouble(m_pBE.second);
|
||||
}
|
||||
if (m_unAFlags & (1 << 3))
|
||||
{
|
||||
oRes.AddInt((unsigned int)m_arrC.size());
|
||||
|
||||
@ -197,7 +197,7 @@ private:
|
||||
unsigned int m_unRefNum; // Номер ссылки на объект
|
||||
unsigned int m_unPage; // Страница
|
||||
double m_pRect[4]; // Координаты
|
||||
double m_dBE; // Эффекты границы
|
||||
std::pair<BYTE, double> m_pBE; // Эффекты границы
|
||||
std::string m_sContents; // Отображаемый текст
|
||||
std::string m_sNM; // Уникальное имя
|
||||
std::string m_sM; // Дата последнего изменения
|
||||
|
||||
Reference in New Issue
Block a user