/* Standard-Includefile mit Display-Funktionen und   */
/* den noetigen globalen Variablen                   */
#include <screen&window.h>

/* Includefile fuer Aztec-C                          */
#include <functions.h>

struct RastPort* rasp;
struct AreaInfo a_info;
struct TmpRas t_ras;
UWORD areabuf[500];
BYTE* area_plane;

main()
{
 int i;

/* Screen und Window in LoRes u. 32 Farben oeffnen   */
 make_display();  
 
/* Zuweisung der RastPort-Struktur                   */
 rasp = grafikwindow->RPort;

/* Initialisierung der AreaInfo-Struktur und Eroeff- */
/* nung einer Bitplane fuer die Fuellbefehle         */
 InitArea(&a_info,&areabuf[0],200L);
 area_plane = AllocRaster(320L,256L);

/* Zuweisung der TmpRas- und AreaInfo-Struktur auf   */
/* den benutzten RastPort                            */
 rasp->AreaInfo = &a_info;
 rasp->TmpRas = &t_ras;

/* TmpRas-Struktur initialisieren                    */
 InitTmpRas(&t_ras,area_plane,(long)RASSIZE(320,256)); 

/* Schleife fuer versch. gefuellte Flaechen          */
 for(i=0;i<106;i+=5)
 {
  SetAPen(rasp,(long)i/5);
  AreaMove(rasp,80L+(i*2),120L+i);
  AreaDraw(rasp,190L+i,120L+i);
  AreaDraw(rasp,200L+i,200L+(i/2));
  AreaDraw(rasp,90L+(i*2),200L+(i/2));
  AreaEnd(rasp);
 }
 
/* Punktpuffer muss vor AreaEllipse-Aufruf leer sein */
 for(i=0;i<500;i+=1)
  areabuf[i] = (UWORD)0; 

/* Schleife fuer versch. gefuellte Ellipsen          */
 for(i=0;i<131;i+=5)
 {
  SetAPen(rasp,(long)i/5);
  AreaEllipse(rasp,160L,70L,140L-i,25L);
  AreaEnd(rasp);
 }

/* Wieder den Punktpuffer leeren...                  */
 for(i=0;i<500;i+=1)
  areabuf[i] = (UWORD)0; 

/* ...und noch ein paar Ellipsen (nur ganz kleine)   */
 for(i=0;i<25;i+=2)
 {
  SetAPen(rasp,(long)i/2);
  AreaEllipse(rasp,160L,70L,14L,25L-i);
  AreaEnd(rasp);
 }

/* Schleife fuer versch. gefuellte Rechtecke         */
 for(i=0;i<32;i++)
 {
  SetAPen(rasp,(long)i);
  RectFill(rasp,10L+i,120L+(i*2),20L+(i*2),130L+(i*3));
 }

/* Nun den Hintergrund fuellen                       */
 SetAPen(rasp,5L);
 Flood(rasp,1L,15L,15L);

/* Intuition wartet auf Betaetigung des Close-Gadgets*/
 Wait(1L<<grafikwindow->UserPort->mp_SigBit);

/* Speicherplatz ans System zurueckgeben             */
 FreeRaster(area_plane,320L,256L);
 end_display();
 
 Exit(1L);
}
