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 |