/************************************************************************ ** ** FILE : hastemarke.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "hastemarke.h" #include "hawin.h" #include "ste.h" #include "colors" #include "hagraph.h" #include "misc.h" #define yDISP 5 unsigned long HaMarkeColor; GC MarkeGC; /************************************************************************* ** FUNKTION: HaSteMarkeInit() ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void HaSteMInit() { HaMarkeColor = HaGetPixel( MARKE_COLOR); HaCreateGC( &MarkeGC, HaMarkeColor, HaBackColor, GXcopy); XSetFont( MyDisplay, MarkeGC, HaMarkeFont->fid); } /************************************************************************* ** FUNKTION: HaSteMDrawX ** ZWECK: zeichnet Marke in die Pixmap ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void HaSteMDrawX( SNr, ActualGC) int SNr; GC ActualGC; { STRING text; int i; if ( (i = SteStelle[ SNr]->Marke) <= 0 ) return; if (i<1000) sprintf( text, "%d", i); else sprintf( text, ">>"); i = XTextWidth( HaMarkeFont, text, strlen( text)) >> 1; XDrawImageString( MyDisplay, HaGraphPixmap, ActualGC, SteStelle[ SNr]->PosStelle.x - i, SteStelle[ SNr]->PosStelle.y + yDISP, text, strlen(text)); } /************************************************************************* ** FUNKTION: HaSteMRepl ** ZWECK: Ersetzt alte Marke durch eine neue. ** In SteStelle und grafisch in Pixmap und Window. ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: Stelle muss existieren ! *************************************************************************/ void HaSteMRepl( SNr, Marke) int SNr; int Marke; { int x = SteStelle[ SNr]->PosStelle.x; int y = SteStelle[ SNr]->PosStelle.y; if (SteStelle[ SNr]->Marke == Marke) /* HAT SICH WAS GEAENDERT ? */ return; XSetForeground( MyDisplay, MarkeGC, HaBackColor); HaSteMDrawX( SNr, MarkeGC); /* ALTE MARKE LOESCHEN */ XSetForeground( MyDisplay, MarkeGC, HaMarkeColor); SteStelle[ SNr]->Marke = Marke; /* MARKE ERSETZEN */ HaSteMDrawX( SNr, MarkeGC); /* NEUE MARKE ZEICHNEN */ XCopyArea( MyDisplay, HaGraphPixmap, XtWindow( HaGraphPlane), MarkeGC, x - HA_STE_RAD, y - HA_STE_RAD, HA_STE_DM, HA_STE_DM, x - HA_STE_RAD, y - HA_STE_RAD); } /************************************************************************* ** FUNKTION: HaSteMReplX ** ZWECK: Ersetzt alte Marke durch eine neue. ** In SteStelle und grafisch in Pixmap. ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: Stelle muss existieren ! *************************************************************************/ void HaSteMReplX( SNr, Marke) int SNr; int Marke; { if (SteStelle[ SNr]->Marke == Marke) /* HAT SICH WAS GEAENDERT ? */ return; XSetForeground( MyDisplay, MarkeGC, HaBackColor); HaSteMDrawX( SNr, MarkeGC); /* ALTE MARKE LOESCHEN */ XSetForeground( MyDisplay, MarkeGC, HaMarkeColor); SteStelle[ SNr]->Marke = Marke; /* MARKE ERSETZEN */ HaSteMDrawX( SNr, MarkeGC); /* NEUE MARKE ZEICHNEN */ }