%D \module %D [ file=mp-bare.mpiv, %D version=2014.10.31, %D title=\CONTEXT\ \METAPOST\ graphics, %D subtitle=plain plugins, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See licen-en.pdf for %C details. if known context_bare : endinput ; fi ; boolean context_bare ; context_bare := true ; numeric mfun_tt_w[], mfun_tt_h[], mfun_tt_d[] ; numeric mfun_tt_n ; mfun_tt_n := 0 ; picture mfun_tt_p ; mfun_tt_p := nullpicture ; picture mfun_tt_o ; mfun_tt_o := nullpicture ; picture mfun_tt_c ; mfun_tt_c := nullpicture ; if unknown mfun_trial_run : boolean mfun_trial_run ; mfun_trial_run := false ; fi ; if unknown mfun_first_run : boolean mfun_first_run ; mfun_first_run := true ; fi ; def mfun_reset_tex_texts = mfun_tt_n := 0 ; mfun_tt_p := nullpicture ; mfun_tt_o := nullpicture ; % redundant mfun_tt_c := nullpicture ; % redundant enddef ; def mfun_flush_tex_texts = addto currentpicture also mfun_tt_p enddef ; extra_beginfig := extra_beginfig & "mfun_reset_tex_texts ;" ; extra_endfig := "mfun_flush_tex_texts ; mfun_reset_tex_texts ; " & extra_endfig ; vardef colordecimals primary c = if cmykcolor c : decimal cyanpart c & ":" & decimal magentapart c & ":" & decimal yellowpart c & ":" & decimal blackpart c elseif rgbcolor c : decimal redpart c & ":" & decimal greenpart c & ":" & decimal bluepart c else : decimal c fi enddef ; vardef rawtextext(expr str) = % todo: avoid currentpicture if str = "" : nullpicture else : mfun_tt_n := mfun_tt_n + 1 ; mfun_tt_c := nullpicture ; if mfun_trial_run : mfun_tt_o := nullpicture ; addto mfun_tt_o doublepath origin _op_ ; % save drawoptions addto mfun_tt_c doublepath unitsquare withprescript "tx_number=" & decimal mfun_tt_n withprescript "tx_stage=trial" withprescript "tx_color=" & colordecimals colorpart mfun_tt_o withpostscript str ; addto mfun_tt_p also mfun_tt_c ; elseif known mfun_tt_d[mfun_tt_n] : addto mfun_tt_c doublepath unitsquare xscaled mfun_tt_w[mfun_tt_n] yscaled (mfun_tt_h[mfun_tt_n] + mfun_tt_d[mfun_tt_n]) shifted (0,-mfun_tt_d[mfun_tt_n]) withprescript "tx_number=" & decimal mfun_tt_n withprescript "tx_stage=final" ; else : addto mfun_tt_c doublepath unitsquare ; % unitpicture fi ; mfun_tt_c fi enddef ; primarydef str infont name = % nasty hack if name = "" : rawtextext(str) else : rawtextext("\definedfont[" & name & "]" & str) fi enddef ;