diff options
author | Marius <mariausol@gmail.com> | 2013-05-19 20:40:34 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2013-05-19 20:40:34 +0300 |
commit | 13ec4b540e0d46c97fd7b089e0b7413da81e0a9f (patch) | |
tree | bebfa563a17c06b3bd3bf8f6f4ba6d025e00d107 /tex/context/base/page-pst.lua | |
parent | 69ad13650cda027526271179e95b5294694143a1 (diff) | |
download | context-13ec4b540e0d46c97fd7b089e0b7413da81e0a9f.tar.gz |
beta 2013.05.19 19:27
Diffstat (limited to 'tex/context/base/page-pst.lua')
-rw-r--r-- | tex/context/base/page-pst.lua | 156 |
1 files changed, 78 insertions, 78 deletions
diff --git a/tex/context/base/page-pst.lua b/tex/context/base/page-pst.lua index 8586830cf..1256d4067 100644 --- a/tex/context/base/page-pst.lua +++ b/tex/context/base/page-pst.lua @@ -1,78 +1,78 @@ -if not modules then modules = { } end modules ['page-pst'] = { - version = 1.001, - comment = "companion to page-pst.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - --- todo: adapt message - -local format, validstring = string.format, string.valid -local sortedkeys = table.sortedkeys - -local cache = { } - -local function flush(page) - local c = cache[page] - if c then - for i=1,#c do - context.viafile(c[i],format("page.%s",validstring(page,"nopage"))) - end - cache[page] = nil - end -end - -local function setnextpage() - local n = next(cache) and sortedkeys(cache)[1] - if not n then - n = 0 -- nothing in the cache - elseif n == 0 then - n = -1 -- generic buffer (0) - elseif n > 0 then - -- upcoming page (realpageno) - end - tex.setcount("global","c_page_postponed_blocks_next_page",n) -end - -function commands.flushpostponedblocks(page) - -- we need to flush previously pending pages as well and the zero - -- slot is the generic one so that one is always flushed - local t = sortedkeys(cache) - local p = tonumber(page) or tex.count.realpageno or 0 - for i=1,#t do - local ti = t[i] - if ti <= p then - flush(ti) - else - break - end - end - setnextpage() -end - -function commands.registerpostponedblock(page) - if type(page) == "string" then - if string.find(page,"^+") then - page = tex.count.realpageno + (tonumber(page) or 1) -- future delta page - else - page = tonumber(page) or 0 -- preferred page or otherwise first possible occasion - end - end - if not page then - page = 0 - end - local c = cache[page] - if not c then - c = { } - cache[page] = c - end - c[#c+1] = buffers.raw("postponedblock") - buffers.erase("postponedblock") - if page == 0 then - interfaces.showmessage("layouts",3,#c) - else - interfaces.showmessage("layouts",3,string.format("%s (realpage: %s)",#c,page)) - end - setnextpage() -end +if not modules then modules = { } end modules ['page-pst'] = {
+ version = 1.001,
+ comment = "companion to page-pst.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- todo: adapt message
+
+local format, validstring = string.format, string.valid
+local sortedkeys = table.sortedkeys
+
+local cache = { }
+
+local function flush(page)
+ local c = cache[page]
+ if c then
+ for i=1,#c do
+ context.viafile(c[i],format("page.%s",validstring(page,"nopage")))
+ end
+ cache[page] = nil
+ end
+end
+
+local function setnextpage()
+ local n = next(cache) and sortedkeys(cache)[1]
+ if not n then
+ n = 0 -- nothing in the cache
+ elseif n == 0 then
+ n = -1 -- generic buffer (0)
+ elseif n > 0 then
+ -- upcoming page (realpageno)
+ end
+ tex.setcount("global","c_page_postponed_blocks_next_page",n)
+end
+
+function commands.flushpostponedblocks(page)
+ -- we need to flush previously pending pages as well and the zero
+ -- slot is the generic one so that one is always flushed
+ local t = sortedkeys(cache)
+ local p = tonumber(page) or tex.count.realpageno or 0
+ for i=1,#t do
+ local ti = t[i]
+ if ti <= p then
+ flush(ti)
+ else
+ break
+ end
+ end
+ setnextpage()
+end
+
+function commands.registerpostponedblock(page)
+ if type(page) == "string" then
+ if string.find(page,"^+") then
+ page = tex.count.realpageno + (tonumber(page) or 1) -- future delta page
+ else
+ page = tonumber(page) or 0 -- preferred page or otherwise first possible occasion
+ end
+ end
+ if not page then
+ page = 0
+ end
+ local c = cache[page]
+ if not c then
+ c = { }
+ cache[page] = c
+ end
+ c[#c+1] = buffers.raw("postponedblock")
+ buffers.erase("postponedblock")
+ if page == 0 then
+ interfaces.showmessage("layouts",3,#c)
+ else
+ interfaces.showmessage("layouts",3,string.format("%s (realpage: %s)",#c,page))
+ end
+ setnextpage()
+end
|