@=~ ~p typesetter = texinfo ~p maximum_input_line_length = infinity ~O~~{ $/Visual/VisPattern2.gnrc+instance=view1:inst $/Visual/StdDrawings.fw $/Visual/VisConnectionPattern2Level.gnrc+instance=1+referto=view1:inst ~} ~O~~{~- #define strich_width 1 #define strich_height 32 static unsigned char strich_bits[] = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, }; ~} ~O~~{ ~ ~} ~O~~{ ~ ~} ~$~+=~{ VISUAL view1(ROOT): TITLE "Statechart"; BUTTON "Simple State" INSERTS pSimpleState; BUTTON "Initial State" INSERTS pInitialState; BUTTON "Final State" INSERTS pFinalState; BUTTON "History State" INSERTS pHistoryState; BUTTON "XOR Superstate" INSERTS pXORSuperstate; BUTTON "AND Superstate" INSERTS pANDSuperstate; BUTTON "AS Region" INSERTS pANDStateRegion; BUTTON "Transition" INSERTS pTransition; END; ~} ~$~+=~{ /************************************ Globale Definitionen ************************************/ SYMBOL VP_ListElement END; SYMBOL VP_MySet INHERITS VP_Set COMPUTE SYNT.VP_OptBorderDimensions = 5; /* Abstand vom Rand */ SYNT.VP_OptDistanceMin = 10; /* Mindestabstand der Objekte */ SYNT.VP_OptConstraintKind = 1; /* Ueberlappungsfreiheit und Mindestabstand */ SYNT.VP_OptFrameShape = "roundedrectangle"; SYNT.VP_OptFrameStyle = "-fill white -outline {} -width 2"; SYNT.VP_OptContainerKind = 2; /* keine Autom. Vergroesserung */ SYNT.VP_OptShape = 0; /* Rechteck */ END; SYMBOL VP_MyEndPoint INHERITS VP_EndPoint, VP_EndPointLevel1 COMPUTE SYNT.VP_OptKind = 1; /* Rechteckrand */ SYNT.VP_OptFrameSize = 5; /* Breite des Randes */ SYNT.VP_OptToTheEnd = 0; /* Linien enden am Rand */ SYNT.VP_OptTarget = 0; /* Linien zeigen zum Mittelpunkt */ END; /************************************ Statechart ************************************/ SYMBOL Statechart COMPUTE VLSetWindowTitle(THIS.persName); END; SYMBOL Statechart INHERITS VP_MySet COMPUTE SYNT.VP_OptStartSize=VisIntVector(600,500); SYNT.VP_OptFrameStyle = "-fill {} -outline {}"; SYNT.VP_OptContainerKind = 1; /* Autom. Vergroesserung! */ END; SYMBOL Statechart INHERITS VP_RelationArea COMPUTE END; /************************************ Abstract State class ************************************/ SYMBOL _List_State INHERITS VP_ListContext END; SYMBOL State INHERITS VP_MovableContext END; /************************************ XOR-Superstates ************************************/ SYMBOL XORSuperstate INHERITS VP_Movable COMPUTE SYNT.VP_OptFrameShape = "roundedrectangle"; SYNT.VP_OptFrameStyle = "-fill {} -outline black -width 2"; END; SYMBOL XORSuperstate INHERITS VP_MySet COMPUTE SYNT.VP_OptStartSize=VisIntVector(150,100); /* Default-Groesse */ SYNT.VP_OptContainerKind = 1; /* Autom. Vergroesserung! */ END; SYMBOL XORSuperstate_Name INHERITS VP_TextTerminal COMPUTE THIS.VP_FramePositionDefined=THIS.wait; SYNT.VP_OptText = INCLUDING XORSuperstate.persName; SYNT.VP_VisualContext = INCLUDING XORSuperstate.VP_VisualContext; SYNT.VP_OptTextAttr = "persName"; SYNT.VP_OptDefault = "Unnamed state"; END; SYMBOL XORSuperstate_Name COMPUTE SYNT.wait = ORDER( ASSIGN( PTRSELECT(THIS.VP_InnerContainerInterface2Ptr,position), ADD(PTRSELECT(INCLUDING XORSuperstate.VP_ContainerInterfacePtr,position),VisIntVector(8,6)) ), ASSIGN(PTRSELECT(THIS.VP_InnerContainerInterface2Ptr,align), VisIntVector(VisAlignLeft,VisAlignTop)) ) <- INCLUDING XORSuperstate.VP_Drawn; END; /*************************************** AND-SuperStates ***************************************/ SYMBOL ANDSuperstate INHERITS VP_Movable END; SYMBOL ANDSuperstate INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing = ADDROF(ANDStateDrawing); END; SYMBOL ANDSuperstate_Name INHERITS VP_ContainerSSS COMPUTE SYNT.VP_OblContainerName = "title"; END; SYMBOL ANDSuperstate_Name INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptText = INCLUDING ANDSuperstate.persName; SYNT.VP_VisualContext = INCLUDING ANDSuperstate.VP_VisualContext; SYNT.VP_OptTextAttr = "persName"; SYNT.VP_OptDefault = "Unnamed state"; END; SYMBOL _List_ANDStateRegion INHERITS VP_ContainerSSS COMPUTE SYNT.VP_OblContainerName = "state"; END; SYMBOL _List_ANDStateRegion INHERITS VP_SimpleList2 COMPUTE SYNT.VP_OptDirection = visEast; SYNT.VP_OptAlignInWidth = VisAlignScale; SYNT.VP_OptAlignInLength = VisAlignScale; SYNT.VP_OptElementDistance = 10; SYNT.VP_OptSeparatorStyle = GETVLSTRING(sprintf(VLStringBuffer, "-width 2 -fill black -stipple @%s", VLCharPtr(VLFile("andsep.xbm")))); END; /*************************** AND-State-Regions ***************************/ SYMBOL ANDStateRegion INHERITS VP_ListElement END; SYMBOL ANDStateRegion INHERITS VP_MySet COMPUTE SYNT.VP_OptStartSize=VisIntVector(150,150); /* Default-Groesse */ END; /*************************** Einfache Zustaende ***************************/ SYMBOL SimpleState INHERITS VP_Movable, VP_TextTerminal COMPUTE SYNT.VP_OptText = THIS.persName; SYNT.VP_OptFont = "default"; SYNT.VP_OptTextAttr = "persName"; SYNT.VP_OptDefault = "Unnamed state"; SYNT.VP_OptFrameDrawing = NEW(RoundedFrameDrawing("-outline black -width 2 -fill {}",5, 20)); END; SYMBOL HistoryState INHERITS VP_Movable, VP_TextTerminal COMPUTE SYNT.VP_OptFont = "default"; SYNT.VP_OptText = "H"; SYNT.VP_OptFrameDrawing = NEW(CircleFrameDrawing("-outline black -width 2 -fill {}", 5)); END; SYMBOL InitialState INHERITS VP_Movable, VP_Terminal COMPUTE SYNT.VP_OptSize = VisIntVector(8,8); SYNT.VP_OptFigureStyle = "-fill black"; END; SYMBOL FinalState INHERITS VP_Movable, VP_Terminal COMPUTE SYNT.VP_OptSize = VisIntVector(8,8); SYNT.VP_OptFigureStyle = "-fill black"; SYNT.VP_OptFrameDrawing = NEW(CircleFrameDrawing("-outline black -width 2 -fill {}", 5)); END; /************************************** Uebergaenge **************************************/ SYMBOL SimpleState INHERITS VP_MyEndPoint END; SYMBOL ANDSuperstate INHERITS VP_MyEndPoint END; SYMBOL XORSuperstate INHERITS VP_MyEndPoint END; SYMBOL HistoryState INHERITS VP_MyEndPoint END; SYMBOL InitialState INHERITS VP_MyEndPoint END; SYMBOL FinalState INHERITS VP_MyEndPoint END; SYMBOL _List_Transition INHERITS VP_ListSimpleRelations END; /* SYNT.VP_OptPolyNodeName = VLLIST1("xTransitionPoint"); SYNT.VP_OptRelationLabelNodeName=VLLIST1("hTransitionLabel"); END; */ #ifdef ORTHOGONAL_LINES SYMBOL Transition INHERITS VP_RelationTypeOrthogonal, VP_RelationLevel1 COMPUTE SYNT.VP_OptLineType = "-width 2 -smooth 0"; SYNT.VP_OptArrowType = "-arrow last"; END; #else SYMBOL Transition INHERITS VP_RelationTypeDirect, VP_RelationLevel1 COMPUTE SYNT.VP_OptLineType = "-width 2 -smooth 1"; SYNT.VP_OptArrowType = "-arrow last"; END; #endif SYMBOL Transition_Label INHERITS VP_TextTerminal2 COMPUTE SYNT.VP_OptDefault = ""; SYNT.VP_OptText = INCLUDING Transition.persEvent; END; SYMBOL Transition_Label INHERITS VP_RelationLabel2 END; ~} ~$~+=~{ SYMBOL Statechart INHERITS VP_view1_Set END; SYMBOL XORSuperstate INHERITS VP_view1_Set END; SYMBOL ANDStateRegion INHERITS VP_view1_Set END; SYMBOL State INHERITS VP_view1_MovableContext END; SYMBOL ANDStateRegion INHERITS VP_view1_MovableContext END; SYMBOL Transition INHERITS VP_view1_RelationType END; SYMBOL Transition_Label INHERITS VP_view1_RelationLabel2 END; SYMBOL SimpleState INHERITS VP_view1_EndPoint END; SYMBOL XORSuperstate INHERITS VP_view1_EndPoint END; SYMBOL ANDSuperstate INHERITS VP_view1_EndPoint END; SYMBOL HistoryState INHERITS VP_view1_EndPoint END; SYMBOL InitialState INHERITS VP_view1_EndPoint END; SYMBOL FinalState INHERITS VP_view1_EndPoint END; ~}