/**********************************************
* Preferences                                 *
* Autor: Andreas Krämer                       *
* Copyright KICKSTART 2.88                    *
* Erstellt auf dem Lattice C Compiler         *
***********************************************
* Farbspielereien                             *
**********************************************/

/* Zwei Dateien werden eingebunden */

#include <exec/types.h>
#include <intuition/intuition.h>

/* Zuweisung von verschiedenen Strukturen mit *
*  einem Zeiger. Die Zeiger werden später im  *
*  Hauptprogramm benoetigt                   */

struct IntuitionBase *IntuitionBase;
struct IntuiMessage *Nachricht;
struct Window *Window;

/* Die Preferences Struktur */

struct Preferences Pref;

/* Definition von einigen Variablen */

ULONG NachrichtenArt;
USHORT code;

/* Wichtig fuer sie Spielereien */

USHORT r,g,b;
USHORT c0,c1,c2,c3;

/* Die NewWindow Struktur */

struct NewWindow Fenster =
{
 10, 10,
 50, 20,
 0, 1,
 CLOSEWINDOW,
 WINDOWCLOSE,
 NULL, NULL, 0, NULL, NULL,
 0, 0, 0, 0,
 WBENCHSCREEN
};

/***********************************************
* Beginn des Hauptprogrammes                   *
***********************************************/

main()
{
/* Zusätzlicher Zeiger auf eine Struktur */

struct Message *GetMsg();

/* Öffnen der Intuition Library */

IntuitionBase=(struct IntuitionBase *)
     OpenLibrary("intuition.library",0);
if(IntuitionBase==NULL)exit(FALSE);

/* Öffnen des Fensters */

if((Window=(struct Window *)
     OpenWindow(&Fenster))==NULL)
exit(FALSE);

/***********************************************
* Holt die Werte der momentan eingestellten    *
* Preferences                                  *
***********************************************/

GetPrefs(&Pref,sizeof(struct Preferences));

/* Rettet die eingestellten Farbwerte */

c0 = Pref.color0;
c1 = Pref.color1;
c2 = Pref.color2;
c3 = Pref.color3;

/***********************************************
* Endlosschleife der Farbspielerei und der     *
* Ereignisabfrage                              *
***********************************************/

for(;;)
{

/* Blaue Farbschleife */

 for(b=0x0;b<0x10;b++)
 {
   Pref.color0 = b;
   SetPrefs(&Pref,sizeof(struct Preferences)
                                     ,FALSE);
 }

/* Gruene Farbschleife */

 for(g=0x0;g<0x10;g++)
 {
   Pref.color0 = (g << 4);
   SetPrefs(&Pref,sizeof(struct Preferences)
                                     ,FALSE);
 }

/* Rote Farbschleife */

 for(r=0x0;r<0x10;r++)
 {
  Pref.color0 = (r << 8);
  SetPrefs(&Pref,sizeof(struct Preferences)
                                    ,FALSE);
 }

/* Ereignisabfrage */

   if(Nachricht=(struct IntuiMessage *)
     GetMsg(Window->UserPort))
   {
    NachrichtenArt=Nachricht ->Class;
    code=Nachricht->Code;
    ReplyMsg(Nachricht);
    switch (NachrichtenArt)
       {
        /* Sprung in das Unterprogramm *
         * Reaktion, wenn das Gadget   *
         * angewaehlt wird.           */ 
        case CLOSEWINDOW : Ende();
                           break;
       } /* switch */
    } /* if */
 } /* Ende for */
 return(0);
} /* Ende main */

/**********************************************
* Unterprogramm zum Schliessen aller          *
* Einrichtungen und Zuruecksetzen der Farbe.  *
**********************************************/

Ende()
{
/* Zuruecksetzen der Farbe */

 Pref.color0 = c0;
 Pref.color1 = c1;
 Pref.color2 = c2;
 Pref.color3 = c3;
 SetPrefs(&Pref,sizeof(struct Preferences)
                                   ,FALSE);

/* Schliessen des Fensters und der Library */

  CloseWindow(Window);
  CloseLibrary(IntuitionBase);
  exit(TRUE);
 return (0);
} /* Programmende */

