#include <workbench/workbench.h>
#include <exec/execbase.h>

#define Drop(s) Write(Output(),s,strlen(s))

extern struct Library	*OpenLibrary();
struct Library		*IconBase;

USHORT DrawerImage1Data[180] =
{
	/* Plane 0 */

	0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0xFFFF,0xFFFF,
	0xFFFF,0xF100,0x003F,0xFFFF,0xFFFF,0xFFFF,0xC600,0x0000,
	0x0000,0x0000,0x0000,0x1D00,0x07FF,0xFFFF,0xFFFF,0xFFFF,
	0x9E00,0x0700,0x0000,0x0000,0x0003,0x9D00,0x073F,0xFFFF,
	0xFFFF,0xFFF3,0x9A00,0x073F,0xFFFF,0xFFFF,0xFFF3,0x9D00,
	0x073F,0xFFE3,0xFF1F,0xFFF3,0x9A00,0x073F,0xFFC0,0x003F,
	0xFFF3,0x9400,0x073F,0xFFFF,0xFFFF,0xFFF3,0x9800,0x073F,
	0xFFFF,0xFFFF,0xFFF3,0x9000,0x0700,0x0000,0x0000,0x0003,
	0x8000,0x07FF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,

	/* Plane 1 */

	0x0003,0xFFFF,0xFFFF,0xFFFF,0xFF80,0x003C,0x0000,0x0000,
	0x0000,0x0E80,0x03C0,0x0000,0x0000,0x0000,0x3980,0x1FFF,
	0xFFFF,0xFFFF,0xFFFF,0xE280,0x1800,0x0000,0x0000,0x0000,
	0x6180,0x18FF,0xFFFF,0xFFFF,0xFFFC,0x6280,0x18C0,0x0000,
	0x0000,0x000C,0x6580,0x18C0,0x0000,0x0000,0x000C,0x6280,
	0x18C0,0x001C,0x00E0,0x000C,0x6580,0x18C0,0x003F,0xFFC0,
	0x000C,0x6B00,0x18C0,0x0000,0x0000,0x000C,0x6600,0x18C0,
	0x0000,0x0000,0x000C,0x6C00,0x18FF,0xFFFF,0xFFFF,0xFFFC,
	0x7800,0x1800,0x0000,0x0000,0x0000,0x7000,0x1FFF,0xFFFF,
	0xFFFF,0xFFFF,0xE000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000
};

struct Image DrawerImage1 =
{
	0,0,
	73,18,2,
	(USHORT *)&DrawerImage1Data[0],
	0x03,0x00,
	(struct Image *)NULL
};

USHORT DrawerImage2Data[180] =
{
	/* Plane 0 */

	0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0xFFFF,0xFFFF,
	0xFFFF,0xF100,0x003F,0xFFFF,0xFFFF,0xFFFF,0xC600,0x0000,
	0x0000,0x0000,0x0000,0x1D00,0x07FF,0xFFFF,0xFFFF,0xFFFF,
	0x9E00,0x0700,0x0000,0x0000,0x0003,0x9D00,0x0400,0x0000,
	0x0000,0x0003,0x9A00,0x0000,0x0000,0x0000,0x0013,0x9D00,
	0x0000,0x0000,0x0000,0x0033,0x9A00,0x3FFF,0xFFFF,0xFFFF,
	0xFF33,0x9400,0x3FFF,0xFFFF,0xFFFF,0xFF33,0x9800,0x3FFF,
	0xFFFF,0xFFFF,0xFF33,0x9000,0x3FFF,0xF8FF,0xC7FF,0xFF33,
	0x8000,0x3FFF,0xF000,0x0FFF,0xFF27,0x8000,0x3FFF,0xFFFF,
	0xFFFF,0xFF00,0x0000,0x3FFF,0xFFFF,0xFFFF,0xFF00,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,

	/* Plane 1 */

	0x0003,0xFFFF,0xFFFF,0xFFFF,0xFF80,0x003C,0x0000,0x0000,
	0x0000,0x0E80,0x03C0,0x0000,0x0000,0x0000,0x3980,0x1FFF,
	0xFFFF,0xFFFF,0xFFFF,0xE280,0x1800,0x0000,0x0000,0x0000,
	0x6180,0x18FF,0xFFFF,0xFFFF,0xFFFC,0x6280,0x1B9A,0xAAAA,
	0xAAAA,0xAABC,0x6580,0x3D59,0x5555,0x5555,0x556C,0x6280,
	0xFFFF,0xFFFF,0xFFFF,0xFFCC,0x6580,0xC000,0x0000,0x0000,
	0x00CC,0x6B00,0xC000,0x0000,0x0000,0x00CC,0x6600,0xC000,
	0x0000,0x0000,0x00CC,0x6C00,0xC000,0x0700,0x3800,0x00CC,
	0x7800,0xC000,0x0FFF,0xF000,0x00D8,0x7000,0xC000,0x0000,
	0x0000,0x00FF,0xE000,0xC000,0x0000,0x0000,0x00E0,0x0000,
	0xFFFF,0xFFFF,0xFFFF,0xFFC0,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000
};

struct Image DrawerImage2 =
{
	0,0,
	73,18,2,
	(USHORT *)&DrawerImage2Data[0],
	0x03,0x00,
	(struct Image *)NULL
};

struct DrawerData DrawerIconDrawer =
{
	50,50,
	400,100,
	-1,-1,
	NULL,
	0x0240027F,
	(struct Gadget *)NULL,
	(struct Image *)NULL,
	(UBYTE *)NULL,
	(struct Screen *)NULL,
	(struct BitMap *)NULL,
	90,40,
	-1,-1,
	WBENCHSCREEN,

	0,
	0
};

struct DiskObject DrawerIcon =
{
	WB_DISKMAGIC,
	WB_DISKVERSION,

	(struct Gadget *)NULL,
	0,0,
	73,18,
	GADGIMAGE | GADGHIMAGE,
	RELVERIFY | GADGIMMEDIATE,
	BOOLGADGET,
	(APTR)&DrawerImage1,
	(APTR)&DrawerImage2,
	(struct IntuiText *)NULL,
	NULL,
	(APTR)NULL,
	NULL,
	(APTR)NULL,

	WBDRAWER,
	(char *)NULL,
	(char **)NULL,
	NO_ICON_POSITION,
	NO_ICON_POSITION,
	(struct DrawerData *)&DrawerIconDrawer,
	(char *)NULL,
	0
};

void _wb_parse(){}

void
main(argc,argv)
long argc;
char *argv[];
{
	long FileLock;

	if(!argc)
		exit(20);

	if(!(IconBase = (struct Library *)OpenLibrary("icon.library",LIBRARY_VERSION)))
	{
		Drop("Couldn't open icon.library!\n");

		exit(20);
	}

	if(!(FileLock = CreateDir(argv[1])))
	{
		Drop("Couldn't create directory!\n");
		CloseLibrary(IconBase);

		exit(20);
	}

	UnLock(FileLock);

	if(!PutDiskObject(argv[1],&DrawerIcon))
	{
		Drop("Couldn't create icon!\n");
		CloseLibrary(IconBase);

		exit(20);
	}

	CloseLibrary(IconBase);

	exit(0);
}
