diff options
Diffstat (limited to 'Master/texmf-dist/metapost/blockdraw_mp/shiftoff.mp')
-rw-r--r-- | Master/texmf-dist/metapost/blockdraw_mp/shiftoff.mp | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Master/texmf-dist/metapost/blockdraw_mp/shiftoff.mp b/Master/texmf-dist/metapost/blockdraw_mp/shiftoff.mp new file mode 100644 index 00000000000..b5ad73f834c --- /dev/null +++ b/Master/texmf-dist/metapost/blockdraw_mp/shiftoff.mp @@ -0,0 +1,130 @@ +%% shiftoff.mp +%% Copyright 2006 Henrik Tidefelt +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained´. +% +% The Current Maintainer of this work is Henrik Tidefelt, +% tidefelt@isy.liu.se. +% +% This work, referred to as blockdraw.mp, consists of the files +% shiftoff.mp +% blockdraw.mp +% bondgraph.mp +% blockdraw_mp.pdf + +numeric to_lft; +to_lft = 0; +numeric to_llft; +to_llft = 1; +numeric to_bot; +to_bot = 2; +numeric to_lrt; +to_lrt = 3; +numeric to_rt; +to_rt = 4; +numeric to_urt; +to_urt = 5; +numeric to_top; +to_top = 6; +numeric to_ulft; +to_ulft = 7; +numeric to_center; +to_center = 8; + +def to_dir(expr z ) = + if (xpart z) > 0: + if (ypart z) > 0: + if abs(xpart z) > 2*abs(ypart z): + to_rt + elseif abs(ypart z) > 2*abs(xpart z): + to_top + else: + to_urt + fi + else: + if abs(xpart z) > 2*abs(ypart z): + to_rt + elseif abs(ypart z) > 2*abs(xpart z): + to_bot + else: + to_lrt + fi + fi + else: + if (ypart z) > 0: + if abs(xpart z) > 2*abs(ypart z): + to_lft + elseif abs(ypart z) > 2*abs(xpart z): + to_top + else: + to_ulft + fi + else: + if abs(xpart z) > 2*abs(ypart z): + to_lft + elseif abs(ypart z) > 2*abs(xpart z): + to_bot + else: + to_llft + fi + fi + fi +enddef; + +def dir_to(expr d ) = + dir( 180 + d * 45 ) +enddef; + +def shiftoff(expr pic, corner ) = + if corner = to_lft: + (pic shifted ((-center pic)+((xpart llcorner pic)-(xpart center pic),0))) + elseif corner = to_llft: + (pic shifted ((-center pic)+(llcorner pic)-(center pic))) + elseif corner = to_bot: + (pic shifted ((-center pic)+(0,(ypart llcorner pic)-(ypart center pic)))) + elseif corner = to_lrt: + (pic shifted ((-center pic)+(lrcorner pic)-(center pic))) + elseif corner = to_rt: + (pic shifted ((-center pic)+((xpart lrcorner pic)-(xpart center pic),0))) + elseif corner = to_urt: + (pic shifted ((-center pic)+(urcorner pic)-(center pic))) + elseif corner = to_top: + (pic shifted ((-center pic)+(0,(ypart ulcorner pic)-(ypart center pic)))) + elseif corner = to_ulft: + (pic shifted ((-center pic)+(ulcorner pic)-(center pic))) + else: + (pic shifted (-center pic)) + fi +enddef; + +numeric shiftofflabelmargin; +shiftofflabelmargin := bboxmargin; +def shiftoffwlm(expr pic, corner ) = + if corner = to_lft: + (pic shifted ((-center pic)+((xpart llcorner pic)-(xpart center pic),0)+(-shiftofflabelmargin,0))) + elseif corner = to_llft: + (pic shifted ((-center pic)+(llcorner pic)-(center pic)+(-shiftofflabelmargin,-shiftofflabelmargin))) + elseif corner = to_bot: + (pic shifted ((-center pic)+(0,(ypart llcorner pic)-(ypart center pic))+(0,-shiftofflabelmargin))) + elseif corner = to_lrt: + (pic shifted ((-center pic)+(lrcorner pic)-(center pic)+(shiftofflabelmargin,-shiftofflabelmargin))) + elseif corner = to_rt: + (pic shifted ((-center pic)+((xpart lrcorner pic)-(xpart center pic),0)+(shiftofflabelmargin,0))) + elseif corner = to_urt: + (pic shifted ((-center pic)+(urcorner pic)-(center pic)+(shiftofflabelmargin,shiftofflabelmargin))) + elseif corner = to_top: + (pic shifted ((-center pic)+(0,(ypart ulcorner pic)-(ypart center pic))+(0,shiftofflabelmargin))) + elseif corner = to_ulft: + (pic shifted ((-center pic)+(ulcorner pic)-(center pic)+(-shiftofflabelmargin,shiftofflabelmargin))) + else: + (pic shifted (-center pic)) + fi +enddef; |