Fix Redact coords

This commit is contained in:
Svetlana Kulikova
2025-10-08 13:36:45 +03:00
parent cebd668fe9
commit fc0d3abd6a
3 changed files with 14 additions and 5 deletions

View File

@ -1242,8 +1242,16 @@ bool CRedact::Read(NSOnlineOfficeBinToPdf::CBufferReader* pReader, IMetafileToRe
pRedact->arrQuadPoints.reserve(m * 8);
for (int j = 0; j < m; ++j)
{
for (int k = 0; k < 8; ++k)
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
double x = pReader->ReadDouble();
double y = pReader->ReadDouble();
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(pReader->ReadDouble());
pRedact->arrQuadPoints.push_back(x);
pRedact->arrQuadPoints.push_back(y);
}
pRedact->nFlag = pReader->ReadInt();
if (pRedact->nFlag & (1 << 0))

View File

@ -211,7 +211,7 @@ CFile.prototype._RedactPage = function(pageIndex, arrRedactBox, arrayBufferFille
let pointer = Module["_malloc"](memoryBuffer.length * 4);
Module["HEAP32"].set(memoryBuffer, pointer >> 2);
let bRes = Module["_RedactPage"](this.nativeFile, pageIndex, pointer, memoryBuffer.length / 4, changesPtr, changesLen);
let bRes = Module["_RedactPage"](this.nativeFile, pageIndex, pointer, memoryBuffer.length / 8, changesPtr, changesLen);
changesPtr = 0; // Success or not, changesPtr is either taken or freed
Module["_free"](pointer);

View File

@ -210,8 +210,9 @@ bool GlobalParamsAdaptor::InRedact(double dX, double dY)
double cross4 = crossProduct(x4, y4, x1, y1, dX, dY);
// Точка внутри, если все векторные произведения имеют одинаковый знак
return (cross1 >= 0 && cross2 >= 0 && cross3 >= 0 && cross4 >= 0) ||
(cross1 <= 0 && cross2 <= 0 && cross3 <= 0 && cross4 <= 0);
if ((cross1 >= 0 && cross2 >= 0 && cross3 >= 0 && cross4 >= 0) ||
(cross1 <= 0 && cross2 <= 0 && cross3 <= 0 && cross4 <= 0))
return true;
}
return false;
}