From 2a7dc895b9ca40a38cc4bdb36be94f59bdbe5e4f Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 19 Apr 2011 22:49:00 +0200 Subject: beta 2011.04.19 22:49 --- tex/context/base/cont-new.mkii | 2 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context.mkii | 2 +- tex/context/base/context.mkiv | 2 +- tex/context/base/grph-inc.mkiv | 2 ++ tex/context/base/grph-swf.lua | 1 + tex/context/base/grph-u3d.lua | 2 +- tex/context/base/l-io.lua | 6 +++++ tex/context/base/lpdf-swf.lua | 34 +++++++++++++++++++++++++--- tex/context/base/lpdf-u3d.lua | 2 +- tex/context/base/lpdf-wid.lua | 6 +++-- tex/context/base/status-files.pdf | Bin 23627 -> 23614 bytes tex/context/base/status-lua.pdf | Bin 155194 -> 155189 bytes tex/generic/context/luatex-fonts-merged.lua | 8 ++++++- 14 files changed, 57 insertions(+), 12 deletions(-) (limited to 'tex') diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index 5ba08f7fc..f32124f84 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.04.19 16:38} +\newcontextversion{2011.04.19 22:49} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 444c14b98..158e48b95 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.04.19 16:38} +\newcontextversion{2011.04.19 22:49} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index bcb773bcf..a6e41c766 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.04.19 16:38} +\edef\contextversion{2011.04.19 22:49} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index a4e32ae3a..c301fc844 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.04.19 16:38} +\edef\contextversion{2011.04.19 22:49} %D For those who want to use this: diff --git a/tex/context/base/grph-inc.mkiv b/tex/context/base/grph-inc.mkiv index 8304c393e..aa2157b9f 100644 --- a/tex/context/base/grph-inc.mkiv +++ b/tex/context/base/grph-inc.mkiv @@ -157,6 +157,7 @@ \let\@@efsymbol \v!no % \let\@@efcontrols \v!no + \let\@@efresources \empty \let\@@efpreview \v!no \let\@@efrepeat \v!no % @@ -254,6 +255,7 @@ format = "\@@efmethod", preset = "\@@efprefix", controls = "\@@efcontrols", + resources = "\@@efresources", preview = "\@@efpreview", display = "\@@efdisplay", mask = "\@@efmask", diff --git a/tex/context/base/grph-swf.lua b/tex/context/base/grph-swf.lua index c597a77f8..62667bbba 100644 --- a/tex/context/base/grph-swf.lua +++ b/tex/context/base/grph-swf.lua @@ -29,6 +29,7 @@ function figures.checkers.swf(data) -- display = dr.display, -- controls = dr.controls, -- label = dr.label, + resources = dr.resources, } context.stopfoundexternalfigure() return data diff --git a/tex/context/base/grph-u3d.lua b/tex/context/base/grph-u3d.lua index 09bfd29e7..f2baac2f3 100644 --- a/tex/context/base/grph-u3d.lua +++ b/tex/context/base/grph-u3d.lua @@ -23,7 +23,7 @@ function figures.checkers.u3d(data) local dr, du, ds = data.request, data.used, data.status local width = todimen(dr.width or figures.defaultwidth) local height = todimen(dr.height or figures.defaultheight) - local foundname = du.report_u3ds( + local foundname = du.fullname dr.width, dr.height = width, height du.width, du.height, du.foundname = width, height, foundname if trace_inclusion then diff --git a/tex/context/base/l-io.lua b/tex/context/base/l-io.lua index 88816648d..290dcec42 100644 --- a/tex/context/base/l-io.lua +++ b/tex/context/base/l-io.lua @@ -215,6 +215,12 @@ local function readnumber(f,n,m) elseif n == 12 then local a, b, c = readnumber(f,4), readnumber(f,4), readnumber(f,4) return 256*256 * a + 256 * b + c + elseif n == -2 then + local b, a = byte(f:read(2),1,2) + return 256*a + b + elseif n == -4 then + local d, c, b, a = byte(f:read(4),1,4) + return 256*256*256 * a + 256*256 * b + 256*c + d else return 0 end diff --git a/tex/context/base/lpdf-swf.lua b/tex/context/base/lpdf-swf.lua index 2d26a6867..2fec5df07 100644 --- a/tex/context/base/lpdf-swf.lua +++ b/tex/context/base/lpdf-swf.lua @@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['lpdf-swf'] = { -- The following code is based on tests by Luigi Scarso. His prototype -- was using tex code. This is the official implementation. -local format = string.format +local format, gsub = string.format, string.gsub local backends, lpdf = backends, lpdf @@ -30,9 +30,11 @@ local pdfannotation_node = nodes.pool.pdfannotation local function insertswf(spec) - local width, height, filename = spec.width, spec.height, spec.foundname + local width, height, filename, resources = spec.width, spec.height, spec.foundname, spec.resources - local eref = codeinjections.embedfile(filename) + local resources = resources and parametersets[resources] + + local eref = codeinjections.embedfile { file = filename } local flash = pdfdictionary { Subtype = pdfconstant("Flash"), @@ -58,6 +60,31 @@ local function insertswf(spec) }, } + if resources then + local names = configuration.Assets.Names + local function add(filename) + local filename = gsub(filename,"%./","") + local eref = codeinjections.embedfile { file = filename, keepdir = true } + names[#names+1] = pdfstring(filename) + names[#names+1] = eref + end + local paths = resources.paths + if paths then + for i=1,#paths do + local files = dir.glob(paths[i] .. "/**") + for i=1,#files do + add(files[i]) + end + end + end + local files = resources.files + if files then + for i=1,#files do + add(files[i]) + end + end + end + local cref = pdfreference(pdfimmediateobject(tostring(configuration))) local activation = pdfdictionary { @@ -125,6 +152,7 @@ function backends.pdf.nodeinjections.insertswf(spec) -- display = spec.display, -- controls = spec.controls, -- label = spec.label, + resources = spec.resources, } node.write(pdfannotation_node(spec.width,spec.height,0,annotation())) end diff --git a/tex/context/base/lpdf-u3d.lua b/tex/context/base/lpdf-u3d.lua index 44e568ee1..60df2e2ab 100644 --- a/tex/context/base/lpdf-u3d.lua +++ b/tex/context/base/lpdf-u3d.lua @@ -479,7 +479,7 @@ local function insert3d(spec) -- width, height, factor, display, controls, label end function nodeinjections.insertu3d(spec) - local annotation, preview, ref = insert3d { + local annotation, preview, ref = insert3d { -- just spec foundname = spec.foundname, width = spec.width, height = spec.height, diff --git a/tex/context/base/lpdf-wid.lua b/tex/context/base/lpdf-wid.lua index d9885e30e..5e4247003 100644 --- a/tex/context/base/lpdf-wid.lua +++ b/tex/context/base/lpdf-wid.lua @@ -203,6 +203,7 @@ function codeinjections.embedfile(specification) local name = specification.name or "" local title = specification.title or "" local hash = specification.hash or filename + local keepdir = specification.keepdir -- can change if filename == "" then filename = nil end @@ -240,7 +241,8 @@ function codeinjections.embedfile(specification) end end end - local basename = file.basename(filename) + local basename = keepdir == true and filename or file.basename(filename) +local basename = string.gsub(basename,"%./","") local savename = file.addsuffix(name ~= "" and name or basename,"txt") -- else no valid file local a = pdfdictionary { Type = pdfconstant("EmbeddedFile") } local f @@ -559,7 +561,7 @@ local function insertrendering(specification) if isurl then descriptor.FS = pdfconstant("URL") elseif option[v_embed] then - descriptor.EF = codeinjections.embedfile(filename) + descriptor.EF = codeinjections.embedfile { file = filename } end local clip = pdfdictionary { Type = pdfconstant("MediaClip"), diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index a7fb4838d..7e4138217 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index 1f67d617a..3cc3340de 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index 82e90df27..17f136b29 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 04/19/11 16:38:06 +-- merge date : 04/19/11 22:49:01 do -- begin closure to overcome local limits and interference @@ -2352,6 +2352,12 @@ local function readnumber(f,n,m) elseif n == 12 then local a, b, c = readnumber(f,4), readnumber(f,4), readnumber(f,4) return 256*256 * a + 256 * b + c + elseif n == -2 then + local b, a = byte(f:read(2),1,2) + return 256*a + b + elseif n == -4 then + local d, c, b, a = byte(f:read(4),1,4) + return 256*256*256 * a + 256*256 * b + 256*c + d else return 0 end -- cgit v1.2.3