mlib-int.lua /size: 9480 b    last modification: 2021-10-28 13:50
1if not modules then modules = { } end modules ['mlib-int'] = {
2    version   = 1.001,
3    comment   = "companion to mlib-ctx.mkiv",
4    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5    copyright = "PRAGMA ADE / ConTeXt Development Team",
6    license   = "see context related readme files",
7}
8
9local factor         = number.dimenfactors.bp
10----- mpprint        = mp.print
11local mpnumeric      = mp.numeric
12local mpboolean      = mp.boolean
13local mpstring       = mp.string
14local mpquoted       = mp.quoted
15local getdimen       = tex.getdimen
16local getcount       = tex.getcount
17local getmacro       = tokens.getters.macro
18local get            = tex.get
19local mpcolor        = attributes.colors.mpcolor
20local emwidths       = fonts.hashes.emwidths
21local exheights      = fonts.hashes.exheights
22
23local registerscript = metapost.registerscript
24
25local on_right_page  = structures.pages.on_right
26local is_odd_page    = structures.pages.is_odd
27local in_body_page   = structures.pages.in_body
28local page_fraction  = structures.pages.fraction
29
30local function defaultcolormodel() -- can be helper
31    local colormethod = getcount("MPcolormethod")
32    return (colormethod == 0 or colormethod == 1) and 1 or 3
33end
34
35function mp.PaperHeight         () mpnumeric(getdimen("paperheight")          * factor) end
36function mp.PaperWidth          () mpnumeric(getdimen("paperwidth")           * factor) end
37function mp.PrintPaperHeight    () mpnumeric(getdimen("printpaperheight")     * factor) end
38function mp.PrintPaperWidth     () mpnumeric(getdimen("printpaperwidth")      * factor) end
39function mp.TopSpace            () mpnumeric(getdimen("topspace")             * factor) end
40function mp.BottomSpace         () mpnumeric(getdimen("bottomspace")          * factor) end
41function mp.BackSpace           () mpnumeric(getdimen("backspace")            * factor) end
42function mp.CutSpace            () mpnumeric(getdimen("cutspace")             * factor) end
43function mp.MakeupHeight        () mpnumeric(getdimen("makeupheight")         * factor) end
44function mp.MakeupWidth         () mpnumeric(getdimen("makeupwidth")          * factor) end
45function mp.TopHeight           () mpnumeric(getdimen("topheight")            * factor) end
46function mp.TopDistance         () mpnumeric(getdimen("topdistance")          * factor) end
47function mp.HeaderHeight        () mpnumeric(getdimen("headerheight")         * factor) end
48function mp.HeaderDistance      () mpnumeric(getdimen("headerdistance")       * factor) end
49function mp.TextHeight          () mpnumeric(getdimen("textheight")           * factor) end
50function mp.FooterDistance      () mpnumeric(getdimen("footerdistance")       * factor) end
51function mp.FooterHeight        () mpnumeric(getdimen("footerheight")         * factor) end
52function mp.BottomDistance      () mpnumeric(getdimen("bottomdistance")       * factor) end
53function mp.BottomHeight        () mpnumeric(getdimen("bottomheight")         * factor) end
54function mp.LeftEdgeWidth       () mpnumeric(getdimen("leftedgewidth")        * factor) end
55function mp.LeftEdgeDistance    () mpnumeric(getdimen("leftedgedistance")     * factor) end
56function mp.LeftMarginWidth     () mpnumeric(getdimen("leftmarginwidth")      * factor) end
57function mp.LeftMarginDistance  () mpnumeric(getdimen("leftmargindistance")   * factor) end
58function mp.TextWidth           () mpnumeric(getdimen("textwidth")            * factor) end
59function mp.RightMarginDistance () mpnumeric(getdimen("rightmargindistance")  * factor) end
60function mp.RightMarginWidth    () mpnumeric(getdimen("rightmarginwidth")     * factor) end
61function mp.RightEdgeDistance   () mpnumeric(getdimen("rightedgedistance")    * factor) end
62function mp.RightEdgeWidth      () mpnumeric(getdimen("rightedgewidth")       * factor) end
63function mp.InnerMarginDistance () mpnumeric(getdimen("innermargindistance")  * factor) end
64function mp.InnerMarginWidth    () mpnumeric(getdimen("innermarginwidth")     * factor) end
65function mp.OuterMarginDistance () mpnumeric(getdimen("outermargindistance")  * factor) end
66function mp.OuterMarginWidth    () mpnumeric(getdimen("outermarginwidth")     * factor) end
67function mp.InnerEdgeDistance   () mpnumeric(getdimen("inneredgedistance")    * factor) end
68function mp.InnerEdgeWidth      () mpnumeric(getdimen("inneredgewidth")       * factor) end
69function mp.OuterEdgeDistance   () mpnumeric(getdimen("outeredgedistance")    * factor) end
70function mp.OuterEdgeWidth      () mpnumeric(getdimen("outeredgewidth")       * factor) end
71function mp.PageOffset          () mpnumeric(getdimen("pagebackgroundoffset") * factor) end
72function mp.PageDepth           () mpnumeric(getdimen("pagebackgrounddepth")  * factor) end
73function mp.LayoutColumns       () mpnumeric(getcount("layoutcolumns"))                 end
74function mp.LayoutColumnDistance() mpnumeric(getdimen("layoutcolumndistance") * factor) end
75function mp.LayoutColumnWidth   () mpnumeric(getdimen("layoutcolumnwidth")    * factor) end
76function mp.SpineWidth          () mpnumeric(getdimen("spinewidth")           * factor) end
77function mp.PaperBleed          () mpnumeric(getdimen("paperbleed")           * factor) end
78
79function mp.RealPageNumber      () mpnumeric(getcount("realpageno")                   ) end
80function mp.LastPageNumber      () mpnumeric(getcount("lastpageno")                   ) end
81
82function mp.PageNumber          () mpnumeric(getcount("pageno")                       ) end
83function mp.NOfPages            () mpnumeric(getcount("lastpageno")                   ) end
84
85function mp.SubPageNumber       () mpnumeric(getcount("subpageno")                    ) end
86function mp.NOfSubPages         () mpnumeric(getcount("lastsubpageno")                ) end
87
88function mp.CurrentColumn       () mpnumeric(getcount("mofcolumns")                   ) end
89function mp.NOfColumns          () mpnumeric(getcount("nofcolumns")                   ) end
90
91function mp.BaseLineSkip        () mpnumeric(get     ("baselineskip",true)    * factor) end
92function mp.LineHeight          () mpnumeric(getdimen("lineheight")           * factor) end
93function mp.BodyFontSize        () mpnumeric(getdimen("bodyfontsize")         * factor) end
94
95function mp.TopSkip             () mpnumeric(get     ("topskip",true)         * factor) end
96function mp.StrutHeight         () mpnumeric(getdimen("strutht")              * factor) end
97function mp.StrutDepth          () mpnumeric(getdimen("strutdp")              * factor) end
98
99function mp.PageNumber          () mpnumeric(getcount("pageno")                       ) end
100function mp.RealPageNumber      () mpnumeric(getcount("realpageno")                   ) end
101function mp.NOfPages            () mpnumeric(getcount("lastpageno")                   ) end
102
103function mp.CurrentWidth        () mpnumeric(get     ("hsize")                * factor) end
104function mp.CurrentHeight       () mpnumeric(get     ("vsize")                * factor) end
105
106function mp.EmWidth             () mpnumeric(emwidths [false]                 * factor) end
107function mp.ExHeight            () mpnumeric(exheights[false]                 * factor) end
108
109function mp.OverlayWidth        () mpnumeric(getdimen("d_overlay_width")      * factor) end
110function mp.OverlayHeight       () mpnumeric(getdimen("d_overlay_height")     * factor) end
111function mp.OverlayDepth        () mpnumeric(getdimen("d_overlay_depth")      * factor) end
112function mp.OverlayLineWidth    () mpnumeric(getdimen("d_overlay_linewidth")  * factor) end
113function mp.OverlayOffset       () mpnumeric(getdimen("d_overlay_offset")     * factor) end
114function mp.OverlayRegion       () mpstring (getmacro("m_overlay_region")             ) end
115
116function mp.PageFraction        () mpnumeric(page_fraction()                          ) end
117function mp.OnRightPage         () mpboolean(on_right_page()                          ) end
118function mp.OnOddPage           () mpboolean(is_odd_page  ()                          ) end
119function mp.InPageBody          () mpboolean(in_body_page ()                          ) end
120
121function mp.OverlayWidth        () mpnumeric(getdimen("d_overlay_width")      * factor) end
122function mp.OverlayHeight       () mpnumeric(getdimen("d_overlay_height")     * factor) end
123function mp.OverlayDepth        () mpnumeric(getdimen("d_overlay_depth")      * factor) end
124function mp.OverlayLineWidth    () mpnumeric(getdimen("d_overlay_linewidth")  * factor) end
125function mp.OverlayOffset       () mpnumeric(getdimen("d_overlay_offset")     * factor) end
126function mp.OverlayRegion       () mpstring (getmacro("m_overlay_region")             ) end
127--       mp.CurrentLayout       () mpstring (getmacro("currentlayout"))                 end
128
129function mp.defaultcolormodel   () mpnumeric(defaultcolormodel())                       end
130
131mp.HSize          = mp.CurrentWidth
132mp.VSize          = mp.CurrentHeight
133mp.LastPageNumber = mp.NOfPages
134
135-- not much difference (10000 calls in a graphic neither as expansion seems to win
136-- over defining the macro etc) so let's not waste counters then
137
138-- function mp.OverlayColor()
139--     local c = mpcolor(
140--         getcount("c_overlay_colormodel"),
141--         getcount("c_overlay_color"),
142--         getcount("c_overlay_transparency")
143--     )
144--     mpquoted(c)
145-- end
146--
147-- function mp.OverlayLineColor()
148--     local c = mpcolor(
149--         getcount("c_overlay_colormodel"),
150--         getcount("c_overlay_linecolor"),
151--         getcount("c_overlay_linetransparency")
152--     )
153--     mpquoted(c)
154-- end
155