1031 lines
34 KiB
Diff
1031 lines
34 KiB
Diff
|
--- ./texk/web2c/luatexdir/image/pdftoepdf.w 2018-01-23 07:12:10.789476867 +0000
|
||
|
+++ ../pdftoepdf.w 2018-01-23 08:08:05.626143676 +0000
|
||
|
@@ -27,6 +27,10 @@
|
||
|
/*
|
||
|
This file is mostly C and not very much C++; it's just used to interface
|
||
|
the functions of poppler, which happens to be written in C++.
|
||
|
+ Patches for the new poppler 0.59 from
|
||
|
+ https://www.mail-archive.com/arch-commits@archlinux.org/msg357548.html
|
||
|
+ with some modifications to comply the poppler API.
|
||
|
+
|
||
|
*/
|
||
|
|
||
|
extern void md5(Guchar *msg, int msgLen, Guchar *digest);
|
||
|
@@ -71,12 +75,7 @@
|
||
|
ck = (char *) malloc(PDF_CHECKSUM_SIZE);
|
||
|
if (ck == NULL)
|
||
|
formatted_error("pdf inclusion","out of memory while processing '%s'", a);
|
||
|
- snprintf(ck, PDF_CHECKSUM_SIZE, "%"
|
||
|
- PRIu64
|
||
|
- "_%"
|
||
|
- PRIu64,
|
||
|
- (uint64_t) size,
|
||
|
- (uint64_t) mtime);
|
||
|
+ snprintf(ck, PDF_CHECKSUM_SIZE, "%"@= @>PRIu64@= @>"_%"@= @>PRIu64, (uint64_t) size,(uint64_t) mtime);
|
||
|
} else {
|
||
|
switch (fe) {
|
||
|
case FE_FAIL:
|
||
|
@@ -229,7 +228,7 @@
|
||
|
free(checksum);
|
||
|
}
|
||
|
if (pdf_doc->doc == NULL) {
|
||
|
- docmemstream = new MemStream( docstream,0,streamsize, obj.initNull() );
|
||
|
+ docmemstream = new MemStream( docstream,0,streamsize, Object(objNull) );
|
||
|
doc = new PDFDoc(docmemstream); /* takes ownership of docmemstream */
|
||
|
pdf_doc->pc++;
|
||
|
if (!doc->isOk() || !doc->okToPrint()) {
|
||
|
@@ -413,9 +412,8 @@
|
||
|
Object obj1;
|
||
|
pdf_begin_array(pdf);
|
||
|
for (i = 0, l = array->getLength(); i < l; ++i) {
|
||
|
- array->getNF(i, &obj1);
|
||
|
+ obj1 = array->getNF(i);
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
- obj1.free();
|
||
|
}
|
||
|
pdf_end_array(pdf);
|
||
|
}
|
||
|
@@ -427,9 +425,8 @@
|
||
|
pdf_begin_dict(pdf);
|
||
|
for (i = 0, l = dict->getLength(); i < l; ++i) {
|
||
|
copyName(pdf, dict->getKey(i));
|
||
|
- dict->getValNF(i, &obj1);
|
||
|
+ obj1 = dict->getValNF(i);
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
- obj1.free();
|
||
|
}
|
||
|
pdf_end_dict(pdf);
|
||
|
}
|
||
|
@@ -515,13 +512,12 @@
|
||
|
PDFDoc *doc = pdf_doc->doc;
|
||
|
xref = doc->getXRef();
|
||
|
for (r = pdf_doc->inObjList; r != NULL;) {
|
||
|
- xref->fetch(r->ref.num, r->ref.gen, &obj1);
|
||
|
+ obj1 = xref->fetch(r->ref.num, r->ref.gen);
|
||
|
if (obj1.isStream())
|
||
|
pdf_begin_obj(pdf, r->num, OBJSTM_NEVER);
|
||
|
else
|
||
|
pdf_begin_obj(pdf, r->num, 2);
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
- obj1.free();
|
||
|
pdf_end_obj(pdf);
|
||
|
n = r->next;
|
||
|
delete r;
|
||
|
@@ -601,7 +597,7 @@
|
||
|
pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL);
|
||
|
else if (img_type(idict) == IMG_TYPE_PDFMEMSTREAM) {
|
||
|
pdf_doc = findPdfDocument(img_filepath(idict)) ;
|
||
|
- if (pdf_doc == NULL )
|
||
|
+ if (pdf_doc == NULL )
|
||
|
normal_error("pdf inclusion", "memstream not initialized");
|
||
|
if (pdf_doc->doc == NULL)
|
||
|
normal_error("pdf inclusion", "memstream document is empty");
|
||
|
@@ -618,12 +614,12 @@
|
||
|
*/
|
||
|
pdf_major_version_found = doc->getPDFMajorVersion();
|
||
|
pdf_minor_version_found = doc->getPDFMinorVersion();
|
||
|
- if ((pdf_major_version_found > 1) || (pdf_minor_version_found > img_pdfminorversion(idict))) {
|
||
|
- const char *msg = "PDF inclusion: found PDF version '%d.%d', but at most version '1.%d' allowed";
|
||
|
+ if ((100 * pdf_major_version_found + pdf_major_version_found) > (100 * img_pdfmajorversion(idict) + img_pdfminorversion(idict))) {
|
||
|
+ const char *msg = "PDF inclusion: found PDF version '%d.%d', but at most version '%d.%d' allowed";
|
||
|
if (img_errorlevel(idict) > 0) {
|
||
|
- formatted_error("pdf inclusion",msg, pdf_major_version_found, pdf_minor_version_found, img_pdfminorversion(idict));
|
||
|
+ formatted_error("pdf inclusion",msg, pdf_major_version_found, pdf_minor_version_found, img_pdfmajorversion(idict), img_pdfminorversion(idict));
|
||
|
} else {
|
||
|
- formatted_warning("pdf inclusion",msg, pdf_major_version_found, pdf_minor_version_found, img_pdfminorversion(idict));
|
||
|
+ formatted_warning("pdf inclusion",msg, pdf_major_version_found, pdf_minor_version_found, img_pdfmajorversion(idict), img_pdfminorversion(idict));
|
||
|
}
|
||
|
}
|
||
|
img_totalpages(idict) = catalog->getNumPages();
|
||
|
@@ -697,7 +693,7 @@
|
||
|
unrefPdfDocument(img_filepath(idict));
|
||
|
}
|
||
|
|
||
|
- and also unref'd in the finalizer zo we got an extra unrefs when garbage was
|
||
|
+ and also unref'd in the finalizer so we got an extra unrefs when garbage was
|
||
|
collected. However it is more efficient to keep the file open so we do that
|
||
|
now. The (slower) alternative is to unref here (which in most cases forcing a
|
||
|
close of the file) but then we must not call flush_pdf_info.
|
||
|
@@ -745,7 +741,7 @@
|
||
|
catalog = doc->getCatalog();
|
||
|
page = catalog->getPage(img_pagenum(idict));
|
||
|
pageref = catalog->getPageRef(img_pagenum(idict));
|
||
|
- doc->getXRef()->fetch(pageref->num, pageref->gen, &pageobj);
|
||
|
+ pageobj = doc->getXRef()->fetch(pageref->num, pageref->gen);
|
||
|
pageDict = pageobj.getDict();
|
||
|
/* write the Page header */
|
||
|
pdf_begin_obj(pdf, img_objnum(idict), OBJSTM_NEVER);
|
||
|
@@ -762,12 +758,11 @@
|
||
|
pdf_dict_add_int(pdf, "PTEX.PageNumber", (int) img_pagenum(idict));
|
||
|
}
|
||
|
if ((suppress_optional_info & 8) == 0) {
|
||
|
- doc->getDocInfoNF(&obj1);
|
||
|
+ obj1 = doc->getDocInfoNF();
|
||
|
if (obj1.isRef()) {
|
||
|
/* the info dict must be indirect (PDF Ref p. 61) */
|
||
|
pdf_dict_add_ref(pdf, "PTEX.InfoDict", addInObj(pdf, pdf_doc, obj1.getRef()));
|
||
|
}
|
||
|
- obj1.free();
|
||
|
}
|
||
|
if (img_is_bbox(idict)) {
|
||
|
bbox[0] = sp2bp(img_bbox(idict)[0]);
|
||
|
@@ -793,19 +788,17 @@
|
||
|
Now all relevant parts of the Page dictionary are copied. Metadata validity
|
||
|
check is needed(as a stream it must be indirect).
|
||
|
*/
|
||
|
- pageDict->lookupNF("Metadata", &obj1);
|
||
|
+ obj1 = pageDict->lookupNF("Metadata");
|
||
|
if (!obj1.isNull() && !obj1.isRef())
|
||
|
formatted_warning("pdf inclusion","/Metadata must be indirect object");
|
||
|
- obj1.free();
|
||
|
/* copy selected items in Page dictionary */
|
||
|
for (i = 0; pagedictkeys[i] != NULL; i++) {
|
||
|
- pageDict->lookupNF(pagedictkeys[i], &obj1);
|
||
|
+ obj1 = pageDict->lookupNF(pagedictkeys[i]);
|
||
|
if (!obj1.isNull()) {
|
||
|
pdf_add_name(pdf, pagedictkeys[i]);
|
||
|
/* preserves indirection */
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
}
|
||
|
- obj1.free();
|
||
|
}
|
||
|
/*
|
||
|
If there are no Resources in the Page dict of the embedded page,
|
||
|
@@ -813,32 +806,28 @@
|
||
|
PDF file, climbing up the tree until the Resources are found.
|
||
|
(This fixes a problem with Scribus 1.3.3.14.)
|
||
|
*/
|
||
|
- pageDict->lookupNF("Resources", &obj1);
|
||
|
+ obj1 = pageDict->lookupNF("Resources");
|
||
|
if (obj1.isNull()) {
|
||
|
op1 = &pagesobj1;
|
||
|
op2 = &pagesobj2;
|
||
|
- pageDict->lookup("Parent", op1);
|
||
|
+ *op1 = pageDict->lookup("Parent");
|
||
|
while (op1->isDict()) {
|
||
|
- obj1.free();
|
||
|
- op1->dictLookupNF("Resources", &obj1);
|
||
|
+ obj1 = op1->dictLookupNF("Resources");
|
||
|
if (!obj1.isNull()) {
|
||
|
pdf_add_name(pdf, "Resources");
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
break;
|
||
|
}
|
||
|
- op1->dictLookup("Parent", op2);
|
||
|
+ *op2 = op1->dictLookup("Parent");
|
||
|
optmp = op1;
|
||
|
op1 = op2;
|
||
|
op2 = optmp;
|
||
|
- op2->free();
|
||
|
};
|
||
|
if (!op1->isDict())
|
||
|
formatted_warning("pdf inclusion","Page /Resources missing");
|
||
|
- op1->free();
|
||
|
}
|
||
|
- obj1.free();
|
||
|
/* Write the Page contents. */
|
||
|
- page->getContents(&contents);
|
||
|
+ contents = page->getContents();
|
||
|
if (contents.isStream()) {
|
||
|
/*
|
||
|
Variant A: get stream and recompress under control of \pdfcompresslevel
|
||
|
@@ -849,27 +838,23 @@
|
||
|
|
||
|
Variant B: copy stream without recompressing
|
||
|
*/
|
||
|
- contents.streamGetDict()->lookup("F", &obj1);
|
||
|
+ obj1 = contents.streamGetDict()->lookup("F");
|
||
|
if (!obj1.isNull()) {
|
||
|
normal_error("pdf inclusion","unsupported external stream");
|
||
|
}
|
||
|
- obj1.free();
|
||
|
- contents.streamGetDict()->lookup("Length", &obj1);
|
||
|
+ obj1 = contents.streamGetDict()->lookup("Length");
|
||
|
pdf_add_name(pdf, "Length");
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
- obj1.free();
|
||
|
- contents.streamGetDict()->lookup("Filter", &obj1);
|
||
|
+ obj1 = contents.streamGetDict()->lookup("Filter");
|
||
|
if (!obj1.isNull()) {
|
||
|
pdf_add_name(pdf, "Filter");
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
- obj1.free();
|
||
|
- contents.streamGetDict()->lookup("DecodeParms", &obj1);
|
||
|
+ obj1 = contents.streamGetDict()->lookup("DecodeParms");
|
||
|
if (!obj1.isNull()) {
|
||
|
pdf_add_name(pdf, "DecodeParms");
|
||
|
copyObject(pdf, pdf_doc, &obj1);
|
||
|
}
|
||
|
}
|
||
|
- obj1.free();
|
||
|
pdf_end_dict(pdf);
|
||
|
pdf_begin_stream(pdf);
|
||
|
copyStreamStream(pdf, contents.getStream()->getUndecodedStream());
|
||
|
@@ -880,8 +865,8 @@
|
||
|
pdf_end_dict(pdf);
|
||
|
pdf_begin_stream(pdf);
|
||
|
for (i = 0, l = contents.arrayGetLength(); i < l; ++i) {
|
||
|
- copyStreamStream(pdf, (contents.arrayGet(i, &obj1))->getStream());
|
||
|
- obj1.free();
|
||
|
+ obj1 = contents.arrayGet(i);
|
||
|
+ copyStreamStream(pdf, obj1.getStream());
|
||
|
if (i < (l - 1)) {
|
||
|
/*
|
||
|
Put a space between streams to be on the safe side (streams
|
||
|
@@ -902,14 +887,18 @@
|
||
|
}
|
||
|
/* write out all indirect objects */
|
||
|
writeRefs(pdf, pdf_doc);
|
||
|
- contents.free();
|
||
|
- pageobj.free();
|
||
|
/*
|
||
|
unrefPdfDocument() must come after contents.free() and pageobj.free()!
|
||
|
TH: The next line makes repeated pdf inclusion unacceptably slow
|
||
|
|
||
|
unrefPdfDocument(img_filepath(idict));
|
||
|
*/
|
||
|
+
|
||
|
+if (! img_keepopen(idict)) {
|
||
|
+ unrefPdfDocument(img_filepath(idict));
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
}
|
||
|
|
||
|
/* Deallocate a PdfDocument with all its resources. */
|
||
|
--- ./texk/web2c/luatexdir/lua/lepdflib.cc 2017-03-11 01:04:06.000000000 +0000
|
||
|
+++ ../lepdflib.cc 2018-01-23 08:07:59.790233165 +0000
|
||
|
@@ -21,7 +21,9 @@
|
||
|
|
||
|
#include "image/epdf.h"
|
||
|
|
||
|
-
|
||
|
+// Patches for the new poppler 0.59 from
|
||
|
+// https://www.mail-archive.com/arch-commits@archlinux.org/msg357548.html
|
||
|
+// with some modifications to comply the poppler API.
|
||
|
|
||
|
// define DEBUG
|
||
|
|
||
|
@@ -253,6 +255,12 @@
|
||
|
lua_settable(L,-3)
|
||
|
|
||
|
|
||
|
+#define OBJECT_TYPE(name) \
|
||
|
+ lua_pushstring(L, #name); \
|
||
|
+ lua_pushinteger(L, (int)name); \
|
||
|
+ lua_settable(L,-3)
|
||
|
+
|
||
|
+
|
||
|
#define STRUCTELEMENT_TYPE_ENTRY(name) \
|
||
|
lua_pushstring(L, #name); \
|
||
|
lua_pushinteger(L, StructElement::name); \
|
||
|
@@ -306,6 +314,28 @@
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
+static int l_Object_Type(lua_State * L) {
|
||
|
+ lua_createtable(L,0,16);/*nr of ObjType values*/ ;
|
||
|
+ OBJECT_TYPE(objBool);
|
||
|
+ OBJECT_TYPE(objInt);
|
||
|
+ OBJECT_TYPE(objReal);
|
||
|
+ OBJECT_TYPE(objString);
|
||
|
+ OBJECT_TYPE(objName);
|
||
|
+ OBJECT_TYPE(objNull);
|
||
|
+ OBJECT_TYPE(objArray);
|
||
|
+ OBJECT_TYPE(objDict);
|
||
|
+ OBJECT_TYPE(objStream);
|
||
|
+ OBJECT_TYPE(objRef);
|
||
|
+ OBJECT_TYPE(objCmd);
|
||
|
+ OBJECT_TYPE(objError);
|
||
|
+ OBJECT_TYPE(objEOF);
|
||
|
+ OBJECT_TYPE(objNone);
|
||
|
+ OBJECT_TYPE(objInt64);
|
||
|
+ OBJECT_TYPE(objDead);
|
||
|
+ return 1;
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
static int l_StructElement_Type(lua_State * L) {
|
||
|
lua_createtable (L, 0, 50);
|
||
|
STRUCTELEMENT_TYPE_ENTRY(Document);
|
||
|
@@ -398,14 +428,136 @@
|
||
|
static int l_new_Object(lua_State * L)
|
||
|
{
|
||
|
udstruct *uout;
|
||
|
+ int n = lua_gettop(L); // number of arguments
|
||
|
uout = new_Object_userdata(L);
|
||
|
- uout->d = new Object(); // automatic init to type "none"
|
||
|
- uout->atype = ALLOC_LEPDF;
|
||
|
- uout->pc = 0;
|
||
|
- uout->pd = NULL; // not connected to any PDFDoc
|
||
|
+ switch(n) {
|
||
|
+ case 0:
|
||
|
+ uout->d = new Object(); // automatic init to type "none"
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL; // not connected to any PDFDoc
|
||
|
+ break;
|
||
|
+ case 1:
|
||
|
+ if (lua_isboolean (L,1)) {
|
||
|
+ uout->d = new Object(lua_toboolean(L, 1)? gTrue : gFalse);
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ } else if (lua_isnumber (L,1)) {
|
||
|
+ double d = lua_tonumber(L,1);
|
||
|
+ // Missed :Object(long long int64gA)
|
||
|
+ if (d==((int)d)) {
|
||
|
+ uout->d = new Object((int)d);
|
||
|
+ } else {
|
||
|
+ uout->d = new Object(d);
|
||
|
+ }
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ } else if (lua_isstring (L,1)){
|
||
|
+ GooString *gs;
|
||
|
+ const char *s;
|
||
|
+ size_t len;
|
||
|
+ s = luaL_checklstring(L, 2, &len);
|
||
|
+ gs = new GooString(s, len);
|
||
|
+ uout->d = new Object(gs);
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ } else if (luaL_testudata(L,1,M_Array)){
|
||
|
+ udstruct *u;
|
||
|
+ Array *a;
|
||
|
+ u = (udstruct *) luaL_checkudata(L, 1, M_Array);
|
||
|
+ a = (Array *)u->d;
|
||
|
+ uout->d = new Object(a);
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ } else if (luaL_testudata(L,1,M_Dict)){
|
||
|
+ udstruct *u;
|
||
|
+ Dict *d;
|
||
|
+ u = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
||
|
+ d = (Dict *)u->d;
|
||
|
+ uout->d = new Object(d);
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ } else if (luaL_testudata(L,1,M_Stream)){
|
||
|
+ udstruct *u;
|
||
|
+ Stream *s;
|
||
|
+ u = (udstruct *) luaL_checkudata(L, 1, M_Stream);
|
||
|
+ s = (Stream *)u->d;
|
||
|
+ *((Object *) uout->d) = Object(s);
|
||
|
+ } else
|
||
|
+ luaL_error(L, "Invalid/unsupported value for Object constructor");
|
||
|
+ break;
|
||
|
+ case 2:
|
||
|
+ if (lua_isnumber (L,1) && lua_isnumber (L,2)) {
|
||
|
+ double numA = lua_tonumber(L,1);
|
||
|
+ double genA = lua_tonumber(L,2);
|
||
|
+ if ( ((numA)==(int)(numA)) && ((genA)==(int)(genA)) ){
|
||
|
+ uout->d = new Object((int)(numA), (int)(genA));
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+ }
|
||
|
+ } else if (lua_isnumber (L,1) && (lua_isstring(L,2)|| lua_isnoneornil(L,2))) {
|
||
|
+ double d_typeA = lua_tonumber(L,1);
|
||
|
+ int typeA = (int)(d_typeA);
|
||
|
+ if (d_typeA==typeA){
|
||
|
+ switch((int)(typeA)) {
|
||
|
+ case objBool:
|
||
|
+ case objInt:
|
||
|
+ case objReal:
|
||
|
+ case objString:
|
||
|
+ case objName:
|
||
|
+ case objNull:
|
||
|
+ case objArray:
|
||
|
+ case objDict:
|
||
|
+ case objStream:
|
||
|
+ case objRef:
|
||
|
+ case objCmd:
|
||
|
+ case objError:
|
||
|
+ case objEOF:
|
||
|
+ case objNone:
|
||
|
+ case objInt64:
|
||
|
+ case objDead:
|
||
|
+ if (lua_isstring(L,2))
|
||
|
+ uout->d = new Object((ObjType)(typeA), luaL_checkstring(L, 2));
|
||
|
+ else
|
||
|
+ uout->d = new Object((ObjType)(typeA));
|
||
|
+ uout->atype = ALLOC_LEPDF;
|
||
|
+ uout->pc = 0;
|
||
|
+ uout->pd = NULL;
|
||
|
+
|
||
|
+ break;
|
||
|
+ default:
|
||
|
+ luaL_error(L, "Invalid values for Object constructor");
|
||
|
+ break;
|
||
|
+ }//switch((int)(d))
|
||
|
+ } else // (d_typeA)!=(typeA)
|
||
|
+ luaL_error(L, "Invalid/unsupported values for Object constructor");
|
||
|
+ } // if (lua_isnumber (L,1) && (lua_isstring(L,2)|| lua_isnoneornil(L,2)))
|
||
|
+ break;
|
||
|
+ default:
|
||
|
+ luaL_error(L, "Invalid specification for Object constructor");
|
||
|
+ }
|
||
|
+ lua_settop(L,1);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
+// static int l_new_Object(lua_State * L)
|
||
|
+// {
|
||
|
+// udstruct *uout;
|
||
|
+// uout = new_Object_userdata(L);
|
||
|
+// uout->d = new Object(); // automatic init to type "none"
|
||
|
+// uout->atype = ALLOC_LEPDF;
|
||
|
+// uout->pc = 0;
|
||
|
+// uout->pd = NULL; // not connected to any PDFDoc
|
||
|
+// return 1;
|
||
|
+// }
|
||
|
+
|
||
|
+
|
||
|
// PDFRectangle see Page.h
|
||
|
|
||
|
static int l_new_PDFRectangle(lua_State * L)
|
||
|
@@ -429,6 +581,7 @@
|
||
|
{"AttributeOwner_Type",l_AttributeOwner_Type},
|
||
|
{"Dict", l_new_Dict},
|
||
|
{"Object", l_new_Object},
|
||
|
+ {"Object_Type", l_Object_Type},
|
||
|
{"PDFRectangle", l_new_PDFRectangle},
|
||
|
{NULL, NULL} // sentinel
|
||
|
};
|
||
|
@@ -538,7 +691,7 @@
|
||
|
pdfdoc_changed_error(L); \
|
||
|
uout = new_Object_userdata(L); \
|
||
|
uout->d = new Object(); \
|
||
|
- ((in *) uin->d)->function((Object *) uout->d); \
|
||
|
+ *((Object *)uout->d) = ((in *) uin->d)->function(); \
|
||
|
uout->atype = ALLOC_LEPDF; \
|
||
|
uout->pc = uin->pc; \
|
||
|
uout->pd = uin->pd; \
|
||
|
@@ -665,30 +818,27 @@
|
||
|
|
||
|
//**********************************************************************
|
||
|
// Array
|
||
|
-
|
||
|
-static int m_Array_incRef(lua_State * L)
|
||
|
-{
|
||
|
- int i;
|
||
|
- udstruct *uin;
|
||
|
- uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
|
||
|
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
- pdfdoc_changed_error(L);
|
||
|
- i = ((Array *) uin->d)->incRef();
|
||
|
- lua_pushinteger(L, i);
|
||
|
- return 1;
|
||
|
-}
|
||
|
-
|
||
|
-static int m_Array_decRef(lua_State * L)
|
||
|
-{
|
||
|
- int i;
|
||
|
- udstruct *uin;
|
||
|
- uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
|
||
|
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
- pdfdoc_changed_error(L);
|
||
|
- i = ((Array *) uin->d)->decRef();
|
||
|
- lua_pushinteger(L, i);
|
||
|
- return 1;
|
||
|
-}
|
||
|
+// Now private
|
||
|
+// static int m_Array_incRef(lua_State * L)
|
||
|
+// {
|
||
|
+// udstruct *uin;
|
||
|
+// uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
|
||
|
+// if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
+// pdfdoc_changed_error(L);
|
||
|
+// lua_pushinteger(L, 1);
|
||
|
+// return 1;
|
||
|
+// }
|
||
|
+// Now private
|
||
|
+// static int m_Array_decRef(lua_State * L)
|
||
|
+// {
|
||
|
+// int i;
|
||
|
+// udstruct *uin;
|
||
|
+// uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
|
||
|
+// if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
+// pdfdoc_changed_error(L);
|
||
|
+// lua_pushinteger(L, 1);
|
||
|
+// return 1;
|
||
|
+// }
|
||
|
|
||
|
m_poppler_get_INT(Array, getLength);
|
||
|
|
||
|
@@ -702,7 +852,7 @@
|
||
|
if ((uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
|| (uobj->pd != NULL && uobj->pd->pc != uobj->pc))
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Array *) uin->d)->add(((Object *) uobj->d));
|
||
|
+ ((Array *) uin->d)->add(std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -718,7 +868,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Array *) uin->d)->get(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Array *) uin->d)->get(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -739,7 +889,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Array *) uin->d)->getNF(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -773,8 +923,8 @@
|
||
|
m_poppler__tostring(Array);
|
||
|
|
||
|
static const struct luaL_Reg Array_m[] = {
|
||
|
- {"incRef", m_Array_incRef},
|
||
|
- {"decRef", m_Array_decRef},
|
||
|
+ // {"incRef", m_Array_incRef},// Now private
|
||
|
+ // {"decRef", m_Array_decRef},// Now private
|
||
|
{"getLength", m_Array_getLength},
|
||
|
{"add", m_Array_add},
|
||
|
{"get", m_Array_get},
|
||
|
@@ -950,30 +1100,26 @@
|
||
|
|
||
|
//**********************************************************************
|
||
|
// Dict
|
||
|
-
|
||
|
-static int m_Dict_incRef(lua_State * L)
|
||
|
-{
|
||
|
- int i;
|
||
|
- udstruct *uin;
|
||
|
- uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
||
|
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
- pdfdoc_changed_error(L);
|
||
|
- i = ((Dict *) uin->d)->incRef();
|
||
|
- lua_pushinteger(L, i);
|
||
|
- return 1;
|
||
|
-}
|
||
|
-
|
||
|
-static int m_Dict_decRef(lua_State * L)
|
||
|
-{
|
||
|
- int i;
|
||
|
- udstruct *uin;
|
||
|
- uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
||
|
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
- pdfdoc_changed_error(L);
|
||
|
- i = ((Dict *) uin->d)->decRef();
|
||
|
- lua_pushinteger(L, i);
|
||
|
- return 1;
|
||
|
-}
|
||
|
+// Now private
|
||
|
+// static int m_Dict_incRef(lua_State * L)
|
||
|
+// {
|
||
|
+// udstruct *uin;
|
||
|
+// uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
||
|
+// if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
+// pdfdoc_changed_error(L);
|
||
|
+// lua_pushinteger(L, 1);
|
||
|
+// return 1;
|
||
|
+// }
|
||
|
+// Now private
|
||
|
+// static int m_Dict_decRef(lua_State * L)
|
||
|
+// {
|
||
|
+// udstruct *uin;
|
||
|
+// uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
||
|
+// if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
+// pdfdoc_changed_error(L);
|
||
|
+// lua_pushinteger(L, 1);
|
||
|
+// return 1;
|
||
|
+// }
|
||
|
|
||
|
m_poppler_get_INT(Dict, getLength);
|
||
|
|
||
|
@@ -986,7 +1132,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
s = copyString(luaL_checkstring(L, 2));
|
||
|
uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
|
||
|
- ((Dict *) uin->d)->add(s, ((Object *) uobj->d));
|
||
|
+ ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -999,7 +1145,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
s = luaL_checkstring(L, 2);
|
||
|
uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
|
||
|
- ((Dict *) uin->d)->set(s, ((Object *) uobj->d));
|
||
|
+ ((Dict *) uin->d)->set(s, std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1027,7 +1173,7 @@
|
||
|
s = luaL_checkstring(L, 2);
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Dict *) uin->d)->lookup(s, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Dict *) uin->d)->lookup(s);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1044,7 +1190,7 @@
|
||
|
s = luaL_checkstring(L, 2);
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Dict *) uin->d)->lookupNF(s, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1096,7 +1242,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Dict *) uin->d)->getVal(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Dict *) uin->d)->getVal(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1117,7 +1263,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Dict *) uin->d)->getValNF(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1131,8 +1277,8 @@
|
||
|
m_poppler__tostring(Dict);
|
||
|
|
||
|
static const struct luaL_Reg Dict_m[] = {
|
||
|
- {"incRef", m_Dict_incRef},
|
||
|
- {"decRef", m_Dict_decRef},
|
||
|
+ // {"incRef", m_Dict_incRef},// Now private
|
||
|
+ // {"decRef", m_Dict_decRef},// Now private
|
||
|
{"getLength", m_Dict_getLength},
|
||
|
{"add", m_Dict_add},
|
||
|
{"set", m_Dict_set},
|
||
|
@@ -1381,9 +1527,9 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
luaL_checktype(L, 2, LUA_TBOOLEAN);
|
||
|
if (lua_toboolean(L, 2) != 0)
|
||
|
- ((Object *) uin->d)->initBool(gTrue);
|
||
|
+ *((Object *) uin->d) = Object(gTrue);
|
||
|
else
|
||
|
- ((Object *) uin->d)->initBool(gFalse);
|
||
|
+ *((Object *) uin->d) = Object(gFalse);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1395,7 +1541,7 @@
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
i = luaL_checkint(L, 2);
|
||
|
- ((Object *) uin->d)->initInt(i);
|
||
|
+ *((Object *) uin->d) = Object(i);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1407,7 +1553,7 @@
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
d = luaL_checknumber(L, 2);
|
||
|
- ((Object *) uin->d)->initReal(d);
|
||
|
+ *((Object *) uin->d) = Object(d);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1422,7 +1568,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
s = luaL_checklstring(L, 2, &len);
|
||
|
gs = new GooString(s, len);
|
||
|
- ((Object *) uin->d)->initString(gs);
|
||
|
+ *((Object *) uin->d) = Object(gs);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1434,7 +1580,7 @@
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
s = luaL_checkstring(L, 2);
|
||
|
- ((Object *) uin->d)->initName(s);
|
||
|
+ *((Object *) uin->d) = Object(objName, s);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1444,13 +1590,14 @@
|
||
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initNull();
|
||
|
+ *((Object *) uin->d) = Object(objNull);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static int m_Object_initArray(lua_State * L)
|
||
|
{
|
||
|
udstruct *uin, *uxref;
|
||
|
+ Array *a;
|
||
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
|
||
|
uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef);
|
||
|
if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd)
|
||
|
@@ -1458,7 +1605,8 @@
|
||
|
if ((uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
|| (uxref->pd != NULL && uxref->pd->pc != uxref->pc))
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initArray((XRef *) uxref->d);
|
||
|
+ a = new Array((XRef *) uxref->d);
|
||
|
+ *((Object *) uin->d) = Object(a);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1469,6 +1617,7 @@
|
||
|
static int m_Object_initDict(lua_State * L)
|
||
|
{
|
||
|
udstruct *uin, *uxref;
|
||
|
+ Dict *d;
|
||
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
|
||
|
uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef);
|
||
|
if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd)
|
||
|
@@ -1476,7 +1625,8 @@
|
||
|
if ((uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
|| (uxref->pd != NULL && uxref->pd->pc != uxref->pc))
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initDict((XRef *) uxref->d);
|
||
|
+ d = new Dict((XRef *) uxref->d);
|
||
|
+ *((Object *) uin->d) = Object(d);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1490,7 +1640,7 @@
|
||
|
if ((uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
|| (ustream->pd != NULL && ustream->pd->pc != ustream->pc))
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initStream((Stream *) ustream->d);
|
||
|
+ *((Object *) uin->d) = Object((Stream *) ustream->d);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1503,7 +1653,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
num = luaL_checkint(L, 2);
|
||
|
gen = luaL_checkint(L, 3);
|
||
|
- ((Object *) uin->d)->initRef(num, gen);
|
||
|
+ *((Object *) uin->d) = Object(num, gen);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1515,7 +1665,7 @@
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
s = luaL_checkstring(L, 2);
|
||
|
- ((Object *) uin->d)->initCmd(CHARP_CAST s);
|
||
|
+ *((Object *) uin->d) = Object(objCmd, CHARP_CAST s);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1525,7 +1675,7 @@
|
||
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initError();
|
||
|
+ *((Object *) uin->d) = Object(objError);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1535,7 +1685,7 @@
|
||
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
|
||
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
||
|
pdfdoc_changed_error(L);
|
||
|
- ((Object *) uin->d)->initEOF();
|
||
|
+ *((Object *) uin->d) = Object(objEOF);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1551,7 +1701,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->fetch((XRef *) uxref->d, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->fetch((XRef *) uxref->d);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1816,7 +1966,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
if (!((Object *) uin->d)->isArray())
|
||
|
luaL_error(L, "Object is not an Array");
|
||
|
- ((Object *) uin->d)->arrayAdd((Object *) uobj->d);
|
||
|
+ ((Object *) uin->d)->arrayAdd(std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1833,7 +1983,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->arrayGet(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGet(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1857,7 +2007,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->arrayGetNF(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1897,7 +2047,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
if (!((Object *) uin->d)->isDict())
|
||
|
luaL_error(L, "Object is not a Dict");
|
||
|
- ((Object *) uin->d)->dictAdd(copyString(s), (Object *) uobj->d);
|
||
|
+ ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1915,7 +2065,7 @@
|
||
|
pdfdoc_changed_error(L);
|
||
|
if (!((Object *) uin->d)->isDict())
|
||
|
luaL_error(L, "Object is not a Dict");
|
||
|
- ((Object *) uin->d)->dictSet(s, (Object *) uobj->d);
|
||
|
+ ((Object *) uin->d)->dictSet(s, std::move(*((Object *) uobj->d)));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -1930,7 +2080,7 @@
|
||
|
if (((Object *) uin->d)->isDict()) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->dictLookup(s, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookup(s);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1950,7 +2100,7 @@
|
||
|
if (((Object *) uin->d)->isDict()) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->dictLookupNF(s, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -1991,7 +2141,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->dictGetVal(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetVal(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -2015,7 +2165,7 @@
|
||
|
if (i > 0 && i <= len) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((Object *) uin->d)->dictGetValNF(i - 1, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -2243,7 +2393,7 @@
|
||
|
m_poppler_get_poppler(Page, Dict, getPieceInfo);
|
||
|
m_poppler_get_poppler(Page, Dict, getSeparationInfo);
|
||
|
m_poppler_get_poppler(Page, Dict, getResourceDict);
|
||
|
-m_poppler_get_OBJECT(Page, getAnnots);
|
||
|
+m_poppler_get_OBJECT(Page, getAnnotsObject);
|
||
|
|
||
|
m_poppler_get_OBJECT(Page, getContents);
|
||
|
|
||
|
@@ -2270,7 +2420,7 @@
|
||
|
{"getPieceInfo", m_Page_getPieceInfo},
|
||
|
{"getSeparationInfo", m_Page_getSeparationInfo},
|
||
|
{"getResourceDict", m_Page_getResourceDict},
|
||
|
- {"getAnnots", m_Page_getAnnots},
|
||
|
+ {"getAnnotsObject", m_Page_getAnnotsObject},
|
||
|
{"getContents", m_Page_getContents},
|
||
|
{"__tostring", m_Page__tostring},
|
||
|
{NULL, NULL} // sentinel
|
||
|
@@ -2520,7 +2670,7 @@
|
||
|
if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((PdfDocument *) uin->d)->doc->getDocInfo((Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfo();
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -2538,7 +2688,7 @@
|
||
|
if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) {
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((PdfDocument *) uin->d)->doc->getDocInfoNF((Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfoNF();
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -2841,7 +2991,7 @@
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
origin = (Object *) (((Attribute *) uin->d)->getValue());
|
||
|
- origin->copy ( ((Object *)uout->d) );
|
||
|
+ *((Object *) uout->d) = origin->copy();
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -3320,7 +3470,8 @@
|
||
|
parent = root->findParentElement(i-1);
|
||
|
if (parent != NULL) {
|
||
|
uout = new_StructElement_userdata(L);
|
||
|
- uout->d = new StructElement( *parent );
|
||
|
+ // see https://isocpp.org/wiki/faq/const-correctness#aliasing-and-const
|
||
|
+ uout->d = (StructElement *) parent;
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -3331,7 +3482,6 @@
|
||
|
|
||
|
|
||
|
static const struct luaL_Reg StructTreeRoot_m[] = {
|
||
|
- {"findParentElement", m_StructTreeRoot_findParentElement},
|
||
|
{"getDoc",m_StructTreeRoot_getDoc},
|
||
|
{"getRoleMap",m_StructTreeRoot_getRoleMap},
|
||
|
{"getClassMap",m_StructTreeRoot_getClassMap},
|
||
|
@@ -3370,7 +3520,7 @@
|
||
|
gen = luaL_checkint(L, 3);
|
||
|
uout = new_Object_userdata(L);
|
||
|
uout->d = new Object();
|
||
|
- ((XRef *) uin->d)->fetch(num, gen, (Object *) uout->d);
|
||
|
+ *((Object *) uout->d) = ((XRef *) uin->d)->fetch(num, gen);
|
||
|
uout->atype = ALLOC_LEPDF;
|
||
|
uout->pc = uin->pc;
|
||
|
uout->pd = uin->pd;
|
||
|
@@ -3449,7 +3599,7 @@
|
||
|
lua_setfield(L, -2, "__index"); \
|
||
|
lua_pushstring(L, "no user access"); \
|
||
|
lua_setfield(L, -2, "__metatable"); \
|
||
|
- luaL_register(L, NULL, type##_m)
|
||
|
+ luaL_openlib(L, NULL, type##_m, 0)
|
||
|
#else
|
||
|
#define setfuncs_meta(type) \
|
||
|
luaL_newmetatable(L, M_##type); \
|
||
|
@@ -3484,6 +3634,6 @@
|
||
|
setfuncs_meta(TextSpan);
|
||
|
setfuncs_meta(XRef);
|
||
|
setfuncs_meta(XRefEntry);
|
||
|
- luaL_register(L, "epdf", epdflib_f);
|
||
|
+ luaL_openlib(L, "epdf", epdflib_f, 0);
|
||
|
return 1;
|
||
|
}
|
||
|
--- ./texk/web2c/luatexdir/lua/lpdfscannerlib.cc 2016-11-25 18:09:15.000000000 +0000
|
||
|
+++ ../lpdfscannerlib.cc 2018-01-23 08:07:59.790233165 +0000
|
||
|
@@ -634,7 +634,7 @@
|
||
|
int i;
|
||
|
for (i=0;i<count;i++) {
|
||
|
Object *val = new Object();
|
||
|
- arrayref->get(i, val);
|
||
|
+ *val = arrayref->get(i);
|
||
|
if (val->isStream()) {
|
||
|
ObjectList *rover = self->_streams;
|
||
|
ObjectList *item = (ObjectList *)priv_xmalloc (sizeof(ObjectList));
|
||
|
@@ -944,8 +944,8 @@
|
||
|
luaL_openlib(L, 0, scannerlib_meta, 0);
|
||
|
lua_pushvalue(L, -1);
|
||
|
lua_setfield(L, -2, "__index");
|
||
|
- luaL_register(L, NULL, scannerlib_m);
|
||
|
- luaL_register(L, "pdfscanner", scannerlib);
|
||
|
+ luaL_openlib(L, NULL, scannerlib_m, 0);
|
||
|
+ luaL_openlib(L, "pdfscanner", scannerlib, 0);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
--- ./texk/web2c/luatexdir/image/image.h 2017-02-04 01:04:04.000000000 +0000
|
||
|
+++ ../image.h 2018-01-23 09:09:10.241949055 +0000
|
||
|
@@ -126,6 +126,7 @@
|
||
|
int luaref ;
|
||
|
boolean keepopen;
|
||
|
int errorlevel;
|
||
|
+ int pdfmajorversion;
|
||
|
int pdfminorversion;
|
||
|
union {
|
||
|
pdf_stream_struct *pdfstream;
|
||
|
@@ -171,6 +172,7 @@
|
||
|
# define img_luaref(N) ((N)->luaref)
|
||
|
# define img_keepopen(N) ((N)->keepopen)
|
||
|
# define img_errorlevel(N) ((N)->errorlevel)
|
||
|
+# define img_pdfmajorversion(N) ((N)->pdfmajorversion)
|
||
|
# define img_pdfminorversion(N) ((N)->pdfminorversion)
|
||
|
|
||
|
# define img_pdfstream_ptr(N) ((N)->img_struct.pdfstream)
|