#include "exec/types.h"
#include "intuition/intuition.h"

struct IntuitionBase *IntuitionBase;
struct Window *wind0, *wind1;
struct Screen *Scrn;
struct Gadget gadget;
struct StringInfo info;

#define INTUITION_REV 29

main()
{
 ULONG flags;
 SHORT x,y,w,h,d;
 USHORT mode;
 UBYTE *name,c0,c1;
 VOID delayfunc(),OpenALL();
 char dobuffer[80],undobuffer[80];

 OpenALL();

 /* ======Eerst creeren we een gadget====== */

  strcpy(dobuffer,"Enter New Text Here"); 

  info.Buffer=dobuffer;
  info.UndoBuffer=undobuffer;
  info.MaxChars=80;
  info.BufferPos=0;
  info.DispPos=0;

  gadget.NextGadget=NULL;
  gadget.LeftEdge=40;
  gadget.TopEdge=40;
  gadget.Width=200;
  gadget.Height=75;
  gadget.Flags=GADGHBOX|STRINGCENTER;
  gadget.Activation=TOGGLESELECT;
  gadget.GadgetType=STRGADGET;
  gadget.GadgetRender=NULL;
  gadget.SelectRender=NULL;
  gadget.GadgetText=NULL;
  gadget.MutualExclude=NULL;
  gadget.SpecialInfo=(APTR)&info;
  gadget.GadgetID=NULL;
  gadget.UserData=NULL;

 
 /* ======open een hires custom-screen======*/

 name="The Gadget Screen";
 y=0;
 w=640;
 h=200;
 d=3;
 c0=0x00;
 c1=0x01;
 mode=HIRES;

 Scrn=(struct Screen *)
         make_screen(y,w,h,d,c0,c1,mode,name);


 
 /* ======open window====== */

 name="Window 1";
 x=20;
 y=20;
 w=400;
 h=150;
 flags=ACTIVATE|WINDOWSIZING|WINDOWDEPTH|WINDOWDRAG|WINDOWCLOSE|SMART_REFRESH;
 c0=-0x01;
 c1=-0x01;

 wind0=(struct Window *)
         make_window(x,y,w,h,name,flags,c0,c1,Scrn,&gadget);


 /* ======Tijds_lus====== */

 delayfunc(100);

 RemoveGadget(wind0,&gadget); /* The gadget's imagery is NOT removed */

 delayfunc(50);

 /* ======close de windows in volgorde====== */

 CloseWindow(wind0);

 CloseScreen(Scrn);

}
 VOID OpenALL()
 {
 /* ======open Intuition====== */

 IntuitionBase=(struct IntuitionBase *)
            OpenLibrary("intuition.library",INTUITION_REV);

 if(IntuitionBase==NULL)
   exit(FALSE);
 }

make_window(x,y,w,h,name,flags,color0,color1,screen,gadg)
SHORT x,y,w,h;
UBYTE *name,color0,color1;
ULONG flags;
struct Screen *screen;
struct Gadget *gadg;

{
 struct NewWindow NewWindow;

 NewWindow.LeftEdge = x;
 NewWindow.TopEdge = y;
 NewWindow.Width = w;
 NewWindow.Height = h;
 NewWindow.DetailPen = color0;
 NewWindow.BlockPen = color1;
 NewWindow.Title = name;
 NewWindow.Flags = flags;
 NewWindow.IDCMPFlags = NULL;
 NewWindow.Type = CUSTOMSCREEN;
 NewWindow.FirstGadget = gadg;
 NewWindow.CheckMark = NULL;
 NewWindow.Screen = screen;
 NewWindow.BitMap = NULL;
 NewWindow.MinWidth = 1;
 NewWindow.MinHeight = 1;
 NewWindow.MaxWidth = 640;
 NewWindow.MaxHeight = 200;

 return(OpenWindow(&NewWindow));

}
make_screen(y,w,h,d,color0,color1,mode,name)
SHORT y,w,h,d;
UBYTE color0,color1,*name;
USHORT mode;
{
 struct NewScreen NewScreen;

 NewScreen.LeftEdge = 0;
 NewScreen.TopEdge = y;
 NewScreen.Width = w;
 NewScreen.Height = h;
 NewScreen.Depth = d;
 NewScreen.DetailPen = color0;
 NewScreen.BlockPen = color1;
 NewScreen.ViewModes = mode;
 NewScreen.Type = CUSTOMSCREEN;
 NewScreen.Font = NULL;
 NewScreen.DefaultTitle = name;
 NewScreen.Gadgets = NULL;
 NewScreen.CustomBitMap = NULL;

 return(OpenScreen(&NewScreen));
}

VOID delayfunc(factor)
int factor;
/* Deze functie zorgt voor een bepaalde tijds-pause */
{
 int loop;

 for(loop=0;loop<factor*1000;loop++)
   ;
 return;
}


