summaryrefslogtreecommitdiff
path: root/metapost/context/base/mp-mlib.mpiv
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2013-08-28 23:08:00 +0200
committerHans Hagen <pragma@wxs.nl>2013-08-28 23:08:00 +0200
commit944d2c4b1bfa004f6d6eb0aefb0c80bda272c0df (patch)
tree2793a0e023f93abd1f73a3ed902c8a3c8f68e0f1 /metapost/context/base/mp-mlib.mpiv
parent6636e93b03360741f50b4f809b086b6cbf342abd (diff)
downloadcontext-944d2c4b1bfa004f6d6eb0aefb0c80bda272c0df.tar.gz
beta 2013.08.28 23:08
Diffstat (limited to 'metapost/context/base/mp-mlib.mpiv')
-rw-r--r--metapost/context/base/mp-mlib.mpiv121
1 files changed, 94 insertions, 27 deletions
diff --git a/metapost/context/base/mp-mlib.mpiv b/metapost/context/base/mp-mlib.mpiv
index abf0eb974..214faec5b 100644
--- a/metapost/context/base/mp-mlib.mpiv
+++ b/metapost/context/base/mp-mlib.mpiv
@@ -99,6 +99,8 @@ newinternal textextoffset ; textextoffset := 0 ;
numeric mfun_tt_w[], mfun_tt_h[], mfun_tt_d[] ; % we can consider using colors (less hash space)
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 ;
@@ -117,6 +119,8 @@ 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 =
@@ -131,37 +135,100 @@ extra_beginfig := extra_beginfig & "mfun_reset_tex_texts ;" ;
% flush twice: once in location in order to pick up e.g. color properties,
% and once at the end because we need to flush missing ones.
-vardef rawtextext(expr str) =
+% vardef rawtextext(expr str) =
+% if str = "" :
+% nullpicture
+% elseif mfun_trial_run :
+% mfun_tt_n := mfun_tt_n + 1 ;
+% mfun_tt_o := image(draw origin) ; % save drawoptions
+% addto mfun_tt_p doublepath unitsquare
+% withprescript "tx_number=" & decimal mfun_tt_n
+% withprescript "tx_stage=extra"
+% withpostscript str ;
+% image (
+% addto currentpicture doublepath unitsquare
+% withprescript "tx_number=" & decimal mfun_tt_n
+% withprescript "tx_stage=trial"
+% withprescript "tx_color=" & colordecimals colorpart mfun_tt_o
+% withpostscript str
+% ; )
+% else :
+% mfun_tt_n := mfun_tt_n + 1 ;
+% if known mfun_tt_d[mfun_tt_n] :
+% image (
+% addto currentpicture doublepath unitsquare
+% xscaled mfun_tt_w[mfun_tt_n]
+% yscaled (mfun_tt_h[mfun_tt_n] + mfun_tt_d[mfun_tt_n])
+% withprescript "tx_number=" & decimal mfun_tt_n
+% withprescript "tx_stage=final"
+% % withpostscript str ; % for tracing
+% ; ) shifted (0,-mfun_tt_d[mfun_tt_n])
+% else :
+% image (
+% addto currentpicture doublepath unitsquare
+% ; )
+% fi
+% 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_p doublepath unitsquare
+% withprescript "tx_number=" & decimal mfun_tt_n
+% withprescript "tx_stage=extra"
+% withpostscript str ;
+% 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 ;
+% 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 ;
+
+vardef rawtextext(expr str) = % todo: avoid currentpicture
if str = "" :
nullpicture
- elseif mfun_trial_run :
+ else :
mfun_tt_n := mfun_tt_n + 1 ;
- addto mfun_tt_p doublepath unitsquare
- withprescript "tx_number=" & decimal mfun_tt_n
- withprescript "tx_stage=extra"
- withpostscript str ;
- image (
- addto currentpicture doublepath unitsquare
+ 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"
- withpostscript str
- )
- else :
- mfun_tt_n := mfun_tt_n + 1 ;
- if known mfun_tt_d[mfun_tt_n] :
- image (
- addto currentpicture doublepath unitsquare
- xscaled mfun_tt_w[mfun_tt_n]
- yscaled (mfun_tt_h[mfun_tt_n] + mfun_tt_d[mfun_tt_n])
- withprescript "tx_number=" & decimal mfun_tt_n
- withprescript "tx_stage=final"
- ; % withpostscript str ;
- ) shifted (0,-mfun_tt_d[mfun_tt_n])
+ 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 :
- image (
- addto currentpicture doublepath unitsquare ;
- )
- fi
+ addto mfun_tt_c doublepath unitsquare ; % unitpicture
+ fi ;
+ mfun_tt_c
fi
enddef ;
@@ -651,8 +718,8 @@ else :
elseif colormodel p = 7 :
withcolor (cyanpart p,magentapart p,yellowpart p,blackpart p)
fi
- withprescript prescript p
- withpostscript postscript p
+ withprescript prescriptpart p
+ withpostscript postscriptpart p
enddef ;
fi ;