summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua453
1 files changed, 0 insertions, 453 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua b/Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua
deleted file mode 100644
index 7363cfcae4d..00000000000
--- a/Master/texmf-dist/tex/context/base/mkiv/back-pdp.lua
+++ /dev/null
@@ -1,453 +0,0 @@
-if not modules then modules = { } end modules ['back-pdp'] = {
- version = 1.001,
- comment = "companion to lpdf-ini.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- This is temporary ... awaiting a better test .. basically we can
--- always use this: pdf primitives.
-
-local context = context
-
-local lpdfreserveobject = lpdf.reserveobject
-local lpdfcompresslevel = lpdf.compresslevel
-local lpdfobj = lpdf.obj
-local lpdfpagereference = lpdf.pagereference
-local lpdfxformname = lpdf.xformname
-
-local jobpositions = job.positions
-local gethpos = jobpositions.gethpos
-local getvpos = jobpositions.getvpos
-
-local tokenscanners = tokens.scanners
-local scanword = tokenscanners.word
-local scankeyword = tokenscanners.keyword
-local scanstring = tokenscanners.string
-local scaninteger = tokenscanners.integer
-local scandimension = tokenscanners.dimension
-
-local trace = false trackers.register("commands", function(v) trace = v end)
-local report = logs.reporter("command")
-
-local nodepool = nodes.pool
-local newsavepos = nodepool.savepos
-local newliteral = nodepool.literal
-local newsave = nodepool.save
-local newrestore = nodepool.restore
-local newsetmatrix = nodepool.setmatrix
-
-local implement = interfaces.implement
-local constants = interfaces.constants
-local variables = interfaces.variables
-
--- helper
-
-local function scanwhd()
- local width, height, depth
- while true do
- if scankeyword("width") then
- width = scandimension()
- elseif scankeyword("height") then
- height = scandimension()
- elseif scankeyword("depth") then
- depth = scandimension()
- else
- break
- end
- end
- if width or height or depth then
- return width or 0, height or 0, depth or 0
- else
- -- we inherit
- end
-end
-
--- positions
-
-local function savepos()
- context(newsavepos())
-end
-
-local function lastxpos()
- context(gethpos())
-end
-
-local function lastypos()
- context(getvpos())
-end
-
-implement { name = "savepos", actions = savepos }
-implement { name = "lastxpos", actions = lastxpos }
-implement { name = "lastypos", actions = lastypos }
-
--- literals
-
-local function pdfliteral()
- context(newliteral(scanword() or "origin",scanstring()))
-end
-
-implement { name = "pdfliteral", actions = pdfliteral }
-
--- box resources
-
-local boxresources = tex.boxresources
-local savebox = boxresources.save
-local usebox = boxresources.use
-
-local lastindex = 0
-
-local function saveboxresource()
- local immediate = true
- local kind = scankeyword("type") and scaninteger() or 0
- local attributes = scankeyword("attr") and scanstring() or nil
- local resources = scankeyword("resources") and scanstring() or nil
- local margin = scankeyword("margin") and scandimension() or 0 -- register
- local boxnumber = scaninteger()
- --
- lastindex = savebox(boxnumber,attributes,resources,immediate,kind,margin)
- if trace then
- report("\\saveboxresource: index %i",lastindex)
- end
-end
-
-local function lastsavedboxresourceindex()
- if trace then
- report("\\lastsaveboxresource: index %i",lastindex)
- end
- context("%i",lastindex)
-end
-
-local function useboxresource()
- local width, height, depth = scanwhd()
- local index = scaninteger()
- local node = usebox(index,width,height,depth)
- if trace then
- report("\\useboxresource: index %i",index)
- end
- context(node)
-end
-
-implement { name = "saveboxresource", actions = saveboxresource }
-implement { name = "lastsavedboxresourceindex", actions = lastsavedboxresourceindex }
-implement { name = "useboxresource", actions = useboxresource }
-
--- image resources (messy: will move)
-
-local imageresources = { }
-local lastindex = 0
-local lastpages = 1
-
-local function saveimageresource()
- local width, height, depth = scanwhd()
- local page = 1
- local immediate = true
- local margin = 0 -- or dimension
- local attributes = scankeyword("attr") and scanstring() or nil
- if scankeyword("named") then
- scanstring() -- ignored
- elseif scankeyword("page") then
- page = scaninteger()
- end
- local userpassword = scankeyword("userpassword") and scanstring() or nil
- local ownerpassword = scankeyword("ownerpassword") and scanstring() or nil
- local visiblefilename = scankeyword("visiblefilename") and scanstring() or nil
- local colorspace = scankeyword("colorspace") and scaninteger() or nil
- local pagebox = scanword() or nil
- local filename = scanstring()
--- pcall
- context.getfiguredimensions( { filename }, {
- [constants.userpassword] = userpassword,
- [constants.ownerpassword] = ownerpassword,
- [constants.page] = page or 1,
- [constants.size] = pagebox,
- })
- context.relax()
- lastindex = lastindex + 1
- lastpages = 1
- imageresources[lastindex] = {
- filename = filename,
- page = page or 1,
- size = pagebox,
- width = width,
- height = height,
- depth = depth,
- attr = attributes,
- -- margin = margin,
- }
-end
-
-local function lastsavedimageresourceindex()
- context("%i",lastindex or 0)
-end
-
-local function lastsavedimageresourcepages()
- context("%i",lastpages or 0) -- todo
-end
-
-local function useimageresource()
- local width, height, depth = scanwhd()
- if scankeyword("keepopen") then
- -- ignored
- end
- local index = scaninteger()
- local l = imageresources[index]
- if l then
- if not (width or height or depth) then
- width = l.width
- height = l.height
- depth = l.depth
- end
--- pcall
- context.externalfigure( { l.filename }, {
- [constants.userpassword] = l.userpassword,
- [constants.ownerpassword] = l.ownerpassword,
- [constants.width] = width and (width .. "sp") or nil,
- [constants.height] = height and (height .. "sp") or nil,
- [constants.page] = l.page or 1,
- [constants.size] = pagebox,
- })
- context.relax()
- else
- print("no image resource",index)
- end
-end
-
-implement { name = "saveimageresource", actions = saveimageresource }
-implement { name = "lastsavedimageresourceindex", actions = lastsavedimageresourceindex }
-implement { name = "lastsavedimageresourcepages", actions = lastsavedimageresourcepages }
-implement { name = "useimageresource", actions = useimageresource }
-
--- objects
-
-local lastobjnum = 0
-
-local function pdfobj()
- if scankeyword("reserveobjnum") then
- lastobjnum = lpdfreserveobject()
- if trace then
- report("\\pdfobj reserveobjnum: object %i",lastobjnum)
- end
- else
- local immediate = true
- local objnum = scankeyword("useobjnum") and scaninteger() or lpdfreserveobject()
- local uncompress = scankeyword("uncompressed") or lpdfcompresslevel() == 0
- local streamobject = scankeyword("stream") and true or false
- local attributes = scankeyword("attr") and scanstring()
- local fileobject = scankeyword("file")
- local content = scanstring()
- local object = {
- immediate = immediate,
- attr = attributes,
- objnum = objnum,
- type = streamobject and "stream" or nil,
- compresslevel = uncompress and 0 or nil,
- }
- if fileobject then
- object.filename = content
- else
- object.string = content
- end
- lpdfobj(object)
- lastobjnum = objnum
- if trace then
- report("\\pdfobj: object %i",lastobjnum)
- end
- end
-end
-
-local function pdflastobj()
- context("%i",lastobjnum)
- if trace then
- report("\\lastobj: object %i",lastobjnum)
- end
-end
-
-local function pdfrefobj()
- local objnum = scaninteger()
- if trace then
- report("\\refobj: object %i (todo)",objnum)
- end
-end
-
-implement { name = "pdfobj", actions = pdfobj }
-implement { name = "pdflastobj", actions = pdflastobj }
-implement { name = "pdfrefobj", actions = pdfrefobj }
-
--- annotations
-
-local lastobjnum = 0
-
-local function pdfannot()
- if scankeyword("reserveobjnum") then
- lastobjnum = lpdfreserveobject()
- if trace then
- report("\\pdfannot reserveobjnum: object %i",lastobjnum)
- end
- else
- local width = false
- local height = false
- local depth = false
- local data = false
- local object = false
- local attr = false
- --
- if scankeyword("useobjnum") then
- object = scancount()
- report("\\pdfannot useobjectnum is not (yet) supported")
- end
- local width, height, depth = scanwhd()
- if scankeyword("attr") then
- attr = scanstring()
- end
- data = scanstring()
- context(backends.nodeinjections.annotation(width or 0,height or 0,depth or 0,data or ""))
- end
-end
-
-implement { name = "pdfannot", actions = pdfannot }
-
-local function pdfdest()
- local name = false
- local zoom = false
- local view = false
- local width = false
- local height = false
- local depth = false
- if scankeyword("num") then
- report("\\pdfdest num is not (yet) supported")
- elseif scankeyword("name") then
- name = scanstring()
- end
- if scankeyword("xyz") then
- view = "xyz"
- if scankeyword("zoom") then
- report("\\pdfdest zoom is ignored")
- zoom = scancount() -- will be divided by 1000 in the backend
- end
- elseif scankeyword("fitbh") then
- view = "fitbh"
- elseif scankeyword("fitbv") then
- view = "fitbv"
- elseif scankeyword("fitb") then
- view = "fitb"
- elseif scankeyword("fith") then
- view = "fith"
- elseif scankeyword("fitv") then
- view = "fitv"
- elseif scankeyword("fitr") then
- view = "fitr"
- width, height, depth = scanwhd()
- elseif scankeyword("fit") then
- view = "fit"
- end
- context(backends.nodeinjections.destination(width or 0,height or 0,depth or 0,{ name or "" },view or "fit"))
-end
-
-implement { name = "pdfdest", actions = pdfdest }
-
--- management
-
-
-local function pdfsave()
- context(newsave())
-end
-
-local function pdfrestore()
- context(newrestore())
-end
-
-local function pdfsetmatrix()
- context(newsetmatrix(scanstring()))
-end
-
-
--- extras
-
-local function pdfpageref()
- context(lpdfpagereference())
-end
-
-local function pdfxformname()
- context(lpdfxformname())
-end
-
--- extensions: literal dest annot save restore setmatrix obj refobj colorstack
--- startlink endlink startthread endthread thread outline glyphtounicode fontattr
--- mapfile mapline includechars catalog info names trailer
-
-local extensions = {
- literal = pdfliteral,
- obj = pdfobj,
- refobj = pdfrefobj,
- dest = pdfdest,
- annot = pdfannot,
- save = pdfsave,
- restore = pdfrestore,
- setmatrix = pdfsetmatrix,
-}
-
-local function pdfextension()
- local w = scanword()
- if w then
- local e = extensions[w]
- if e then
- e()
- else
- report("\\pdfextension: unknown %a",w)
- end
- end
-end
-
-implement { name = "pdfextension", actions = pdfextension }
-
--- feedbacks: colorstackinit creationdate fontname fontobjnum fontsize lastannot
--- lastlink lastobj pageref retval revision version xformname
-
-local feedbacks = {
- lastobj = pdflastobj,
- pageref = pdfpageref,
- xformname = pdfxformname,
-}
-
-local function pdffeedback()
- local w = scanword()
- if w then
- local f = feedbacks[w]
- if f then
- f()
- else
- report("\\pdffeedback: unknown %a",w)
- end
- end
-end
-
-implement { name = "pdffeedback", actions = pdffeedback }
-
--- variables: (integers:) compresslevel decimaldigits gamma gentounicode
--- ignoreunknownimages imageaddfilename imageapplygamma imagegamma imagehicolor
--- imageresolution inclusioncopyfonts inclusionerrorlevel majorversion minorversion
--- objcompresslevel omitcharset omitcidset pagebox pkfixeddpi pkresolution
--- recompress suppressoptionalinfo uniqueresname (dimensions:) destmargin horigin
--- linkmargin threadmargin vorigin xformmargin (tokenlists:) pageattr pageresources
--- pagesattr pkmode trailerid xformattr xformresources
-
--- local variables = {
--- }
---
--- local function pdfvariable()
--- local w = scanword()
--- if w then
--- local f = variables[w]
--- if f then
--- f()
--- else
--- print("invalid variable",w)
--- end
--- else
--- print("missing variable")
--- end
--- end
-
---------- { name = "pdfvariable", actions = pdfvariable }