summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/minim-mp/minim.mp
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/minim-mp/minim.mp')
-rw-r--r--macros/luatex/generic/minim-mp/minim.mp43
1 files changed, 35 insertions, 8 deletions
diff --git a/macros/luatex/generic/minim-mp/minim.mp b/macros/luatex/generic/minim-mp/minim.mp
index b0df361b94..ed152a018b 100644
--- a/macros/luatex/generic/minim-mp/minim.mp
+++ b/macros/luatex/generic/minim-mp/minim.mp
@@ -1,8 +1,7 @@
if known minim.mp:
- message "skipping: already read";
expandafter endinput fi
-minim.mp := 1.3;
+minim.mp := 1.6;
% This file only contains code that is not specific to the minim metapost
% processor. See minim-mp.mp for the wireup of minim-mp’s extensions.
@@ -42,6 +41,9 @@ vardef clipto text t =
vardef clipout text t =
clip currentpicture to
for c = t: c -- cycle -- endfor cycle enddef;
+vardef getbounds primary p = % without bboxmargin
+ llcorner p -- lrcorner p -- urcorner p -- ulcorner p -- cycle
+enddef;
% cmyk colours
cmykcolor cyan, magenta, yellow, key;
@@ -50,12 +52,9 @@ magenta = (0,1,0,0);
yellow = (0,0,1,0);
key = (0,0,0,1);
-% also in minim-mp.mp
-if unknown rgb_to_gray red:
- vardef rgb_to_gray expr c =
- 0.2126*redpart c + 0.7152*greenpart c + 0.0722*bluepart c
- enddef;
-fi
+vardef rgb_to_gray expr c =
+ 0.2126*redpart c + 0.7152*greenpart c + 0.0722*bluepart c
+enddef;
% shorthands
def save_pen text t = save t; pen t; enddef;
@@ -91,3 +90,31 @@ vardef arc (expr thetafrom, thetalen) =
and (p - c) .. p
endfor; a enddef;
+% some linear algebra
+primarydef v extprod w = begingroup
+ xpart v * ypart w - ypart v * xpart w
+endgroup enddef;
+
+vardef collinear(expr p,q,r) =
+ (p <> q) and (q <> r) and (p <> r)
+ and (eps > abs( (p-q) extprod (q-r) ))
+enddef;
+
+% type helpers
+def typeof (expr v) =
+ if numeric v: numeric
+ elseif pair v: pair
+ elseif color v: color
+ elseif cmykcolor v: cmykcolor
+ elseif boolean v: boolean
+ elseif path v: path
+ elseif picture v: picture
+ elseif transform v: transform
+ elseif string v: string
+ elseif pen v: pen
+ fi enddef;
+
+vardef empty suffix s = save_boolean b;
+ b := string _EMPTY_ s; b enddef;
+string _EMPTY_;
+