@=~ ~p typesetter = texinfo ~p maximum_input_line_length = infinity ~O~~{ #include "nsd.drawings.h" ~} ~O~~{ #ifndef NSD_DRAWINGS_H #define NSD_DRAWINGS_H #include "VisAutoPatternCode.h" DECL_VECTORDRAWING(FlowProcedureDrawing) DECL_VECTORDRAWING(FlowStmtDrawing) DECL_VECTORDRAWING(FlowLoopDrawing) DECL_VECTORDRAWING(FlowIfDrawing) DECL_VECTORDRAWING(ProcedureDrawing) DECL_VECTORDRAWING(LoopDrawing) DECL_VECTORDRAWING(IfDrawing) DECL_VECTORDRAWING(CaseRootDrawing) DECL_VECTORDRAWING(CaseRecDrawing) DECL_VECTORDRAWING(CaseTermDrawing) DECL_VECTORDRAWING(CaseBranchDrawing) #endif ~} ~O~~{ #include "nsd.drawings.h" /* ====================================== FlowChart - spezifische Zeichnungen ====================================== */ IMPL_VECTORDRAWING(FlowProcedureDrawing) { figure(2,"line",""); point(0,-10); point(0,0); figure(2,"line","-arrow last"); point(0,1); point(0,10); container("body", -35,0,35,1,visAlignBuoy(0), VisAlignCenter); stretchX(-11,-10); stretchX(10,11); stretchY(0,1); } IMPL_VECTORDRAWING(FlowLoopDrawing) { figure(2,"line","-arrow last"); point(0,0); point(0,20); figure(4,"polygon","-fill {} -outline black"); point(0,20); point(20,40); point(0,60); point(-20,40); figure(2,"line",""); point(0,60); point(0,80); figure(5,"line","-arrow last"); point(0,81); point(0,90); point(40,90); point(40,5); point(0,5); figure(5,"line",""); point(-20,40); point(-40,40); point(-40,120); point(0,120); point(0,130); figure(1,"text","-text T -anchor w"); point(3,70); figure(1,"text","-text F -anchor s"); point(-30,37); container("body",-30,80,30,81,visAlignBuoy(0), VisAlignScale); container("expr",-10,30,10,50,VisAlignCenter, VisAlignCenter); stretchX(-25,-24); stretchX(-20,20); stretchX(25,26); stretchY(20,60); stretchY(80,81); } IMPL_VECTORDRAWING(FlowStmtDrawing) { figure(2,"line","-arrow last"); point(0,-5); point(0,0); figure(2,"rectangle",""); point(-40,0); point(40,20); container("default", -35,5,35,15,VisAlignCenter, VisAlignCenter); stretchX(-11,-10); stretchX(10,11); stretchY(10,11); } IMPL_VECTORDRAWING(FlowIfDrawing) { figure(2,"line","-arrow last"); point(0,0); point(0,10); figure(4,"polygon","-fill {} -outline black"); point(0,10); point(20,30); point(0,50); point(-20,30); figure(3,"line",""); point(20,30); point(40,30); point(40,70); figure(3,"line",""); point(-20,30); point(-40,30); point(-40,70); figure(4,"line",""); point(-40,71); point(-40,90); point(40,90); point(40,71); figure(2,"line",""); point(0,90); point(0,100); figure(1,"text","-text T -anchor s"); point(30,27); figure(1,"text","-text F -anchor s"); point(-30,27); container("true-case", 10,70,70,71,visAlignBuoy(40), VisAlignScale); container("false-case", -70,70,-10,71,visAlignBuoy(-40), VisAlignScale); container("expr", -10,20,10,40,VisAlignCenter, VisAlignCenter); stretchX(-45,-44); stretchX(-35,-34); stretchX(-20,20); stretchX(35,36); stretchX(45,46); stretchY(10,50); stretchY(70,71, 1); } /* ================================= NSD - spezifische Zeichnungen ================================= */ IMPL_VECTORDRAWING(ProcedureDrawing) { container("head",0,0,50,10,VisAlignCenter, VisAlignCenter); container("body",0,20,50,30,VisAlignScale, VisAlignScale); stretchX(20,21); stretchY(5,6); stretchY(25,26); } IMPL_VECTORDRAWING(LoopDrawing) { figure(2,"rect","-fill white"); point(0,0); point(100,50); figure(3,"line",""); point(20,50); point(20,20); point(100,20); container("body",20,20,100,50,VisAlignScale, VisAlignScale); container("expr",0,0,100,20,VisAlignLeft, VisAlignCenter); stretchX(20,100); stretchY(0,20); stretchY(20,50); } IMPL_VECTORDRAWING(IfDrawing) { figure(2,"rect","-fill white"); point(0,0); point(100,60); figure(2,"line",""); point(0,30); point(100,30); figure(3,"line",""); point(0,0); point(50,30); point(100,0); figure(2,"line",""); point(50,30); point(50,60); figure(1,"text","-text T -anchor center"); point(15,22); figure(1,"text","-text F -anchor center"); point(85,22); figure(1,"text","-text ? -anchor center"); point(50,24); container("true-case", 0,30,50,60,VisAlignScale, VisAlignScale); container("false-case", 50,30,100,60,VisAlignScale, VisAlignScale); container("expr", 25,0,75,15,VisAlignCenter, VisAlignCenter); stretchX(0,50); stretchX(50,100); stretchY(0,30); stretchY(30,60); } IMPL_VECTORDRAWING(CaseRootDrawing) { figure(2,"rect","-fill white"); point(0,0); point(140,60); figure(3,"line",""); point(0,0); point(70,30); point(70,60); container("listelement", 0,0,70,60,VisAlignScale, VisAlignScale); container("Expr", 70,0,140,30,VisAlignScale, VisAlignScale); container("sublist", 70,30,140,60,VisAlignScale, VisAlignScale); stretchX(0,70); stretchX(70,140); stretchY(0,30); stretchY(30,60,1); stretchIsometrical=VisIntVector(0,0); insertionLine(0,0,0,60,NULL); insertionLine(70,30,70,60,"listelement"); } IMPL_VECTORDRAWING(CaseRecDrawing) { figure(3,"line",""); point(0,0); point(70,30); point(70,60); container("listelement", 0,0,70,60,VisAlignScale, VisAlignScale); container("sublist", 70,30,140,60,VisAlignScale, VisAlignScale); stretchX(0,70); stretchX(70,140); stretchY(0,30); stretchY(30,60,1); stretchIsometrical=VisIntVector(0,0); insertionLine(70,30,70,60,"listelement"); } IMPL_VECTORDRAWING(CaseTermDrawing) { figure(3,"line",""); point(0,0); point(70,30); point(70,60); figure(2,"line",""); point(70,30); point(140,0); figure(2,"line",""); point(70,30); point(140,30); figure(1,"text","-text Def. -anchor center"); point(125,20); container("listelement", 0,0,70,60,VisAlignScale, VisAlignScale); container("Default", 70,30,140,60,VisAlignScale, VisAlignScale); stretchX(0,70); stretchX(70,140); stretchY(0,30); stretchY(30,60,1); stretchIsometrical=VisIntVector(0,0); insertionLine(70,30,70,60,"listelement"); } IMPL_VECTORDRAWING(CaseBranchDrawing) { point(0,0); // geht mit in die Berechnung der Boundingbox ein. figure(2,"line",""); point(0,30); point(70,30); container("Expr", 0,15,35,30,VisAlignCenter, VisAlignCenter); container("Stmts", 0,30,70,60,VisAlignScale, VisAlignScale); stretchX(0,70); stretchY(0,30); stretchY(30,60,1); stretchIsometrical=VisIntVector(0,0); } ~}