From 776a9aa186e417e1d0220d18b1dda8fd2bae6886 Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 13 Nov 2013 13:40:25 +0200 Subject: beta 2013.11.13 12:28 --- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4113 -> 4112 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/lpdf-epd.lua | 45 +++++++++++++++++---- tex/context/base/status-files.pdf | Bin 24537 -> 24519 bytes tex/context/base/status-lua.pdf | Bin 222406 -> 222448 bytes tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 7 files changed, 40 insertions(+), 11 deletions(-) diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 1ffe08bff..0506dce5d 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{2013.11.10 12:23} +\newcontextversion{2013.11.13 12:28} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf index 5218751b7..853950cd3 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.mkiv b/tex/context/base/context.mkiv index 6a68d8c85..f945319dd 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2013.11.10 12:23} +\edef\contextversion{2013.11.13 12:28} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/lpdf-epd.lua b/tex/context/base/lpdf-epd.lua index b9f8cfc7c..a7399f6b4 100644 --- a/tex/context/base/lpdf-epd.lua +++ b/tex/context/base/lpdf-epd.lua @@ -57,7 +57,7 @@ lpdf.epdf = { } local checked_access -local function prepare(document,d,t,n,k) +local function prepare(document,d,t,n,k,mt) for i=1,n do local v = d:getVal(i) local r = d:getValNF(i) @@ -78,15 +78,16 @@ local function prepare(document,d,t,n,k) t[d:getKey(i)] = checked_access[v:getTypeName()](v,document) end end - getmetatable(t).__index = nil + getmetatable(t).__index = nil -- ?? weird +setmetatable(t,mt) return t[k] end -local function some_dictionary(d,document,r) +local function some_dictionary(d,document,r,mt) local n = d and d:getLength() or 0 if n > 0 then local t = { } - setmetatable(t, { __index = function(t,k) return prepare(document,d,t,n,k) end } ) + setmetatable(t, { __index = function(t,k) return prepare(document,d,t,n,k,mt) end } ) return t end end @@ -153,7 +154,7 @@ local function some_stream(d,document,r) end end --- we need epdf.getBool +-- we need epdf.boolean(v) in addition to v:getBool() [dictionary, array, stream, real, integer, string, boolean, name, ref, null] checked_access = { dictionary = function(d,document,r) @@ -260,7 +261,8 @@ local function getlayers(document) end end -local function getpages(document) + +local function getpages(document,Catalog) local data = document.data local xrefs = document.xrefs local cache = document.cache @@ -268,9 +270,33 @@ local function getpages(document) local xref = data:getXRef() local pages = { } local nofpages = cata:getNumPages() +-- local function getpagestuff(pagenumber,k) +-- if k == "MediaBox" then +-- local pageobj = cata:getPage(pagenumber) +-- local pagebox = pageobj:getMediaBox() +-- return { pagebox.x1, pagebox.y1, pagebox.x2, pagebox.y2 } +-- elseif k == "CropBox" then +-- local pageobj = cata:getPage(pagenumber) +-- local pagebox = pageobj:getMediaBox() +-- return { pagebox.x1, pagebox.y1, pagebox.x2, pagebox.y2 } +-- elseif k == "Resources" then +-- print("todo page resources from parent") +-- -- local pageobj = cata:getPage(pagenumber) +-- -- local resources = pageobj:getResources() +-- end +-- end +-- for pagenumber=1,nofpages do +-- local mt = { __index = function(t,k) +-- local v = getpagestuff(pagenumber,k) +-- if v then +-- t[k] = v +-- end +-- return v +-- end } + local mt = { __index = Catalog.Pages } for pagenumber=1,nofpages do local pagereference = cata:getPageRef(pagenumber).num - local pagedata = some_dictionary(xref:fetch(pagereference,0):getDict(),document,pagereference) + local pagedata = some_dictionary(xref:fetch(pagereference,0):getDict(),document,pagereference,mt) if pagedata then pagedata.number = pagenumber pages[pagenumber] = pagedata @@ -298,6 +324,9 @@ local function delayed(document,tag,f) return t end +-- local catobj = data:getXRef():fetch(data:getXRef():getRootNum(),data:getXRef():getRootGen()) +-- print(catobj:getDict(),data:getXRef():getCatalog():getDict()) + local loaded = { } function lpdf.epdf.load(filename) @@ -318,7 +347,7 @@ function lpdf.epdf.load(filename) document.Info = Info -- document.catalog = Catalog -- a few handy helper tables - document.pages = delayed(document,"pages", function() return getpages(document) end) + document.pages = delayed(document,"pages", function() return getpages(document,Catalog) end) document.destinations = delayed(document,"destinations", function() return getnames(document,Catalog.Names and Catalog.Names.Dests) end) document.javascripts = delayed(document,"javascripts", function() return getnames(document,Catalog.Names and Catalog.Names.JS) end) document.widgets = delayed(document,"widgets", function() return getnames(document,Catalog.Names and Catalog.Names.AcroForm) end) diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index a48337cb2..ce269173a 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 1d11c9fe1..3ac4ca292 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/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 94a082a8c..f6e95a000 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 : 11/10/13 12:23:28 +-- merge date : 11/13/13 12:28:55 do -- begin closure to overcome local limits and interference -- cgit v1.2.3