diff options
author | Hans Hagen <pragma@wxs.nl> | 2012-08-02 10:55:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2012-08-02 10:55:00 +0200 |
commit | 8b3eb7047fb20b4371dacf0bbb481aee790d6c43 (patch) | |
tree | 324688474efb19322efd43be5c8dd28756664ec8 /tex/context/base/spac-ver.lua | |
parent | 2a3ad7522fdc055a3c0027d830b30d097017ec2c (diff) | |
download | context-8b3eb7047fb20b4371dacf0bbb481aee790d6c43.tar.gz |
beta 2012.08.02 10:55
Diffstat (limited to 'tex/context/base/spac-ver.lua')
-rw-r--r-- | tex/context/base/spac-ver.lua | 62 |
1 files changed, 43 insertions, 19 deletions
diff --git a/tex/context/base/spac-ver.lua b/tex/context/base/spac-ver.lua index 66698a49e..ace3ed8bb 100644 --- a/tex/context/base/spac-ver.lua +++ b/tex/context/base/spac-ver.lua @@ -42,16 +42,18 @@ local stoptiming = statistics.stoptiming -- vertical space handler -local trace_vbox_vspacing = false trackers.register("builders.vbox_vspacing", function(v) trace_vbox_vspacing = v end) -local trace_page_vspacing = false trackers.register("builders.page_vspacing", function(v) trace_page_vspacing = v end) -local trace_collect_vspacing = false trackers.register("builders.collect_vspacing", function(v) trace_collect_vspacing = v end) -local trace_vspacing = false trackers.register("builders.vspacing", function(v) trace_vspacing = v end) -local trace_vsnapping = false trackers.register("builders.vsnapping", function(v) trace_vsnapping = v end) -local trace_vpacking = false trackers.register("builders.vpacking", function(v) trace_vpacking = v end) +local trace_vbox_vspacing = false trackers.register("vspacing.vbox", function(v) trace_vbox_vspacing = v end) +local trace_page_vspacing = false trackers.register("vspacing.page", function(v) trace_page_vspacing = v end) +local trace_page_builder = false trackers.register("builders.page", function(v) trace_page_builder = v end) +local trace_collect_vspacing = false trackers.register("vspacing.collect", function(v) trace_collect_vspacing = v end) +local trace_vspacing = false trackers.register("vspacing.spacing", function(v) trace_vspacing = v end) +local trace_vsnapping = false trackers.register("vspacing.snapping", function(v) trace_vsnapping = v end) +local trace_vpacking = false trackers.register("vspacing.packing", function(v) trace_vpacking = v end) local report_vspacing = logs.reporter("vspacing","spacing") local report_collapser = logs.reporter("vspacing","collapsing") local report_snapper = logs.reporter("vspacing","snapping") +local report_page_builder = logs.reporter("builders","page") local a_skipcategory = attributes.private('skipcategory') local a_skippenalty = attributes.private('skippenalty') @@ -65,6 +67,7 @@ local unset_attribute = node.unset_attribute local set_attribute = node.set_attribute local find_node_tail = node.tail local free_node = node.free +local free_node_list = node.flush_list local copy_node = node.copy local traverse_nodes = node.traverse local traverse_nodes_id = node.traverse_id @@ -1216,7 +1219,6 @@ end function vspacing.pagehandler(newhead,where) -- local newhead = texlists.contrib_head if newhead then - -- starttiming(vspacing) local newtail = find_node_tail(newhead) local flush = false stackhack = true -- todo: only when grid snapping once enabled @@ -1266,7 +1268,6 @@ function vspacing.pagehandler(newhead,where) -- texlists.contrib_head = nil newhead = nil end - -- stoptiming(vspacing) end return newhead end @@ -1316,28 +1317,51 @@ function builders.vpack_filter(head,groupcode,size,packtype,maxdepth,direction) else nodes.processors.tracer("vpack","unchanged",head,groupcode,before,after,true) end - stoptiming(builders) else head, done = actions(head,groupcode) - stoptiming(builders) end + stoptiming(builders) end return head, done end --- This one is special in the sense that it has no head --- and we operate on the mlv. Also, we need to do the --- vspacing last as it removes items from the mvl. +-- This one is special in the sense that it has no head and we operate on the mlv. Also, +-- we need to do the vspacing last as it removes items from the mvl. local actions = nodes.tasks.actions("mvlbuilders") +local function report(groupcode,head) + report_page_builder("trigger: %s",groupcode) + report_page_builder(" vsize : %s",points(tex.vsize)) + report_page_builder(" pagegoal : %s",points(tex.pagegoal)) + report_page_builder(" pagetotal: %s",points(tex.pagetotal)) + report_page_builder(" list : %s",head and nodeidstostring(head) or "<empty>") +end + function builders.buildpage_filter(groupcode) - starttiming(builders) - local head = texlists.contrib_head - local head, done = actions(head,groupcode) - texlists.contrib_head = head - stoptiming(builders) - return (done and head) or true + local head, done = texlists.contrib_head, false +-- if head and head.next and head.next.id == hlist_code and head.next.width == 1 then +-- report_page_builder("trigger otr calculations") +-- free_node_list(head) +-- head = nil +-- end + if head then + starttiming(builders) + if trace_page_builder then + report(groupcode,head) + end + head, done = actions(head,groupcode) + stoptiming(builders) + -- -- doesn't work here (not passed on?) + -- tex.pagegoal = tex.vsize - tex.dimen.d_page_floats_inserted_top - tex.dimen.d_page_floats_inserted_bottom + texlists.contrib_head = head + return done and head or true + else + if trace_page_builder then + report(groupcode) + end + return nil, false + end end callbacks.register('vpack_filter', builders.vpack_filter, "vertical spacing etc") |