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