1
0
mirror of https://github.com/ONLYOFFICE/core.git synced 2025-04-18 14:04:06 +03:00

COfficeDrawingPageParams

This commit is contained in:
Svetlana Kulikova 2024-11-18 18:59:23 +03:00
parent c83e50d164
commit c1b01029df
10 changed files with 33 additions and 12 deletions

View File

@ -43,6 +43,18 @@ enum OfficeDrawingFileType
odftUndefined = 255
};
struct COfficeDrawingPageParams
{
bool m_bNeedDrawAnnotation;
COfficeDrawingPageParams() : m_bNeedDrawAnnotation(true){}
void SetDrawAnnotation(bool bDraw)
{
m_bNeedDrawAnnotation = bDraw;
}
};
class GRAPHICS_DECL IOfficeDrawingFile
{
public:
@ -70,7 +82,7 @@ public:
// Pages info/draw
virtual int GetPagesCount() = 0;
virtual void GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, double* pdDpiX, double* pdDpiY) = 0;
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak) = 0;
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams = NULL) = 0;
// Common methods/wrappers on GetPageInfo + DrawPageOnRenderer
virtual unsigned char* ConvertToPixels(int nPageIndex, int nRasterW, int nRasterH,

View File

@ -93,7 +93,7 @@ void CDjVuFile::GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, d
if (m_pImplementation)
m_pImplementation->GetPageInfo(nPageIndex, pdWidth, pdHeight, pdDpiX, pdDpiY);
}
void CDjVuFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak)
void CDjVuFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams)
{
if (m_pImplementation)
m_pImplementation->DrawPageOnRenderer(pRenderer, nPageIndex, pBreak);

View File

@ -69,7 +69,7 @@ public:
virtual int GetPagesCount();
virtual void GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, double* pdDpiX, double* pdDpiY);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams = NULL);
virtual std::wstring GetInfo();
void ConvertToPdf(const std::wstring& path);

View File

@ -382,11 +382,12 @@ bool CPdfFile::ValidMetaData()
return false;
return m_pInternal->pReader->ValidMetaData();
}
void CPdfFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak)
void CPdfFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams)
{
if (!m_pInternal->pReader)
return;
pRenderer->CommandLong(c_nPenWidth0As1px, 1);
m_pInternal->pReader->SetParams(pParams);
m_pInternal->pReader->DrawPageOnRenderer(pRenderer, nPageIndex, pBreak);
}
std::wstring CPdfFile::GetInfo()

View File

@ -121,7 +121,7 @@ public:
virtual int GetPagesCount();
virtual void GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, double* pdDpiX, double* pdDpiY);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams = NULL);
virtual std::wstring GetInfo();
virtual BYTE* GetStructure();
virtual BYTE* GetLinks(int nPageIndex);

View File

@ -82,7 +82,7 @@ CPdfReader::CPdfReader(NSFonts::IApplicationFonts* pAppFonts)
SetCMapFile(NSFile::GetProcessDirectory() + L"/cmap.bin");
#else
globalParams->setDrawFormFields(gFalse);
//globalParams->setDrawAnnotations(gFalse);
globalParams->setDrawAnnotations(gFalse);
SetCMapMemory(NULL, 0);
#endif
@ -448,6 +448,15 @@ void CPdfReader::Close()
RELEASEOBJECT(m_pPDFDocument);
m_mFonts.clear();
}
void CPdfReader::SetParams(COfficeDrawingPageParams* pParams)
{
if (!pParams)
return;
GBool bDraw = pParams->m_bNeedDrawAnnotation ? gTrue : gFalse;
globalParams->setDrawFormFields(bDraw);
globalParams->setDrawAnnotations(bDraw);
}
int CPdfReader::GetError()
{

View File

@ -50,6 +50,7 @@ public:
void Close();
void SetParams(COfficeDrawingPageParams* pParams);
std::wstring GetTempDirectory();
void SetTempDirectory(const std::wstring& directory);

View File

@ -380,7 +380,7 @@ void Page::displaySlice(OutputDev *out, double hDPI, double vDPI,
obj.free();
// draw (non-form) annotations
if (globalParams->getDrawAnnotations()) {
if (true) {
annotList = new Annots(doc, getAnnots(&obj));
obj.free();
annotList->generateAnnotAppearances();
@ -392,12 +392,10 @@ void Page::displaySlice(OutputDev *out, double hDPI, double vDPI,
if (abortCheckCbk && (*abortCheckCbk)(abortCheckCbkData)) {
break;
}
#ifdef BUILDING_WASM_MODULE
sType = annotList->getAnnot(i)->getType();
if (sType->cmp("Link") == 0 || sType->cmp("FileAttachment") == 0 ||
if (globalParams->getDrawAnnotations() || sType->cmp("Link") == 0 || sType->cmp("FileAttachment") == 0 ||
sType->cmp("Sound") == 0 || sType->cmp("Movie") == 0 || sType->cmp("Screen") == 0 || sType->cmp("PrinterMark") == 0 ||
sType->cmp("TrapNet") == 0 || sType->cmp("Watermark") == 0 || sType->cmp("3D") == 0 || sType->cmp("Redact") == 0)
#endif
annotList->getAnnot(i)->draw(gfx, printing);
}
}

View File

@ -173,7 +173,7 @@ void CXpsFile::GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, do
*pdDpiX = 25.4;
*pdDpiY = 25.4;
}
void CXpsFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak)
void CXpsFile::DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams)
{
if (!m_pInternal->m_pDocument)
return;

View File

@ -64,7 +64,7 @@ public:
virtual int GetPagesCount();
virtual void GetPageInfo(int nPageIndex, double* pdWidth, double* pdHeight, double* pdDpiX, double* pdDpiY);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak);
virtual void DrawPageOnRenderer(IRenderer* pRenderer, int nPageIndex, bool* pBreak, COfficeDrawingPageParams* pParams = NULL);
virtual std::wstring GetInfo();
#ifndef DISABLE_PDF_CONVERTATION