if not modules then modules = { } end modules ['mlib-int'] = { version = 1.001, comment = "companion to mlib-ctx.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files", } local factor = number.dimenfactors.bp local mpstring = mp.string local mpboolean = mp.boolean local getdimen = tex.getdimen local getcount = tex.getcount local getmacro = tokens.getters.macro local get = tex.get local emwidths = fonts.hashes.emwidths local exheights = fonts.hashes.exheights local registerscript = metapost.registerscript local registerdirect = metapost.registerdirect local on_right_page = structures.pages.on_right local is_odd_page = structures.pages.is_odd local in_body_page = structures.pages.in_body local page_fraction = structures.pages.fraction local layout_has_changed = structures.pages.has_changed local function defaultcolormodel() -- can be helper local colormethod = getcount("MPcolormethod") return (colormethod == 0 or colormethod == 1) and 1 or 3 end do local t = os.date("*t") -- maybe this should be a very early on global -- If we want to do a vardef then we first need to catch an endgroup and -- that then fails because we have a variable sitting there, so they need -- to be def's at the mp end. local assignment_code = metapost.codes.assignment local mpscannext = mp.scan.next local mpscaninteger = mp.scan.integer local function item(name) local n = mpscannext(true) -- keep if n == assignment_code then mpscannext() t[name] = mpscaninteger() else return t[name] end end registerdirect("year", function() return item("year") end) registerdirect("month", function() return item("month") end) registerdirect("day", function() return item("day") end) registerdirect("hour", function() return item("hour") end) registerdirect("minute", function() return item("min") end) registerdirect("second", function() return item("sec") end) end local injectnumeric = mp.inject.numeric registerdirect("PaperHeight", function() return getdimen("paperheight") * factor end) registerdirect("PaperWidth", function() return getdimen("paperwidth") * factor end) registerdirect("PrintPaperHeight", function() return getdimen("printpaperheight") * factor end) registerdirect("PrintPaperWidth", function() return getdimen("printpaperwidth") * factor end) registerdirect("TopSpace", function() return getdimen("topspace") * factor end) registerdirect("BottomSpace", function() return getdimen("bottomspace") * factor end) registerdirect("BackSpace", function() return getdimen("backspace") * factor end) registerdirect("CutSpace", function() return getdimen("cutspace") * factor end) registerdirect("MakeupHeight", function() return getdimen("makeupheight") * factor end) registerdirect("MakeupWidth", function() return getdimen("makeupwidth") * factor end) registerdirect("TopHeight", function() return getdimen("topheight") * factor end) registerdirect("TopDistance", function() return getdimen("topdistance") * factor end) registerdirect("HeaderHeight", function() return getdimen("headerheight") * factor end) registerdirect("HeaderDistance", function() return getdimen("headerdistance") * factor end) registerdirect("TextHeight", function() return getdimen("textheight") * factor end) registerdirect("FooterDistance", function() return getdimen("footerdistance") * factor end) registerdirect("FooterHeight", function() return getdimen("footerheight") * factor end) registerdirect("BottomDistance", function() return getdimen("bottomdistance") * factor end) registerdirect("BottomHeight", function() return getdimen("bottomheight") * factor end) registerdirect("LeftEdgeWidth", function() return getdimen("leftedgewidth") * factor end) registerdirect("LeftEdgeDistance", function() return getdimen("leftedgedistance") * factor end) registerdirect("LeftMarginWidth", function() return getdimen("leftmarginwidth") * factor end) registerdirect("LeftMarginDistance", function() return getdimen("leftmargindistance") * factor end) registerdirect("TextWidth", function() return getdimen("textwidth") * factor end) registerdirect("RightMarginDistance", function() return getdimen("rightmargindistance") * factor end) registerdirect("RightMarginWidth", function() return getdimen("rightmarginwidth") * factor end) registerdirect("RightEdgeDistance", function() return getdimen("rightedgedistance") * factor end) registerdirect("RightEdgeWidth", function() return getdimen("rightedgewidth") * factor end) registerdirect("InnerMarginDistance", function() return getdimen("innermargindistance") * factor end) registerdirect("InnerMarginWidth", function() return getdimen("innermarginwidth") * factor end) registerdirect("OuterMarginDistance", function() return getdimen("outermargindistance") * factor end) registerdirect("OuterMarginWidth", function() return getdimen("outermarginwidth") * factor end) registerdirect("InnerEdgeDistance", function() return getdimen("inneredgedistance") * factor end) registerdirect("InnerEdgeWidth", function() return getdimen("inneredgewidth") * factor end) registerdirect("OuterEdgeDistance", function() return getdimen("outeredgedistance") * factor end) registerdirect("OuterEdgeWidth", function() return getdimen("outeredgewidth") * factor end) registerdirect("PageOffset", function() return getdimen("pagebackgroundoffset") * factor end) registerdirect("PageDepth", function() return getdimen("pagebackgrounddepth") * factor end) registerdirect("LayoutColumns", function() return getcount("layoutcolumns") end) registerdirect("LayoutColumnDistance", function() return getdimen("layoutcolumndistance") * factor end) registerdirect("LayoutColumnWidth", function() return getdimen("layoutcolumnwidth") * factor end) registerdirect("SpineWidth", function() return getdimen("spinewidth") * factor end) registerdirect("PaperBleed", function() return getdimen("paperbleed") * factor end) registerdirect("RealPageNumber", function() return getcount("realpageno") end) registerdirect("LastPageNumber", function() return getcount("lastpageno") end) registerdirect("PageNumber", function() return getcount("userpageno") end) registerdirect("NOfPages", function() return getcount("lastpageno") end) registerdirect("SubPageNumber", function() return getcount("subpageno") end) registerdirect("NOfSubPages", function() return getcount("lastsubpageno") end) registerdirect("CurrentColumn", function() return getcount("mofcolumns") end) registerdirect("NOfColumns", function() return getcount("nofcolumns") end) registerdirect("BaseLineSkip", function() return get ("baselineskip",true) * factor end) registerdirect("LineHeight", function() return getdimen("lineheight") * factor end) registerdirect("BodyFontSize", function() return getdimen("bodyfontsize") * factor end) registerdirect("TopSkip", function() return get ("topskip",true) * factor end) registerdirect("StrutHeight", function() return getdimen("strutht") * factor end) registerdirect("StrutDepth", function() return getdimen("strutdp") * factor end) registerdirect("CurrentWidth", function() return get ("hsize") * factor end) registerdirect("CurrentHeight", function() return get ("vsize") * factor end) registerdirect("EmWidth", function() return emwidths [false] * factor end) registerdirect("ExHeight", function() return exheights[false] * factor end) registerdirect("HSize", function() return get ("hsize") * factor end) registerdirect("VSize", function() return get ("vsize") * factor end) registerdirect("LastPageNumber", function() return getcount("lastpageno") end) registerdirect("OverlayWidth", function() return getdimen("d_overlay_width") * factor end) registerdirect("OverlayHeight", function() return getdimen("d_overlay_height") * factor end) registerdirect("OverlayDepth", function() return getdimen("d_overlay_depth") * factor end) registerdirect("OverlayLineWidth", function() return getdimen("d_overlay_linewidth") * factor end) registerdirect("OverlayOffset", function() return getdimen("d_overlay_offset") * factor end) registerdirect("OverlayRegion", function() return getmacro("m_overlay_region") end) --------------("CurrentLayout", function() return getmacro("currentlayout") end) -- registerscript("PageFraction", function() return mpboolean(page_fraction ()) end) -- registerscript("OnRightPage", function() return mpboolean(on_right_page ()) end) -- registerscript("OnOddPage", function() return mpboolean(is_odd_page ()) end) -- registerscript("InPageBody", function() return mpboolean(in_body_page ()) end) registerdirect("PageFraction", function() return page_fraction () end) registerdirect("OnRightPage", function() return on_right_page () end) registerdirect("OnOddPage", function() return is_odd_page () end) registerdirect("InPageBody", function() return in_body_page () end) registerdirect("LastChangedLayoutPage",function() return getcount("c_page_layouts_changed") end) registerdirect("SwapMarginDimensions", function() token.expandmacro("swapmargindimensions") end) registerdirect("PageFraction", page_fraction ) registerdirect("OnRightPage", on_right_page ) registerdirect("OnOddPage", is_odd_page ) registerdirect("InPageBody", in_body_page ) -- registerdirect("LayoutHasChanged", layout_has_changed) registerdirect("defaultcolormodel", defaultcolormodel) -- see node-rul.* registerdirect("RuleWidth", function() return getdimen("d_rule_width") * factor end) registerdirect("RuleHeight", function() return getdimen("d_rule_height") * factor end) registerdirect("RuleDepth", function() return getdimen("d_rule_depth") * factor end) registerdirect("RuleH", function() return getdimen("d_rule_h") * factor end) registerdirect("RuleV", function() return getdimen("d_rule_v") * factor end) registerdirect("RuleThickness", function() return getdimen("d_rule_line") * factor end) registerdirect("RuleOffset", function() return getdimen("d_rule_offset") * factor end) registerdirect("RuleDirection", function() return getmacro("c_rule_direction") end) registerdirect("RuleFactor", function() return getmacro("m_rule_factor") end) registerdirect("RuleOption", function() return getmacro("m_rule_option") end) --------------("RuleColor", function() return getmacro("m_rule_color") end) registerscript("RuleColor", function() return getmacro("m_rule_color") end) -- see typo-ada.* registerdirect("AdaptiveWidth", function() return getdimen("d_adaptive_width") * factor end) registerdirect("AdaptiveHeight", function() return getdimen("d_adaptive_height") * factor end) registerdirect("AdaptiveDepth", function() return getdimen("d_adaptive_depth") * factor end) registerdirect("AdaptiveThickness", function() return getdimen("d_adaptive_line") * factor end) registerdirect("AdaptiveColor", function() return getmacro("m_adaptive_color") end)