From 19750b667c23a9f276032837d6c517063376bd0c Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 14 Dec 2021 19:36:30 +0100 Subject: 2021-12-14 19:19:00 --- metapost/context/base/mpxl/mp-lmtx.mpxl | 51 +++++++++++++++++---------------- 1 file changed, 26 insertions(+), 25 deletions(-) (limited to 'metapost') diff --git a/metapost/context/base/mpxl/mp-lmtx.mpxl b/metapost/context/base/mpxl/mp-lmtx.mpxl index 4bd5950c1..9adacb9d9 100644 --- a/metapost/context/base/mpxl/mp-lmtx.mpxl +++ b/metapost/context/base/mpxl/mp-lmtx.mpxl @@ -601,6 +601,7 @@ presetparameters "function" [ xarrow = "", yarrow = "", reverse = false, + % function : metatable is parent ] ; def lmt_function = applyparameters "function" "lmt_do_function" enddef ; @@ -612,8 +613,7 @@ vardef lmt_do_function_p(expr xmin, xmax, xstep, code, shape, close, fcolor, dsi q := (xmin,0) -- p -- (xmax,0) -- cycle ; fill q withcolor fcolor ; else : - draw p withpen currentpen scaled dsize withcolor dcolor - ; + draw p withpen currentpen scaled dsize withcolor dcolor ; fi ; if psize > 0 : if psymbol = "dot" : @@ -641,8 +641,8 @@ vardef lmt_do_function = draw image ( save xmin, xmax, xstep, xsmall, xlarge, ymin, ymax, ystep, ysmall, ylarge, p ; save code, option, txl, txs, tyl, tys, swap ; - string code, option ; - path txl, txs, tyl, tys ; boolean swap ; + string code, option, shape ; + path txl, txs, tyl, tys ; boolean swap, close ; picture p ; xmin := getparameter "xmin" ; @@ -657,36 +657,37 @@ vardef lmt_do_function = ylarge := getparameter "ylarge" ; code := getparameter "code" ; swap := getparameter "reverse" ; - + shape := getparameter "shape" ; + close := getparameter "close" ; p := image ( - if (getparametercount "functions") > 0 : for s = 1 upto getparametercount "functions" : - pushparameters "functions" s ; + % todo: pushparameters with a metatable, here parent + pushparameters "functions" [s] ; lmt_do_function_p ( - getparameter "xmin", - getparameter "xmax", - getparameter "xstep", - getparameter "code", - getparameter "shape", - getparameter "close", - getparameter "fillcolor", - getparameter "drawsize", - getparameter "drawcolor", - getparameter "pointsymbol", - getparameter "pointsize", - getparameter "pointcolor" + (getparameterdefault "xmin" xmin), + (getparameterdefault "xmax" xmax), + (getparameterdefault "xstep" xstep), + (getparameterdefault "code" code), + (getparameterdefault "shape" shape), + (getparameterdefault "close" close), + (getparameterdefault "fillcolor" (getparameter "fillcolor")), + (getparameterdefault "drawsize" (getparameter "drawsize")), + (getparameterdefault "drawcolor" (getparameter "drawcolor")), + (getparameterdefault "pointsymbol" (getparameter "pointsymbol")), + (getparameterdefault "pointsize" (getparameter "pointsize")), + (getparameterdefault "pointcolor" (getparameter "pointcolor")) ) ; popparameters ; endfor ; elseif code <> "" : lmt_do_function_p ( - getparameter "xmin", - getparameter "xmax", - getparameter "xstep", - getparameter "code", - getparameter "shape", - getparameter "close", + xmin, + xmax, + xstep, + code, + shape, + close, getparameter "fillcolor", getparameter "drawsize", getparameter "drawcolor", -- cgit v1.2.3