diff options
Diffstat (limited to 'tex/context/base/lpdf-ini.lua')
-rw-r--r-- | tex/context/base/lpdf-ini.lua | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua index 07e1962cd..0a98f150b 100644 --- a/tex/context/base/lpdf-ini.lua +++ b/tex/context/base/lpdf-ini.lua @@ -342,16 +342,21 @@ lpdf.verbose = pdfverbose local names, cache = { }, { } function lpdf.reserveobject(name) - local r = pdfreserveobject() - if name then - names[name] = r - if trace_objects then - report_backends("reserving object number %s under name '%s'",r,name) + if name == "annot" then + -- catch misuse + return pdfreserveobject("annot") + else + local r = pdfreserveobject() + if name then + names[name] = r + if trace_objects then + report_backends("reserving object number %s under name '%s'",r,name) + end + elseif trace_objects then + report_backends("reserving object number %s",r) end - elseif trace_objects then - report_backends("reserving object number %s",r) + return r end - return r end function lpdf.reserveannotation() @@ -409,15 +414,34 @@ function lpdf.flushobject(name,data) end end -function lpdf.sharedobject(content) - local r = cache[content] +local shareobjectcache, shareobjectreferencecache = { }, { } + +function lpdf.shareobject(content) + content = tostring(content) + local o = shareobjectcache[content] + if not o then + o = pdfimmediateobject(content) + shareobjectcache[content] = o + end + return o +end + +function lpdf.shareobjectreference(content) + content = tostring(content) + local r = shareobjectreferencecache[content] if not r then - r = pdfreference(pdfimmediateobject(content)) - cache[content] = r + local o = shareobjectcache[content] + if not o then + o = pdfimmediateobject(content) + shareobjectcache[content] = o + end + r = pdfreference(o) + shareobjectreferencecache[content] = r end return r end + --~ local d = lpdf.dictionary() --~ local e = lpdf.dictionary { ["e"] = "abc", x = lpdf.dictionary { ["f"] = "ABC" } } --~ local f = lpdf.dictionary { ["f"] = "ABC" } |