summaryrefslogtreecommitdiff
path: root/tex/context/base/lpdf-ini.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/lpdf-ini.lua')
-rw-r--r--tex/context/base/lpdf-ini.lua48
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" }