Fix build pdf files

This commit is contained in:
Oleg Korshul
2024-09-11 01:09:50 +03:00
parent 8917390185
commit e345eff63a
11 changed files with 243 additions and 67 deletions

View File

@ -1,4 +1,5 @@
#include "DrawingFileEmbed.h"
#include "../drawingfile.h"
JSSmart<CJSValue> WasmMemoryToJS(BYTE* pWasmData)
{
@ -13,6 +14,15 @@ JSSmart<CJSValue> WasmMemoryToJS(BYTE* pWasmData)
return NSJSBase::CJSContext::createUint8Array(pWasmData + 4, nLen - 4, true);
}
CDrawingFileEmbed::CDrawingFileEmbed()
{
m_pFile = NULL;
}
CDrawingFileEmbed::~CDrawingFileEmbed()
{
RELEASEOBJECT(m_pFile);
}
JSSmart<CJSValue> CDrawingFileEmbed::OpenFile(JSSmart<CJSValue> sFile, JSSmart<CJSValue> sPassword)
{
bool bResult = m_pFile->OpenFile(sFile->toStringW(), sPassword->isString() ? sPassword->toStringW() : L"");
@ -136,7 +146,22 @@ JSSmart<CJSValue> CDrawingFileEmbed::FreeWasmData(JSSmart<CJSValue> typedArray)
if (!typedArray->isTypedArray())
return NULL;
BYTE* data = typedArray->toTypedArray()->getData().Data;
typedArray->toTypedArray()->Detach();
data -= 4; // sizeof int (length in NSWasm::Data)
free(data);
return NULL;
}
bool EmbedDrawingFile(JSSmart<NSJSBase::CJSContext>& context, IOfficeDrawingFile* pFile)
{
CJSContext::Embed<CDrawingFileEmbed>(false);
JSSmart<CJSObject> oNativeDrawingFile = CJSContext::createEmbedObject("CDrawingFileEmbed");
context->GetGlobal()->set("g_native_drawing_file", oNativeDrawingFile);
CDrawingFile* pDrFile = new CDrawingFile(pFile->GetFonts());
pDrFile->SetInternalFile(pFile);
((CDrawingFileEmbed*)oNativeDrawingFile->getNative())->m_pFile = pDrFile;
return true;
}

View File

@ -1,8 +1,10 @@
#ifndef _BUILD_DRAWING_EMBED_H_
#define _BUILD_DRAWING_EMBED_H_
#include "../drawingfile.h"
#include "../js_internal/js_base.h"
#include "../../graphics/pro/officedrawingfile.h"
class CDrawingFile;
using namespace NSJSBase;
class JS_DECL CDrawingFileEmbed : public CJSEmbedObject
@ -11,14 +13,8 @@ public:
CDrawingFile* m_pFile;
public:
CDrawingFileEmbed()
{
m_pFile = NULL;
}
~CDrawingFileEmbed()
{
RELEASEOBJECT(m_pFile);
}
CDrawingFileEmbed();
~CDrawingFileEmbed();
virtual void* getObject() override { return (void*)m_pFile; }
@ -57,4 +53,6 @@ public:
DECLARE_EMBED_METHODS
};
bool EmbedDrawingFile(JSSmart<NSJSBase::CJSContext>& context, IOfficeDrawingFile* pFile);
#endif // _BUILD_NATIVE_ZIP_EMBED_H_