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 bpfactor <const> = number.dimenfactors.bp
10
11local isdimen = tex.isdimen
12local iscount = tex.iscount
13local getdimen = tex.getdimen
14local getcount = tex.getcount
15local getmacro = tokens.getters.macro
16local get = tex.get
17
18local registerscript = metapost.registerscript
19local registerdirect = metapost.registerdirect
20
21do
22
23 local t = os.date("*t")
24
25
26
27
28
29 local assignment_code = metapost.codes.assignment
30
31 local mpscannext = mp.scan.next
32 local mpscaninteger = mp.scan.integer
33
34 local function item(name)
35 local n = mpscannext(true)
36 if n == assignment_code then
37 mpscannext()
38 t[name] = mpscaninteger()
39 else
40 return t[name]
41 end
42 end
43
44 registerdirect("year", function() return item("year") end)
45 registerdirect("month", function() return item("month") end)
46 registerdirect("day", function() return item("day") end)
47 registerdirect("hour", function() return item("hour") end)
48 registerdirect("minute", function() return item("min") end)
49 registerdirect("second", function() return item("sec") end)
50
51end
52
53do
54
55
56
57 registerdirect("PaperHeight", function() return getdimen("paperheight") * bpfactor end)
58 registerdirect("PaperWidth", function() return getdimen("paperwidth") * bpfactor end)
59 registerdirect("PrintPaperHeight", function() return getdimen("printpaperheight") * bpfactor end)
60 registerdirect("PrintPaperWidth", function() return getdimen("printpaperwidth") * bpfactor end)
61 registerdirect("BackSpace", function() return getdimen("backspace") * bpfactor end)
62 registerdirect("CutSpace", function() return getdimen("cutspace") * bpfactor end)
63
64 registerdirect("LeftEdgeWidth", function() return getdimen("leftedgewidth") * bpfactor end)
65 registerdirect("LeftEdgeDistance", function() return getdimen("leftedgedistance") * bpfactor end)
66 registerdirect("LeftMarginWidth", function() return getdimen("leftmarginwidth") * bpfactor end)
67 registerdirect("LeftMarginDistance", function() return getdimen("leftmargindistance") * bpfactor end)
68 registerdirect("RightMarginDistance", function() return getdimen("rightmargindistance") * bpfactor end)
69 registerdirect("RightMarginWidth", function() return getdimen("rightmarginwidth") * bpfactor end)
70 registerdirect("RightEdgeDistance", function() return getdimen("rightedgedistance") * bpfactor end)
71 registerdirect("RightEdgeWidth", function() return getdimen("rightedgewidth") * bpfactor end)
72
73
74
75
76
77
78
79
80
81
82 local d_leftedgewidth <const> = isdimen("leftedgewidth")
83 local d_leftedgedistance <const> = isdimen("leftedgedistance")
84 local d_leftmarginwidth <const> = isdimen("leftmarginwidth")
85 local d_leftmargindistance <const> = isdimen("leftmargindistance")
86 local d_rightmargindistance <const> = isdimen("rightmargindistance")
87 local d_rightmarginwidth <const> = isdimen("rightmarginwidth")
88 local d_rightedgedistance <const> = isdimen("rightedgedistance")
89 local d_rightedgewidth <const> = isdimen("rightedgewidth")
90
91 registerdirect("InnerMarginDistance", function() return getdimen(d_leftmargindistance ) * bpfactor end)
92 registerdirect("InnerMarginWidth", function() return getdimen(d_leftmarginwidth ) * bpfactor end)
93 registerdirect("OuterMarginDistance", function() return getdimen(d_rightmargindistance) * bpfactor end)
94 registerdirect("OuterMarginWidth", function() return getdimen(d_rightmarginwidth ) * bpfactor end)
95 registerdirect("InnerEdgeDistance", function() return getdimen(d_leftmargindistance ) * bpfactor end)
96 registerdirect("InnerEdgeWidth", function() return getdimen(d_leftmarginwidth ) * bpfactor end)
97 registerdirect("OuterEdgeDistance", function() return getdimen(d_rightedgedistance ) * bpfactor end)
98 registerdirect("OuterEdgeWidth", function() return getdimen(d_rightedgewidth ) * bpfactor end)
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 local d_topspace <const> = isdimen("topspace") registerdirect("TopSpace", function() return getdimen(d_topspace) * bpfactor end)
114 local d_bottomspace <const> = isdimen("bottomspace") registerdirect("BottomSpace", function() return getdimen(d_bottomspace) * bpfactor end)
115 local d_makeupheight <const> = isdimen("makeupheight") registerdirect("MakeupHeight", function() return getdimen(d_makeupheight) * bpfactor end)
116 local d_makeupwidth <const> = isdimen("makeupwidth") registerdirect("MakeupWidth", function() return getdimen(d_makeupwidth) * bpfactor end)
117 local d_topheight <const> = isdimen("topheight") registerdirect("TopHeight", function() return getdimen(d_topheight) * bpfactor end)
118 local d_topdistance <const> = isdimen("topdistance") registerdirect("TopDistance", function() return getdimen(d_topdistance) * bpfactor end)
119 local d_headerheight <const> = isdimen("headerheight") registerdirect("HeaderHeight", function() return getdimen(d_headerheight) * bpfactor end)
120 local d_headerdistance <const> = isdimen("headerdistance") registerdirect("HeaderDistance", function() return getdimen(d_headerdistance) * bpfactor end)
121 local d_textheight <const> = isdimen("textheight") registerdirect("TextHeight", function() return getdimen(d_textheight) * bpfactor end)
122 local d_footerdistance <const> = isdimen("footerdistance") registerdirect("FooterDistance", function() return getdimen(d_footerdistance) * bpfactor end)
123 local d_footerheight <const> = isdimen("footerheight") registerdirect("FooterHeight", function() return getdimen(d_footerheight) * bpfactor end)
124 local d_bottomdistance <const> = isdimen("bottomdistance") registerdirect("BottomDistance", function() return getdimen(d_bottomdistance) * bpfactor end)
125 local d_bottomheight <const> = isdimen("bottomheight") registerdirect("BottomHeight", function() return getdimen(d_bottomheight) * bpfactor end)
126 local d_textwidth <const> = isdimen("textwidth") registerdirect("TextWidth", function() return getdimen(d_textwidth) * bpfactor end)
127
128end
129
130do
131
132 local d_pagebackgroundoffset <const> = isdimen("pagebackgroundoffset") registerdirect("PageOffset", function() return getdimen(d_pagebackgroundoffset) * bpfactor end)
133 local d_pagebackgrounddepth <const> = isdimen("pagebackgrounddepth") registerdirect("PageDepth", function() return getdimen(d_pagebackgrounddepth) * bpfactor end)
134 local c_layoutcolumns <const> = iscount("layoutcolumns") registerdirect("LayoutColumns", function() return getcount(c_layoutcolumns) end)
135 local d_layoutcolumndistance <const> = isdimen("layoutcolumndistance") registerdirect("LayoutColumnDistance", function() return getdimen(d_layoutcolumndistance) * bpfactor end)
136 local d_layoutcolumnwidth <const> = isdimen("layoutcolumnwidth") registerdirect("LayoutColumnWidth", function() return getdimen(d_layoutcolumnwidth) * bpfactor end)
137 local d_spinewidth <const> = isdimen("spinewidth") registerdirect("SpineWidth", function() return getdimen(d_spinewidth) * bpfactor end)
138 local d_paperbleed <const> = isdimen("paperbleed") registerdirect("PaperBleed", function() return getdimen(d_paperbleed) * bpfactor end)
139
140end
141
142do
143
144 local c_realpageno <const> = iscount("realpageno") registerdirect("RealPageNumber", function() return getcount(c_realpageno) end)
145 local c_lastpageno <const> = iscount("lastpageno") registerdirect("LastPageNumber", function() return getcount(c_lastpageno) end)
146
147 local c_userpageno <const> = iscount("userpageno") registerdirect("PageNumber", function() return getcount(c_userpageno) end)
148 local c_lastpageno <const> = iscount("lastpageno") registerdirect("NOfPages", function() return getcount(c_lastpageno) end)
149
150 local c_subpageno <const> = iscount("subpageno") registerdirect("SubPageNumber", function() return getcount(c_subpageno) end)
151 local c_lastsubpageno <const> = iscount("lastsubpageno") registerdirect("NOfSubPages", function() return getcount(c_lastsubpageno) end)
152
153 local c_mofcolumns <const> = iscount("mofcolumns") registerdirect("CurrentColumn", function() return getcount(c_mofcolumns) end)
154 local c_nofcolumns <const> = iscount("nofcolumns") registerdirect("NOfColumns", function() return getcount(c_nofcolumns) end)
155
156end
157
158do
159
160 registerdirect("BaseLineSkip", function() return get("baselineskip",true) * bpfactor end)
161 registerdirect("TopSkip", function() return get("topskip",true) * bpfactor end)
162 registerdirect("CurrentWidth", function() return get("hsize") * bpfactor end)
163 registerdirect("CurrentHeight", function() return get("vsize") * bpfactor end)
164 registerdirect("HSize", function() return get("hsize") * bpfactor end)
165 registerdirect("VSize", function() return get("vsize") * bpfactor end)
166
167 local emwidths = fonts.hashes.emwidths
168 local exheights = fonts.hashes.exheights
169
170 registerdirect("EmWidth", function() return emwidths [false] * bpfactor end)
171 registerdirect("ExHeight", function() return exheights[false] * bpfactor end)
172
173 local d_uunit <const> = isdimen("uunit") registerdirect("uunit", function() return getdimen(d_uunit) * bpfactor end)
174
175end
176
177do
178
179 local d_lineheight <const> = isdimen("lineheight") registerdirect("LineHeight", function() return getdimen(d_lineheight) * bpfactor end)
180 local d_bodyfontsize <const> = isdimen("bodyfontsize") registerdirect("BodyFontSize", function() return getdimen(d_bodyfontsize) * bpfactor end)
181 local d_strutht <const> = isdimen("strutht") registerdirect("StrutHeight", function() return getdimen(d_strutht) * bpfactor end)
182 local d_strutdp <const> = isdimen("strutdp") registerdirect("StrutDepth", function() return getdimen(d_strutdp) * bpfactor end)
183
184end
185
186do
187
188 local d_overlay_width <const> = isdimen("d_overlay_width") registerdirect("OverlayWidth", function() return getdimen(d_overlay_width) * bpfactor end)
189 local d_overlay_height <const> = isdimen("d_overlay_height") registerdirect("OverlayHeight", function() return getdimen(d_overlay_height) * bpfactor end)
190 local d_overlay_depth <const> = isdimen("d_overlay_depth") registerdirect("OverlayDepth", function() return getdimen(d_overlay_depth) * bpfactor end)
191 local d_overlay_linewidth <const> = isdimen("d_overlay_linewidth") registerdirect("OverlayLineWidth", function() return getdimen(d_overlay_linewidth) * bpfactor end)
192 local d_overlay_offset <const> = isdimen("d_overlay_offset") registerdirect("OverlayOffset", function() return getdimen(d_overlay_offset) * bpfactor end)
193 local d_overlay_mathaxis <const> = isdimen("d_overlay_mathaxis") registerdirect("OverlayMathAxis", function() return getdimen(d_overlay_mathaxis) * bpfactor end)
194 local d_overlay_mathexheight <const> = isdimen("d_overlay_mathexheight") registerdirect("OverlayMathExHeight", function() return getdimen(d_overlay_mathexheight) * bpfactor end)
195 local d_overlay_mathemwidth <const> = isdimen("d_overlay_mathemwidth") registerdirect("OverlayMathEmWidth", function() return getdimen(d_overlay_mathemwidth) * bpfactor end)
196
197 registerdirect("OverlayRegion", function() return getmacro("m_overlay_region") end)
198 registerdirect("CurrentLayout", function() return getmacro("currentlayout") end)
199 registerdirect("OverlayColor", function() return getmacro("overlaycolor") end)
200 registerdirect("OverlayLineColor", function() return getmacro("overlaylinecolor") end)
201
202end
203
204do
205
206 registerdirect("LastChangedLayoutPage",function() return getcount("c_page_layouts_changed") end)
207 registerdirect("SwapMarginDimensions", function() token.expandmacro("swapmargindimensions") end)
208
209 registerdirect("PageFraction", structures.pages.fraction)
210 registerdirect("OnRightPage", structures.pages.on_right)
211 registerdirect("OnOddPage", structures.pages.is_odd)
212 registerdirect("InPageBody", structures.pages.in_body)
213
214
215end
216
217do
218
219 local function defaultcolormodel()
220 local colormethod = getcount("MPcolormethod")
221 return (colormethod == 0 or colormethod == 1) and 1 or 3
222 end
223
224 registerdirect("defaultcolormodel", defaultcolormodel)
225
226end
227
228do
229
230
231
232
233
234
235
236 registerdirect("RuleWidth", function() return getdimen("d_rule_width") * bpfactor end)
237 registerdirect("RuleHeight", function() return getdimen("d_rule_height") * bpfactor end)
238 registerdirect("RuleDepth", function() return getdimen("d_rule_depth") * bpfactor end)
239 registerdirect("RuleH", function() return getdimen("d_rule_h") * bpfactor end)
240 registerdirect("RuleV", function() return getdimen("d_rule_v") * bpfactor end)
241 registerdirect("RuleThickness", function() return getdimen("d_rule_line") * bpfactor end)
242 registerdirect("RuleOffset", function() return getdimen("d_rule_offset") / 65536 end)
243 registerdirect("RuleDirection", function() return getmacro("m_rule_direction") end)
244 registerdirect("RuleFactor", function() return getdimen("d_rule_factor") * bpfactor end)
245 registerdirect("RuleOption", function() return getmacro("m_rule_option") end)
246 registerscript("RuleColor", function() return getmacro("m_rule_color") end)
247
248end
249
250
251
252do
253
254 local d_adaptive_width <const> = isdimen("d_adaptive_width") registerdirect("AdaptiveWidth", function() return getdimen(d_adaptive_width) * bpfactor end)
255 local d_adaptive_height <const> = isdimen("d_adaptive_height") registerdirect("AdaptiveHeight", function() return getdimen(d_adaptive_height) * bpfactor end)
256 local d_adaptive_depth <const> = isdimen("d_adaptive_depth") registerdirect("AdaptiveDepth", function() return getdimen(d_adaptive_depth) * bpfactor end)
257 local d_adaptive_line <const> = isdimen("d_adaptive_line") registerdirect("AdaptiveThickness", function() return getdimen(d_adaptive_line) * bpfactor end)
258 registerdirect("AdaptiveColor", function() return getmacro("m_adaptive_color") end)
259
260 registerdirect("AdaptiveTotal", function()
261 return (getdimen(d_adaptive_height) + getdimen(d_adaptive_depth)) * bpfactor
262 end)
263
264end
265 |