From 824d6e9f00db5f0bc3732bb8544fe441a91038c8 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Sat, 20 Aug 2011 01:39:00 +0200
Subject: beta 2011.08.20 01:39

---
 tex/context/base/context-version.pdf               | Bin 4095 -> 4092 bytes
 tex/context/base/context-version.png               | Bin 106555 -> 104764 bytes
 tex/context/base/lpdf-swf.lua                      |  66 +++++++++++++++++++--
 tex/context/base/lpdf-wid.lua                      |  16 ++---
 tex/context/base/scrn-fld.mkvi                     |   8 +--
 tex/context/base/status-files.pdf                  | Bin 23872 -> 23873 bytes
 tex/context/base/status-lua.pdf                    | Bin 162212 -> 162210 bytes
 tex/context/base/syst-aux.mkiv                     |   4 +-
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 9 files changed, 77 insertions(+), 19 deletions(-)

(limited to 'tex')

diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 0c9566b18..b8c6d79f7 100644
Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index d8e17946a..99232f0ca 100644
Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ
diff --git a/tex/context/base/lpdf-swf.lua b/tex/context/base/lpdf-swf.lua
index aadbbd639..c3e83dc69 100644
--- a/tex/context/base/lpdf-swf.lua
+++ b/tex/context/base/lpdf-swf.lua
@@ -30,6 +30,10 @@ local nodeinjections     = backends.pdf.nodeinjections
 
 local pdfannotation_node = nodes.pool.pdfannotation
 
+local trace_swf = false  trackers.register("backend.swf", function(v) trace_swf = v end)
+
+local report_swf = logs.reporter("backend","swf")
+
 local activations = {
     click = "XA",
     page  = "PO",
@@ -87,27 +91,79 @@ local function insertswf(spec)
         },
     }
 
+    -- todo: check op subpath figuur (relatief)
+
     if resources then
         local names = configuration.Assets.Names
-        local function add(filename)
+        local root = file.dirname(filename)
+        local prefix = format("^%s/",root)
+        local function add(filename,strip)
             local filename = gsub(filename,"%./","")
-            local embeddedreference = codeinjections.embedfile { file = filename, keepdir = true }
+            local usedname = strip and gsub(filename,prefix,"") -- always when relative
+            local embeddedreference = codeinjections.embedfile {
+                file     = filename,
+                usedname = usedname,
+                keepdir  = true,
+            }
             names[#names+1] = pdfstring(filename)
             names[#names+1] = embeddedreference
+            if trace_swf then
+                if usedname == filename then
+                    report_swf("embedding file '%s'",filename)
+                else
+                    report_swf("embedding file '%s' as '%s'",filename,usedname)
+                end
+            end
+        end
+        local relativepaths = resources.relativepaths
+        if relativepaths then
+            if trace_swf then
+                report_swf("checking %s relative paths",#relativepaths)
+            end
+            for i=1,#relativepaths do
+                local relativepath = relativepaths[i]
+                if trace_swf then
+                    report_swf("checking path '%s' relative to '%s'",relativepath,root)
+                end
+                local path = file.join(root,relativepath)
+                local files = dir.glob(path .. "/**")
+                for i=1,#files do
+                    add(files[i],true)
+                end
+            end
         end
         local paths = resources.paths
         if paths then
+            if trace_swf then
+                report_swf("checking %s paths",#paths)
+            end
             for i=1,#paths do
-                local files = dir.glob(paths[i] .. "/**")
+                local path = paths[i]
+                if trace_swf then
+                    report_swf("checking path '%s'",path)
+                end
+                local files = dir.glob(path .. "/**")
                 for i=1,#files do
-                    add(files[i])
+                    add(files[i],false)
                 end
             end
         end
+        local relativefiles = resources.relativefiles
+        if relativefiles then
+            if trace_swf then
+                report_swf("checking %s relative files",#relativefiles)
+            end
+            for i=1,#relativefiles do
+                add(relativefiles[i],true)
+            end
+        end
         local files = resources.files
         if files then
+            if trace_swf then
+                report_swf("checking %s files",#files)
+            end
             for i=1,#files do
-                add(files[i])
+                add(files[i],false)
             end
         end
     end
diff --git a/tex/context/base/lpdf-wid.lua b/tex/context/base/lpdf-wid.lua
index 2b1a241e6..0d73c56ba 100644
--- a/tex/context/base/lpdf-wid.lua
+++ b/tex/context/base/lpdf-wid.lua
@@ -200,12 +200,13 @@ end
 lpdf.registerdocumentfinalizer(flushembeddedfiles,"embeddedfiles")
 
 function codeinjections.embedfile(specification)
-    local data       = specification.data
-    local filename   = specification.file
-    local name       = specification.name or ""
-    local title      = specification.title or ""
-    local hash       = specification.hash or filename
-    local keepdir    = specification.keepdir -- can change
+    local data     = specification.data
+    local filename = specification.file
+    local name     = specification.name or ""
+    local title    = specification.title or ""
+    local hash     = specification.hash or filename
+    local keepdir  = specification.keepdir -- can change
+    local usedname = specification.usedname
     if filename == "" then
         filename = nil
     end
@@ -243,7 +244,8 @@ function codeinjections.embedfile(specification)
             end
         end
     end
-    local basename = keepdir == true and filename or file.basename(filename)
+    usedname = usedname ~= "" and usedname or filename
+    local basename = keepdir == true and usedname or file.basename(usedname)
 local basename = gsub(basename,"%./","")
     local savename = file.addsuffix(name ~= "" and name or basename,"txt") -- else no valid file
     local a = pdfdictionary { Type = pdfconstant("EmbeddedFile") }
diff --git a/tex/context/base/scrn-fld.mkvi b/tex/context/base/scrn-fld.mkvi
index 6e4d6ba85..f296b6a55 100644
--- a/tex/context/base/scrn-fld.mkvi
+++ b/tex/context/base/scrn-fld.mkvi
@@ -165,7 +165,7 @@
 \def\scrn_field_check_category
   {\edef\currentfieldbodycategory{\fieldbodyparameter\c!category}%
    \ifx\currentfieldbodycategory\empty
-     letfieldbodyparameter\s!parent\??fd
+     \letfieldbodyparameter\s!parent\??fd
     %\setevalue{\currentfieldbodyhash\s!parent}{\namedfieldcategoryhash\empty}% to WS: not hash !
    \else
      \normalexpanded{\setfieldbodyparameter{\s!parent}{\??fd\currentfieldbodycategory}}%
@@ -398,7 +398,7 @@
 \setupfieldcontentframed
   [\c!align=\v!flushleft,
    \c!strut=\v!no,
-   \s!parent=\??ol]
+   \s!parent=\??ol] % needs checking
 
 \setupfieldcontentframed % independent
   [\c!alternative=\v!normal,
@@ -414,13 +414,13 @@
   [\c!style=,
    \c!color=,
    \c!align=\v!flushleft,
-   \s!parent=\??ol]
+   \s!parent=\??ol] % needs checking
 
 \setupfieldtotalframed
   [%\c!alternative={\v!label,\v!frame,\v!horizontal},
    \c!strut=\v!no,
    \c!align=,
-   \s!parent=\??ol]
+   \s!parent=\??ol] % needs checking
 
 % \setupcurrent
 
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index a5ed9b1f8..02c9c5bc9 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 10b93574c..b24a70205 100644
Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ
diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv
index 1aae19ee1..571ca05b9 100644
--- a/tex/context/base/syst-aux.mkiv
+++ b/tex/context/base/syst-aux.mkiv
@@ -1196,8 +1196,8 @@
 %D complicated arguments, for instance arguments that
 %D consist of two or more expandable tokens.
 
-\def\getfirstcharacter  #1{\ctxcommand{getfirstcharacter(\!!bs#1\e!!es)}}
-\def\doiffirstcharelse#1#2{\ctxcommand{doiffirstcharelse(\!!bs#1\e!!es,\!!bs#2\e!!es)}} % chr str
+\def\getfirstcharacter  #1{\ctxcommand{getfirstcharacter(\!!bs#1\!!es)}}
+\def\doiffirstcharelse#1#2{\ctxcommand{doiffirstcharelse(\!!bs#1\!!es,\!!bs#2\!!es)}} % chr str
 
 %D \macros
 %D   {doifinstringelse, doifincsnameelse}
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index cef1d5616..432a83a8d 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
 -- merged file : luatex-fonts-merged.lua
 -- parent file : luatex-fonts.lua
--- merge date  : 08/18/11 17:42:44
+-- merge date  : 08/20/11 01:39:23
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3