diff options
author | Karl Berry <karl@freefriends.org> | 2006-07-15 21:07:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-07-15 21:07:44 +0000 |
commit | addfc6cb8f4f70fdc76a72cb6338bd0c69c4c4c3 (patch) | |
tree | 9df3d1ec788caf8f5a848d259f44cfbafa7ad717 /Master/texmf-dist/metapost/metauml/metauml_base.mp | |
parent | 9599b464aebb35b4a1bc3bf70a4cd2740f3765f7 (diff) |
new metapost package metauml (21mar06)
git-svn-id: svn://tug.org/texlive/trunk@1851 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost/metauml/metauml_base.mp')
-rw-r--r-- | Master/texmf-dist/metapost/metauml/metauml_base.mp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/Master/texmf-dist/metapost/metauml/metauml_base.mp b/Master/texmf-dist/metapost/metauml/metauml_base.mp new file mode 100644 index 00000000000..c44947ad43f --- /dev/null +++ b/Master/texmf-dist/metapost/metauml/metauml_base.mp @@ -0,0 +1,147 @@ +% MetaUML, a MetaPost library for typesetting exquisite UML diagrams. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +if known _metauml_base_mp: + expandafter endinput +fi; +_metauml_base_mp:=1; + +input util_log; + +vardef markPoint(text p)(text color) = + draw p withpen pencircle scaled 1 withcolor color; +enddef; + +vardef drawLine(text pA)(text pB)(text base) = + draw pA--pB; +enddef; + +vardef drawArrow(text pA)(text pB)(text base) = + numeric dx, dy; + dx = xpart(pB - pA); + dy = ypart(pB - pA); + + numeric alfa; + alfa = angle(dx, dy); + + pair pC, pD; + pC := (0, base/2); + pC := pC rotated (alfa) shifted pA; + pD := (0, base/2); + pD := pD rotated (180+alfa) shifted pA; + + %fill pA--pC--pB--pD--cycle withcolor .8white; + + draw pA--pB; + draw pB--pC; + draw pB--pD; +enddef; + +vardef drawTriangle(text pA)(text pB)(text base) = + numeric dx, dy; + dx = xpart(pB - pA); + dy = ypart(pB - pA); + + numeric alfa; + alfa = angle(dx, dy); + pair pC, pD; + pC := (0, base/2); + pC := pC rotated (alfa) shifted pA; + pD := (0, base/2); + pD := pD rotated (180+alfa) shifted pA; + + fill pA--pC--pB--pD--cycle withcolor white; + + draw pA--pC;% withcolor red; + draw pA--pD;% withcolor green; + draw pB--pC;% withcolor blue; + draw pB--pD; +enddef; + +vardef drawDiamond(text pA)(text pB)(text height) = + numeric dx, dy; + dx = xpart(pB - pA); + dy = ypart(pB - pA); + + numeric alfa; + alfa = angle(dx, dy); + + numeric width; + width = _length(pA)(pB); + + path diamond; + diamond = (0,0)--(width/2, height/2)--(width, 0)--(width/2, -height/2)--cycle; + + fill diamond rotated alfa shifted pA withcolor white; + draw diamond rotated alfa shifted pA; +enddef; + +vardef drawDiamondBlack(text pA)(text pB)(text height) = + numeric dx, dy; + dx = xpart(pB - pA); + dy = ypart(pB - pA); + + numeric alfa; + alfa = angle(dx, dy); + + numeric width; + width = _length(pA)(pB); + + path diamond; + diamond = (0,0)--(width/2, height/2)--(width, 0)--(width/2, -height/2)--cycle; + + fill diamond rotated alfa shifted pA; +enddef; + +vardef drawCrossedCircle(text pA)(text pB)(text height) = + numeric dx, dy; + dx = xpart(pB - pA); + dy = ypart(pB - pA); + + numeric alfa; + alfa = angle(dx, dy); + + numeric width; + width = _length(pA)(pB); + + pair pC, pD; + pC := (width/2, height/2 + 1); + pC := pC rotated (alfa) shifted pA; + pD := (width/2, -height/2 - 1); + pD := pD rotated (alfa) shifted pA; + + fill pA..pB..pA -- cycle withcolor white; + + draw pA -- pB; + draw pC -- pD; + draw pA .. pB .. pA; +enddef; + +vardef drawLine(expr my_path) = + draw my_path; +enddef; + +vardef drawLineDashed(expr my_path) = + draw my_path dashed evenly; +enddef; + +vardef drawNothing(text pA)(text pB)(text base) = +enddef; + +def shorterLineEndPoint(text pA)(text pB)(text delta) = + (xpart(pA) + _dx(pA)(pB)*(1 - delta/_length(pA)(pB)), ypart(pA) + _dy(pA)(pB) * (1 - delta/_length(pA)(pB)) ) +enddef; |