#include "df0:demos/demo.h"
#include <exec/types.h>
#include <intuition/intuition.h>
#include <graphics/gfx.h>
#include <exec/memory.h>
#include <functions.h>

struct NewWindow NW =
  {
  0,11,640,245,0,1,GADGETDOWN|GADGETUP,
  WINDOWDRAG|WINDOWDEPTH|WINDOWSIZING|ACTIVATE|GIMMEZEROZERO|NOCAREREFRESH,
  NULL,NULL," DEMO2",NULL,NULL,1,1,640,245,WBENCHSCREEN
  };

struct TextAttr demotxtattr[] = {
/* 0 */{(UBYTE *)"topaz.font",8,0,65},
/* 1 */{(UBYTE *)"topaz.font",8,0,65},
/* 2 */{(UBYTE *)"topaz.font",8,0,65},
/* 3 */{(UBYTE *)"topaz.font",8,0,65},
/* 4 */{(UBYTE *)"topaz.font",8,0,65},
/* 5 */{(UBYTE *)"topaz.font",8,0,65},
/* 6 */{(UBYTE *)"topaz.font",8,0,65},
/* 7 */{(UBYTE *)"topaz.font",8,0,65},
/* 8 */{(UBYTE *)"topaz.font",8,0,65},
  };

struct IntuiText demointtxt[] = {
/* 0 */{1,0,2,19,5,(struct TextAttr *)&demotxtattr[0],(UBYTE *)"Abbruch",(struct IntuiText *)0L}, 
/* 1 */{1,0,2,8,3,(struct TextAttr *)&demotxtattr[1],(UBYTE *)"B. Gadget",(struct IntuiText *)0L}, 
/* 2 */{1,0,2,0,-9,(struct TextAttr *)&demotxtattr[2],(UBYTE *)"Slider",(struct IntuiText *)0L}, 
/* 3 */{0,0,0,-70,0,(struct TextAttr *)&demotxtattr[3],(UBYTE *)"Eingabe:",(struct IntuiText *)0L}, 
/* 4 */{1,0,2,39,5,(struct TextAttr *)&demotxtattr[4],(UBYTE *)"OK",(struct IntuiText *)0L}, 
/* 5 */{1,0,2,8,3,(struct TextAttr *)&demotxtattr[5],(UBYTE *)"",(struct IntuiText *)0L}, 
/* 6 */{1,0,2,8,3,(struct TextAttr *)&demotxtattr[6],(UBYTE *)"",(struct IntuiText *)0L}, 
/* 7 */{1,0,2,8,3,(struct TextAttr *)&demotxtattr[7],(UBYTE *)"",(struct IntuiText *)0L}, 
/* 8 */{1,0,2,8,3,(struct TextAttr *)&demotxtattr[8],(UBYTE *)"",(struct IntuiText *)0L}, 
  };

UBYTE strinfstraa[40];
UBYTE undostrinfstraa[40];
struct StringInfo demostrinf[] = {
/* 0 */{(UBYTE *)&strinfstraa, (UBYTE *)&undostrinfstraa, 0, 40, 0, 0, 0, 0, 0, 0L, 0L, 0L},
  };

struct PropInfo demopropinf[] = {
/* 0 */{259, 28372, 65535, 30000, 0, 0, 0, 0, 0, 0, 0},
  };

USHORT demoimgbitblk[] = {
/* 0 */0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1023,0,0,
0,0,0,0,0,0,0,0,0,0,0,1023,0,0,0,
0,0,0,0,0,0,0,0,0,0,1023,0,0,0,0,
0,0,0,0,0,0,0,0,0,2047,0,0,0,0,0,
0,0,0,0,0,0,0,0,2047,0,0,0,0,0,0,
0,0,0,0,0,0,0,2046,0,0,0,0,0,3,61440,
0,0,0,0,0,0,2046,0,0,0,0,0,31,63488,0,
0,0,16380,1,65408,2046,0,0,0,0,0,31,65024,1023,32771,
65475,65535,49153,65472,4092,0,0,0,0,0,63,65280,511,49159,65423,
65535,61441,65504,4092,0,0,0,0,0,63,65280,255,57375,65087,65535,
64513,65520,4092,0,0,0,0,0,127,65472,127,61503,64639,64575,65025,
65528,4092,0,0,0,0,0,127,65472,63,63615,63743,49155,65411,65532,
4092,0,0,0,0,0,255,65520,31,64767,57855,32768,65475,65534,8188,
0,0,0,0,0,255,65528,7,65535,50174,0,32707,65535,40952,0,
0,0,0,0,511,40956,3,65535,1020,0,16355,65535,57336,0,0,
0,0,0,511,36862,1,65534,1020,0,16355,65535,65528,0,0,0,
0,0,511,2047,0,65532,1020,0,16359,65151,65528,0,0,0,0,
0,1023,1023,32768,65528,1020,0,16359,65087,65528,0,0,0,0,0,
1022,511,49153,65532,1020,0,16359,65055,65528,0,0,0,0,0,2046,
255,57351,65534,1022,0,32711,65039,65520,0,0,0,0,0,2047,65535,
63503,65535,511,32768,65487,65031,65520,0,0,0,0,0,4095,65535,64543,
65535,49407,49155,65423,65027,65520,0,0,0,0,0,4095,65535,65151,63999,
57471,64543,65295,64513,65520,0,0,0,0,0,8184,15,64767,61567,61471,
65535,64527,64512,65504,0,0,0,0,0,8176,7,61951,49215,63503,65535,
63503,64512,32736,0,0,0,0,0,8176,3,59391,32799,64513,65535,49167,
64512,16352,0,0,0,0,0,16352,1,36862,7,65024,8188,0,0,
0,0,0,0,0,0,16352,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,7168,28672,0,0,
0,0,0,0,0,1,49152,0,0,0,7168,28672,0,0,0,
0,0,0,0,1,49152,0,0,0,7168,28672,0,0,0,1016,
16355,65534,8184,28899,61695,2016,16371,65535,8184,32736,0,0,0,1820,28787,
51151,7228,28899,62401,36656,28915,51151,39966,28912,0,0,0,3072,28787,50055,
7196,28897,50175,52736,57459,50055,39950,28912,0,0,0,3072,28787,50055,7196,
28897,49920,3584,28915,50055,39950,28912,0,0,0,1820,28787,50055,7228,28897,
49601,52736,16371,50055,39966,28912,0,0,0,1016,16355,50055,8184,32705,61695,
36352,115,50055,40952,28912,0,0,0,0,0,0,7168,0,0,0,
24816,0,0,0,0,0,0,0,0,0,7168,0,0,0,16256,
0,0,0,0,0,0,0,0,0,7168,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,
0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,
0,0,216,0,0,0,0,0,0,0,0,0,0,0,0,
0,396,0,0,0,0,0,0,0,0,0,0,0,0,0,
391,65408,0,0,0,0,0,0,0,0,0,0,0,3,65280,
1536,0,0,0,0,0,0,0,0,0,0,0,1,49152,14336,
0,0,0,0,0,0,0,0,0,0,0,0,30720,57344,0,
0,0,0,0,0,0,0,0,0,0,0,3584,24576,0,0,
0,0,0,0,0,0,0,0,0,0,512,12288,0,0,0,
0,0,0,0,0,0,0,0,0,1567,38912,0,0,0,0,
0,0,0,0,0,0,0,0,1760,64512,0,0,0,0,0,
0,0,0,0,0,0,0,3840,3584,0,0,0,0,0,0,
0,0,0,0,0,0,3072,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
65280,2046,0,0,0,0,0,0,0,0,0,0,0,1,65408,
4094,0,0,0,0,0,0,0,0,0,0,0,3,65408,4094,
0,0,0,0,0,0,0,0,0,0,0,3,65472,8190,0,
0,0,0,0,0,0,0,0,0,0,7,65472,16383,0,0,
0,0,0,0,0,0,0,0,0,7,65472,16383,0,0,0,
0,0,0,0,0,0,0,0,15,65504,32767,0,0,0,0,
0,0,0,0,0,0,0,15,65504,32767,0,0,0,0,0,
0,0,0,0,0,0,31,65521,65535,0,0,0,0,0,0,
0,0,0,0,0,31,65521,65535,0,0,0,0,0,0,0,
0,0,0,0,31,65531,65535,32768,0,0,0,0,0,0,0,
0,0,0,63,65535,65535,32768,0,0,0,0,0,0,0,0,
0,0,63,63487,65023,32768,0,0,0,0,0,0,0,0,0,
0,127,63487,63999,32768,0,0,0,0,0,0,0,0,0,0,
127,59391,63999,32768,0,0,0,0,0,0,0,0,0,0,255,
58367,61951,32768,0,0,0,0,0,0,0,0,0,0,255,50175,
57599,32768,0,0,0,0,0,0,0,0,0,0,511,50175,57599,
32768,0,0,0,0,0,0,0,0,0,0,511,33279,49407,32768,
0,0,0,0,0,0,0,0,0,0,1023,33279,33023,49152,0,
0,0,0,0,0,0,0,0,0,1023,32768,0,0,0,0,
0,0,0,0,0,0,0,0,2047,0,0,0,0,0,0,
0,0,0,0,0,0,0,4094,0,0,0,0,0,0,0,
0,0,0,0,0,0,4094,0,0,0,0,0,0,0,0,
0,0,0,0,0,8188,0,0,0,0,0,0,0,0,0,
0,0,0,0,8188,0,0,0,0,0,0,0,0,0,0,
0,0,6,8188,0,0,0,0,0,0,0,0,0,0,0,
0,7,33016,0,0,0,0,0,0,0,0,0,0,0,0,
6,49152,0,0,0,0,0,0,0,0,0,0,0,0,12,
49152,0,0,0,0,0,0,0,0,0,0,0,0,8,16380,
0,0,0,0,0,0,0,0,0,0,0,0,65528,112,0,
0,0,0,0,0,0,0,0,0,0,0,30720,448,0,0,
0,0,0,0,0,0,0,0,0,0,3584,1536,0,0,0,
0,0,0,0,0,0,0,0,0,480,3584,0,0,0,0,
0,0,0,0,0,0,0,0,112,33536,0,0,0,0,0,
0,0,0,0,0,0,0,99,57600,0,0,0,0,0,0,
0,0,0,0,0,0,110,8064,0,0,0,0,0,0,0,
0,0,0,0,0,248,448,0,0,0,0,0,0,0,0,
0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,
0,0,0,384,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,  };

struct Image demoimage[] = {
/* 0 */{0, 0, 219, 68, 2,(USHORT *)&demoimgbitblk[0], 3, 0, (struct Image *)0L},
  };

SHORT demobrddat[] = {
/* 0 */ -4 ,  4 , -1 , -1 , 11 , -2 , 82 , -2 , 94 , -1 , 97 ,  4 , 97 , 13 , 94 , 18 , 82 , 19 , 11 , 19 , -1 ,
 18 , -4 , 13 , -4 ,  4 ,
/* 26 */  4 , -4 , 89 , -4 , 89 , 21 ,  4 , 21 ,  4 , -4 ,
/* 36 */ -1 , -1 , 88 , -1 , 88 , 14 , -1 , 14 , -1 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
  0 ,  0 ,  0 ,  0 ,  0 ,
/* 62 */ -1 , -1 ,240 , -1 ,240 ,  8 , -1 ,  8 , -1 , -1 ,
/* 72 */ -4 ,  4 , -1 , -1 , 11 , -2 , 82 , -2 , 94 , -1 , 97 ,  4 , 97 , 13 , 94 , 18 , 82 , 19 , 11 , 19 , -1 ,
 18 , -4 , 13 , -4 ,  4 ,
/* 98 */  4 , -4 , 89 , -4 , 89 , 21 ,  4 , 21 ,  4 , -4 ,
/* 108 */  0 ,  0 ,  3 , -6 ,  7 ,-10 , 14 ,-14 , 21 ,-17 , 34 ,-19 , 42 ,-20 , 51 ,-20 , 59 ,-19 , 72 ,-17 , 79 ,
-14 , 86 ,-10 , 90 , -6 , 93 ,  0 , 93 , 10 , 90 , 16 , 86 , 20 , 79 , 24 , 72 , 27 , 59 , 29 , 51 ,
 30 , 42 , 30 , 34 , 29 , 21 , 27 , 14 , 24 ,  7 , 20 ,  3 , 16 ,  0 , 10 ,  0 ,  0 ,
/* 166 */  0 ,  0 ,  3 , -6 ,  7 ,-10 , 14 ,-14 , 21 ,-17 , 34 ,-19 , 42 ,-20 , 51 ,-20 , 59 ,-19 , 72 ,-17 , 79 ,
-14 , 86 ,-10 , 90 , -6 , 93 ,  0 , 93 , 10 , 90 , 16 , 86 , 20 , 79 , 24 , 72 , 27 , 59 , 29 , 51 ,
 30 , 42 , 30 , 34 , 29 , 21 , 27 , 14 , 24 ,  7 , 20 ,  3 , 16 ,  0 , 10 ,  0 ,  0 ,
  };

struct Border demobrd[] = {
/* 0 */{0, 0, 3, 0, 0, 13,(SHORT *)&demobrddat[0],(struct Border *)&demobrd[1]},
/* 1 */{0, 0, 0, 0, 0, 5,(SHORT *)&demobrddat[26], (struct Border *)0L},
/* 2 */{71, 0, 0, 139, 0, 13,(SHORT *)&demobrddat[36], (struct Border *)0L},
/* 3 */{0, 0, 0, 0, 0, 5,(SHORT *)&demobrddat[62], (struct Border *)0L},
/* 4 */{0, 0, 3, 0, 0, 13,(SHORT *)&demobrddat[72],(struct Border *)&demobrd[5]},
/* 5 */{0, 0, 0, 0, 0, 5,(SHORT *)&demobrddat[98], (struct Border *)0L},
/* 6 */{39, 43, 3, 0, 0, 29,(SHORT *)&demobrddat[108],(struct Border *)&demobrd[7]},
/* 7 */{293, 43, 3, 0, 0, 29,(SHORT *)&demobrddat[166], (struct Border *)0L},
  };

struct Gadget demogad[] = {
/* 0 */{(struct Gadget *)&demogad[1], 263, 145, 94, 18, 0, 3, 4097, (struct Border *)&demobrd[0], (LONG)0, (struct IntuiText *)&demointtxt[0], (LONG)0, (LONG)0, 0, (LONG)0},
/* 1 */{(struct Gadget *)&demogad[2], 105, 14, 219, 68, 4, 3, 4097, (struct Image *)&demoimage[0], (LONG)0, (struct IntuiText *)&demointtxt[1], (LONG)0, (LONG)0, 1, (LONG)0},
/* 2 */{(struct Gadget *)&demogad[3], 56, 97, 311, 17, 0, 3, 4099, (struct Border *)&demobrd[2], (LONG)0, (struct IntuiText *)&demointtxt[2], (LONG)0, (struct PropInfo *)&demopropinf[0], 2, (LONG)0},
/* 3 */{(struct Gadget *)&demogad[4], 125, 120, 242, 8, 0, 3, 4100, (struct Border *)&demobrd[3], (LONG)0, (struct IntuiText *)&demointtxt[3], (LONG)0, (struct StringInfo *)&demostrinf[0], 
3,(LONG)0},
/* 4 */{(struct Gadget *)&demogad[5], 41, 145, 94, 18, 0, 3, 4097, (struct Border *)&demobrd[4], (LONG)0, (struct IntuiText *)&demointtxt[4], (LONG)0, (LONG)0, 4, (LONG)0},
/* 5 */{(struct Gadget *)&demogad[6], 417, 6, 13, 172, 0, 3, 4097, (LONG)0, (LONG)0, (struct IntuiText *)&demointtxt[5], (LONG)0, (LONG)0, 5, (LONG)0},
/* 6 */{(struct Gadget *)&demogad[7], 0, 5, 13, 173, 0, 3, 4097, (LONG)0, (LONG)0, (struct IntuiText *)&demointtxt[6], (LONG)0, (LONG)0, 6, (LONG)0},
/* 7 */{(struct Gadget *)&demogad[8], 0, 177, 430, 8, 0, 3, 4097, (LONG)0, (LONG)0, (struct IntuiText *)&demointtxt[7], (LONG)0, (LONG)0, 7, (LONG)0},
/* 8 */{(struct Gadget *)0L, 0, 0, 430, 8, 0, 3, 4097, (LONG)0, (LONG)0, (struct IntuiText *)&demointtxt[8], (LONG)0, (LONG)0, 8, (LONG)0},
  };

struct Requester image;

imagestart(window)
struct Window *window;
{
InitRequester(&image);
image.LeftEdge = 0;
image.TopEdge = 0;
image.Width = 430;
image.Height = 185;
image.BackFill = 1;
image.Flags = 0;
image.ReqGadget = &demogad[0];
image.ReqBorder = &demobrd[6];
image.ReqText = 0L;
/*return( Request( &image,window));*/
}

/* Kopiert Imagedaten ins Chipmem */
Imagemem(source,anz)
register USHORT *source;
register USHORT anz;
{
register USHORT *dest,*t;
register USHORT j;
if(t = dest = (USHORT *)AllocMem((anz * 2),MEMF_CHIP|MEMF_CLEAR))
  for( j = 0; j < anz; j++)
    *dest++ = *source++;
return( (USHORT *)t);
}

struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;

main()
{
struct Window *W0,*W1;
APTR dummy = 0L;

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

if(!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0)))
  exit(0);

demoimage[0].ImageData = (USHORT *)Imagemem(&demoimgbitblk[0],1904);

if(W0 = (struct Window *) OpenWindow(&NW))
  {
  imagestart(W0);
  W1 = reqdraw(dummy,&image,W0);
  Delay(100);
/*  EndRequest(&image,W0);*/

  reqend(dummy,&image,W0);
  CloseWindow(W0);
  FreeMem(demoimage[0].ImageData,3808);
  }
CloseLibrary(GfxBase);
CloseLibrary(IntuitionBase);
}

