#define TIEFE 4
#define BREITE 320
#define HOEHE 256
#define FARBEN 16
#define P 0.031172452
#define Q 1.121042651
#define FARBWECHSEL 8
#define SCROLLPERIODE 20

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

struct IntuitionBase *IntuitionBase; 
struct GfxBase *GfxBase;

#define REV 29L		/* Mindest-Versionsnummer */

/* Deklaration eines vordefinierten NewScreen Datenblocks */

struct NewScreen NewScreen =
  {
   0, 0,		/* linke obere Ecke */
   BREITE,		/* Breite */
   HOEHE,		/* Hoehe */
   TIEFE,		/* Tiefe */
   0, 1,		/* DetailPen und BlockPen */
   0,			/* Anzeige-Modi */
   CUSTOMSCREEN,	/* Screen-Typ */
   NULL,		/* Font */
   NULL,		/* Titel */
   NULL,		/* Gadgets */
   NULL			/* keine custom bit map */
  };

struct NewWindow NewWindow =
  {
   0, 0,		/* linke, obere Ecke */
   BREITE, HOEHE,	/* Breite, Hoehe */
   0, 1,		/* Detail-, BlockPen Farbe */
   MOUSEBUTTONS,	/* IDCMP Flags */
   ACTIVATE|GIMMEZEROZERO|BORDERLESS,	/* Flags */
   NULL,		/* erstes Gadget */
   NULL,		/* Check Marke */
   NULL,		/* Titelstring */	
   NULL,		/* Bildschirm */
   NULL,		/* Bitmap-Pointer */
   0, 0,		/* min. Breite, Hoehe */
   0, 0,		/* max. Breite, Hoehe */		
   CUSTOMSCREEN		/* Typ */		
  };
   
main()
{
  struct Screen *Screen;
  struct Window *Window;	
  struct IntuiMessage *Message;
  REGISTER struct RastPort *rp;
  UBYTE z=0,scroll=0;
  FLOAT i=0,s=0,c=0;
  REGISTER SHORT x1,x2,y1,y2;
  SHORT dx,dy;
  UWORD Dummy;	/* Scheiss Aztec-C!! Macht kein UBYTE % ... !!!!!!!! */

  /* Oeffnen der Library und Ueberpruefung */

  IntuitionBase=OpenLibrary("intuition.library",REV);
  if (IntuitionBase == NULL) exit(FALSE);

  GfxBase=OpenLibrary("graphics.library",REV);
  if (GfxBase == NULL) exit(FALSE);

  Screen=OpenScreen(&NewScreen);
  NewWindow.Screen=Screen;
  Window=OpenWindow(&NewWindow);

  rp=Window->RPort;	/* RastPort-Adresse */
  SetDrMd(rp,JAM1);	/* Zeichenmodus */
  do  {
	i+=P;
	s=sin(i)+1;
	c=cos(i*Q)+1;
	x1=BREITE/2 * s;
        y1=HOEHE/2 * c;
	x2=BREITE-(BREITE/2 * c);
	y2=HOEHE/2 * s;
	++z;
/*	if((Dummy=z)%SCROLLPERIODE == 0) {
	   ++scroll;
	   dx=scroll/52-2;
	   if (scroll>64 && scroll<192) dy=1;
	   else dy=-1;
	   ScrollRaster(rp,dx,dy,0,0,BREITE,HOEHE);
	};		*/
	SetAPen(rp,z/FARBWECHSEL);
	Move(rp,x1,y1);
	Draw(rp,x2,y2);
        Message=GetMsg(Window->UserPort);
  } while ((Message->Class) != MOUSEBUTTONS); 
  CloseWindow(Window);
  CloseScreen(Screen);
  exit(TRUE);
}
