/************************************************************************ ** ** FILE : hakamisc.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "hakamisc.h" #include "haka.h" #include "haka.H" #include "hawin.h" #include "hamess.h" #include "katype.h" #include "hagraph.h" #include "colors" /************************************************************************* ** FUNKTION: HaKaInit *************************************************************************/ void HaKaInit() { Ecke = NULL; HaKaColor = HaGetPixel( KANTE_COLOR); HaCreateGC( &KaGC, HaKaColor, HaBackColor, GXcopy); } /************************************************************************* ** FUNKTION: HaWinSayKa ** ZWECK: Ein-/Ausschalter fuer HaMovKa-Funktionen *************************************************************************/ void HaWinSayKa( w, client_data, call_data) Widget w; XtPointer client_data, call_data; { ECKE *e; static String KaFuncOn = ": HaRedrawPlane() \n\ : \n\ : HaKaSetStart()"; static String KaFuncOff = ": HaRedrawPlane() \n\ : \n\ : HaLook() \n\ : \n\ : HaWinSayMove() \n\ : \n\ :"; HaMessage( HA_CLEAR); if (!HaToggleOn) { HaToggleOn = HaKaToggle; XtOverrideTranslations( HaGraphPlane, XtParseTranslationTable( KaFuncOn)); return; } HaToggleOn = FALSE; XtOverrideTranslations( HaGraphPlane, XtParseTranslationTable( KaFuncOff)); ENeuNr = 0; while ( (e=Ecke) ) { /* Eck-Liste leeren */ Ecke = Ecke->next; free( e); } } /************************************************************************* ** FUNKTION: HaKaMov ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void HaKaMov( w, event, params, num_params) Widget w; XEvent *event; String *params; Cardinal *num_params; { int x = ((XMotionEvent *)event)->x; int y = ((XMotionEvent *)event)->y; HaKaInvLine( HaKaFirst.x, HaKaFirst.y, x, y); HaKaInvLine( HaKaFirst.x, HaKaFirst.y, HaAlt.x, HaAlt.y); HaAlt.x = x; HaAlt.y = y; } /************************************************************************* ** FUNKTION: HaKaLineOff ** ZWECK: Invertiert alle bisher gezeichneten Linienketten ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void HaKaLineOff( w, event, params, num_params) Widget w; XEvent *event; String *params; Cardinal *num_params; { ECKE *e; HaKaRedraw(); } /************************************************************************* ** FUNKTION: HaKaLineOn ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void HaKaLineOn( w, event, params, num_params) Widget w; XEvent *event; String *params; Cardinal *num_params; { ECKE *e; HaAlt.x = ((XMotionEvent *)event)->x; HaAlt.y = ((XMotionEvent *)event)->y; if (e=Ecke) { HaKaInvLine( e->x, e->y, HaAlt.x, HaAlt.y); while (e->next) { HaKaInvLine( e->next->x, e->next->y, e->x, e->y); e = e->next; } HaKaInvLine( StartKoord.x, StartKoord.y, e->x, e->y); } else HaKaInvLine( StartKoord.x, StartKoord.y, HaAlt.x, HaAlt.y); }