summaryrefslogtreecommitdiff
path: root/metapost/context/base/mp-mlib.mpiv
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2013-09-30 19:49:00 +0200
committerHans Hagen <pragma@wxs.nl>2013-09-30 19:49:00 +0200
commit3bd0c3e25a26069d71a5c905cd8af54b38172655 (patch)
tree72f5badf7411fed8ea08420940eaa4ecdca53384 /metapost/context/base/mp-mlib.mpiv
parentfff0f2637579a3259e5da3e8c36436f0ab89aa23 (diff)
downloadcontext-3bd0c3e25a26069d71a5c905cd8af54b38172655.tar.gz
beta 2013.09.30 19:49
Diffstat (limited to 'metapost/context/base/mp-mlib.mpiv')
-rw-r--r--metapost/context/base/mp-mlib.mpiv54
1 files changed, 47 insertions, 7 deletions
diff --git a/metapost/context/base/mp-mlib.mpiv b/metapost/context/base/mp-mlib.mpiv
index 1f1146def..088c856a7 100644
--- a/metapost/context/base/mp-mlib.mpiv
+++ b/metapost/context/base/mp-mlib.mpiv
@@ -781,7 +781,7 @@ enddef ;
% passvariable("boolean",false) ;
% passvariable("path",fullcircle scaled 1cm) ;
-vardef mfun_p_to_s(expr p,i) =
+vardef mfun_point_to_string(expr p,i) =
decimal xpart (point i of p) & " " &
decimal ypart (point i of p) & " " &
decimal xpart (precontrol i of p) & " " &
@@ -790,14 +790,54 @@ vardef mfun_p_to_s(expr p,i) =
decimal ypart (postcontrol i of p)
enddef ;
+vardef mfun_transform_to_string(expr t) =
+ decimal xxpart t & " " & % rx
+ decimal xypart t & " " & % sx
+ decimal yxpart t & " " & % sy
+ decimal yypart t & " " & % ry
+ decimal xpart t & " " & % tx
+ decimal ypart t % ty
+enddef ;
+
+vardef mfun_numeric_to_string(expr n) =
+ decimal n
+enddef ;
+
+vardef mfun_pair_to_string(expr p) =
+ decimal xpart p & " " &
+ decimal ypart p
+enddef ;
+
+vardef mfun_rbgcolor_to_string(expr c) =
+ decimal redpart c & " " &
+ decimal greenpart c & " " &
+ decimal bluepart c
+enddef ;
+
+vardef mfun_cmykcolor_to_string(expr c) =
+ decimal cyanpart c & " " &
+ decimal magentapart c & " " &
+ decimal yellowpart c & " " &
+ decimal blackpart c
+enddef ;
+
+vardef mfun_path_to_string(expr p) =
+ mfun_point_to_string(value,1) for i=2 upto length(value) : & " " & mfun_point_to_string(value,i) endfor
+enddef ;
+
+vardef mfun_boolean_to_string(expr b) =
+ if value : "true" else : "false" fi
+enddef ;
+
def passvariable(expr key, value) =
special
- if numeric value : "1:" & key & "=" & decimal value
- elseif pair value : "4:" & key & "=" & ddecimal value
- elseif rgbcolor value : "5:" & key & "=" & dddecimal value
- elseif cmykcolor value : "6:" & key & "=" & ddddecimal value
- elseif boolean value : "3:" & key & "=" & if value : "true" else : "false" fi
- elseif path value : "7:" & key & "=" & mfun_p_to_s(value,1) for i=2 upto length(value) : & " " & mfun_p_to_s(value,i) endfor
+ if numeric value : "1:" & key & "=" & mfun_numeric_to_string(value)
+ elseif pair value : "4:" & key & "=" & mfun_pair_to_string(value)
+ elseif rgbcolor value : "5:" & key & "=" & mfun_rgbcolor_to_string(value)
+ elseif cmykcolor value : "6:" & key & "=" & mfun_cmykcolor_to_string(value)
+ elseif boolean value : "3:" & key & "=" & mfun_boolean_to_string(value)
+ elseif path value : "7:" & key & "=" & mfun_path_to_string(value)
+ elseif transform value : "8:" & key & "=" & mfun_transform_to_string(value)
else : "2:" & key & "=" & value
fi ;
enddef ;