% Part of the MetaUML manual. % 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. input metauml; beginfig(1); iClass.foreColor := (.9, .9, 0); Class.A("A")()(); Class.B("B")()(); Class.C("C")()(); B.w = A.e + (20,0); C.n = .5[A.se, B.sw] + (0, -10); drawObjects(A, B, C); endfig; beginfig(2); save A, B, C; iClass.foreColor := (.9, .9, 0); Class.A("A")()(); Class.B("B")()(); Class.C("C")()(); C.info.foreColor := (.7, .7, .9); C.info.borderColor := blue; C.info.iName.iFont.scale := 2; B.w = A.e + (20,0); C.n = .5[A.se, B.sw] + (0, -10); drawObjects(A, B, C); endfig; beginfig(3); ClassInfoCopy.iHome(iClass); iHome.foreColor := (0, .9, .9); ClassInfo.iRemote; iRemote.foreColor := (.9, .9, 0); iRemote.borderColor := (0, 0, .9); save A, B, C, D; EClass.A(iHome)("UserHome")()(); EClass.B(iRemote)("UserRemote")()(); EClass.C(iHome)("CartHome")()(); EClass.D(iRemote)("CartRemote")()(); B.nw = A.ne + (20,0); D.nw = C.ne + (20,0); A.bottom - C.top = 10; A.left = C.left; drawObjects(A, B, C, D); endfig; beginfig(4); iClass.foreColor := .9white; save A; Class.A("Foo") ("a: int", "b: int") ("foo()", "bar()", "gar()"); A.info.iName.iFont.name := metauml_defaultFontBold; A.info.iName.iFont.scale := 1.2; A.info.iAttributeStack.iPict.iFont.scale := 0.8; A.info.iAttributeStack.top := 10; A.info.iAttributeStack.spacing := 11; A.info.iMethodStack.iPict.iFont.scale := 2; A.info.iMethodStack.spacing := 17; A.info.iMethodStack.bottom := 10; drawObject(A); endfig; %beginfig(1); % save Test; % Class.Test("Test")("n:int","a2", "a3")("aLongMethod():void"); % %, "anotherLongMethod():void", "yetAnotherLongMethod()"); % Test.sw = (0,0); % Class_draw.Test; % dotlabel.ulft(btex nw etex, Test.nw); % dotlabel.top(btex n etex, Test.n); % dotlabel.urt(btex ne etex, Test.ne); % dotlabel.urt(btex e etex, Test.e); % dotlabel.lrt(btex se etex, Test.se); % dotlabel.llft(btex s etex, Test.s); % dotlabel.llft(btex sw etex, Test.sw); % dotlabel.lft(btex w etex, Test.w); % dotlabel.ulft(btex c etex, Test.c); % draw Test.nw - (50,0) -- Test.ne + (30,0) dashed evenly; % label.urt(btex top etex, Test.nw - (50,0)); % draw Test.sw - (50,0) -- Test.se + (30,0) dashed evenly; % label.lrt(btex bottom etex, Test.sw - (50,0)); % draw Test.nw + (0,25) -- Test.sw - (0, 50) dashed evenly; % label.bot(btex left etex, Test.sw - (0,50)); % draw Test.ne + (0,25) -- Test.se - (0, 50) dashed evenly; % label.bot(btex right etex, Test.se - (0,50)); % drawdblarrow Test.nw - (40,0) -- Test.sw - (40,0); % label.lft(btex height etex, .5[Test.nw, Test.sw] - (40,0)); % drawdblarrow Test.sw - (0,40) -- Test.se - (0,40); % label.bot(btex width etex, .5[Test.sw, Test.se] - (0,40)); % draw Test.n -- Test.s + (0, -20) dashed evenly; % label.bot(btex midx etex, Test.s + (0,-20)); % draw Test.w -- Test.e + (20,0) dashed evenly; % label.rt(btex midy etex, Test.e + (20,0)); % draw Test.sw + (classLeftMargin,0) -- Test.nw + (classLeftMargin, 25) dashed evenly; % draw Test.se + (-classRightMargin,0) -- Test.ne + (-classRightMargin, 25) dashed evenly; % drawdblarrow Test.nw + (0,20) -- Test.nw + (classLeftMargin, 20); % label.top(btex classLeftMargin etex, Test.nw + (classLeftMargin/2, 25)); % drawdblarrow Test.ne + (0,20) -- Test.ne + (-classRightMargin, 20); % label.top(btex classRightMargin etex, Test.ne + (-classLeftMargin/2, 25)); % pair A,B; % A := ((xpart Test.ne) + 30, ypart Test.ne); % B := ((xpart Test.ne) + 30, ypart Test.namePict.nw); % draw Test.namePict.nw -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classNameBefore etex, .5[A,B]); % A := (xpart A, ypart Test.namePict.se); % B := (xpart A, Test.nameEndsAtY - classNameAfter); % draw Test.namePict.se -- A dashed evenly; % draw (xpart Test.namePict se, ypart B) -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classNameAfter etex, .5[A,B]); % A := B; % B := (xpart A, ypart Test.attributePict[0].ne); % draw Test.attributePict[0].ne -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classAttributesBefore etex, .5[A,B]); % A := (xpart A, ypart Test.attributePict[2].se); % B := A + (0, -classAttributesAfter); % draw Test.attributePict[2].se -- A dashed evenly; % draw (Test.attributePict[2].se + (0, -classAttributesAfter)) -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classAttributesAfter etex, .5[A,B]); % A := B; % B := (xpart A, ypart Test.methodPict[0].ne); % draw Test.methodPict[0].ne -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classMethodsBefore etex, .5[A,B]); % A := (xpart A, ypart Test.methodPict[0].se); % B := A + (0, -classMethodsAfter); % draw Test.methodPict[0].se -- A dashed evenly; % draw (Test.methodPict[0].se + (0, -classMethodsAfter)) -- B dashed evenly; % drawdblarrow A-(10,0) -- B-(10,0); % label.rt(btex classMethodsAfter etex, .5[A,B]); % endfig; end