1
2
3
4
5
6
7
8
9
10
11
12
13
14if known context_luas : endinput ; fi ;
15
16
17
18
19
20
21
22
23
24
25boolean context_luas ; context_luas := true ;
26
27string mfun_lua_bs ; mfun_lua_bs := "[===[" ;
28string mfun_lua_es ; mfun_lua_es := "]===]" ;
29
30vardef mlib_luas_luacall(text t) =
31 runscript("" for s = t :
32 if string s :
33 & s
34
35 elseif numeric s :
36 & decimal s
37 elseif boolean s :
38 & if s : "true" else : "false" fi
39 elseif pair s :
40 & mfun_pair_to_table(s)
41 elseif path s :
42 & mfun_path_to_table(s)
43 elseif rgbcolor s :
44 & mfun_rgb_to_table(s)
45 elseif cmykcolor s :
46 & mfun_cmyk_to_table(s)
47 else :
48 & ditto & tostring(s) & ditto
49 fi endfor
50 )
51enddef ;
52
53newinternal mfun_luas_b ;
54
55def mlib_luas_luadone =
56 exitif numeric begingroup mfun_luas_b := 1 ; endgroup ;
57enddef ;
58
59vardef mlib_luas_lualist(expr c)(text t) =
60 interim mfun_luas_b := 0 ;
61 runscript(c & for s = t :
62 if mfun_luas_b = 0 :
63 "("
64
65 mlib_luas_luadone
66 else :
67 ","
68 fi
69 &
70 if string s :
71 mfun_lua_bs & s & mfun_lua_es
72 elseif numeric s :
73 decimal s
74 elseif boolean s :
75 if s : "true" else : "false" fi
76 elseif pair s :
77 mfun_pair_to_table(s)
78 elseif path s :
79 mfun_path_to_table(s)
80 elseif rgbcolor s :
81 mfun_rgb_to_table(s)
82 elseif cmykcolor s :
83 mfun_cmyk_to_table(s)
84 else :
85 ditto & tostring(s) & ditto
86 fi & endfor if mfun_luas_b = 0 : "()" else : ")" fi
87 )
88enddef ;
89
90def luacall = mlib_luas_luacall enddef ;
91
92vardef lualist@#(text t) = mlib_luas_lualist(str @#)(t) enddef ;
93
94string mlib_luas_s ;
95
96vardef lua@#(text t) =
97 mlib_luas_s := str @# ;
98 if length(mlib_luas_s) > 0 :
99 mlib_luas_lualist(mlib_luas_s,t)
100 else :
101 mlib_luas_luacall(t)
102 fi
103enddef ;
104
105vardef MP@#(text t) =
106 mlib_luas_lualist("MP." & str @#,t)
107enddef ;
108
109def message expr t =
110 lua.mp.report(tostring(t)) ;
111enddef ;
112
113
114
115
116
117
118
119
120
121def resolvedcolor primary s =
122 if string s :
123 runscript("mp.mf_named_color('" & s & "')")
124 else :
125 s
126 fi
127enddef ;
128
129
130
131vardef texmode (expr s) = lua.mp("mode", s) enddef ;
132vardef systemmode(expr s) = lua.mp("systemmode",s) enddef ;
133
134
135
136vardef isarray suffix a = lua.mp.isarray (str a) enddef ;
137vardef prefix suffix a = lua.mp.prefix (str a) enddef ;
138vardef dimension suffix a = lua.mp.dimension(str a) enddef ;
139
140
141
142vardef getmacro(expr k) = lua.mp._get_macro_(k) enddef ;
143vardef getdimen(expr k) = lua.mp._get_dimen_(k) enddef ;
144vardef getcount(expr k) = lua.mp._get_count_(k) enddef ;
145vardef gettoks (expr k) = lua.mp._get_toks_ (k) enddef ;
146
147def setmacro(expr k,v) = lua.mp._set_macro_(k,v) enddef ;
148def setdimen(expr k,v) = lua.mp._set_dimen_(k,v) enddef ;
149def setcount(expr k,v) = lua.mp._set_count_(k,v) enddef ;
150def settoks (expr k,v) = lua.mp._set_toks_ (k,v) enddef ;
151
152def setglobalmacro(expr k,v) = lua.mp._set_global_macro_(k,v) enddef ;
153def setglobaldimen(expr k,v) = lua.mp._set_global_dimen_(k,v) enddef ;
154def setglobalcount(expr k,v) = lua.mp._set_global_count_(k,v) enddef ;
155def setglobaltoks (expr k,v) = lua.mp._set_global_toks_ (k,v) enddef ;
156
157vardef positionpath (expr name) = lua.mp.positionpath (name) enddef ;
158vardef positioncurve (expr name) = lua.mp.positioncurve (name) enddef ;
159vardef positionxy (expr name) = lua.mp.positionxy (name) enddef ;
160vardef positionpxy (expr name) = lua.mp.positionpxy (name) enddef ;
161vardef positionwhd (expr name) = lua.mp.positionwhd (name) enddef ;
162vardef positionpage (expr name) = lua.mp.positionpage (name) enddef ;
163vardef positionregion(expr name) = lua.mp.positionregion(name) enddef ;
164vardef positionbox (expr name) = lua.mp.positionbox (name) enddef ;
165vardef positionanchor = lua.mp.positionanchor() enddef ;
166
167let wdpart = redpart ;
168let htpart = greenpart ;
169let dppart = bluepart ;
170
171vardef positioninregion =
172 currentpicture := currentpicture shifted positionxy(positionanchor) ;
173enddef ;
174
175vardef positionatanchor(expr name) =
176 currentpicture := currentpicture shifted positionxy(name) ;
177enddef ;
178
179vardef texvar(expr name) = lua.mp.texvar(name) enddef ;
180vardef texstr(expr name) = lua.mp.texstr(name) enddef ;
181
182
183
184def inpath suffix p =
185 = 1 step 1 until
186 begingroup
187 save mfun_inpath_r,mfun_inpath_n ; path mfun_inpath_r ;
188 mfun_inpath_r = p ;
189 mfun_inpath_n := lua.mp.mf_path_length(str mfun_inpath_r) ;
190 if mfun_inpath_n = 0 : 1 else : mfun_inpath_n fi
191 endgroup
192enddef ;
193
194
195
196
197
198vardef pointof primary i = runscript("mp.mf_path_point(" & decimal i & ")") enddef ;
199vardef leftof primary i = runscript("mp.mf_path_left(" & decimal i & ")") enddef ;
200vardef rightof primary i = runscript("mp.mf_path_right(" & decimal i & ")") enddef ;
201
202extra_endfig := extra_endfig & " lua.mp.mf_path_reset() ; " ;
203
204vardef utflen(expr s) = lua.mp.utflen(s) enddef ;
205vardef utfsub(expr s,f,t) = lua.mp.utfsub(s,f,t) enddef ;
206 |