#include <intuition/intuition.h>
#include <workbench/workbench.h>
#include <stdio.h>

extern BOOL	LoadImage();
extern USHORT	*LoadRaster();
extern void	FreeImageData();

extern void	Image2C();
extern void	Image2Icon();

BOOL
FindSuffix(s,t)
char *s,*t;
{
	register long i,len;

	if((len = strlen(s) - strlen(t)) <= 0)
		return(FALSE);

	for(i = 0 ; i < strlen(t) ; i++)
		if(s[i + len] != t[i])
			return(FALSE);

	return(TRUE);
}

void
main(argc,argv)
long argc;
char *argv[];
{
	register long i;
	struct Image Image1,Image2;
	UBYTE Type;
	FILE *IconFile;
	char Name[60];

	if(!argc)
		exit(20);

	for(i = 0 ; i < strlen(argv[0]) ; i++)
		argv[0][i] = toupper(argv[0][i]);

	if(argc < 4)
	{
		printf("\n\33[1m%s\33[0m (C) Copyright 1989 by\n",argv[0]);
		printf("\33[3mOlaf Barthel & ED Electronic Design Hannover\33[0m\n\n");

		printf("Syntax: \33[1m%s\33[0m -T{1-7} IconName BildName1 [BildName2]\n\n",argv[0]);

		printf("\t-T1 = Diskette\n");
		printf("\t-T2 = Verzeichnis\n");
		printf("\t-T3 = Programm\n");
		printf("\t-T4 = Project (Daten)\n");
		printf("\t-T5 = Mülltonne\n");
		printf("\t-T6 = Device (Gerät)\n");
		printf("\t-T7 = KickStart (Betriebssystem)\n\n");

		printf("Der Name des Icons kann das Suffix \33[1m.c\33[0m aufweisen,\n");
		printf("muß aber nicht.\n\n");

		exit(0);
	}

	if(argv[1][0] != '-' && toupper(argv[1][1]) != 'T')
	{
		printf("%s: Aufrufargument \33[1m-T1-7\33[0m fehlt!\7\n",argv[0]);

		exit(10);
	}

	Type = argv[1][2] - '0';

	if(Type < 1 || Type > 7)
	{
		printf("%s: Aufrufargument \33[1m%s\33[0m unzulässig!\7\n",argv[0],argv[1]);

		exit(10);
	}

	strcpy(Name,argv[2]);

	if(!FindSuffix(Name,".c"))
		strcat(Name,".c");

	if(!(IconFile = fopen(Name,"w")))
	{
		printf("%s: Icondatei \33[1m%s\33[0m nicht zu öffnen!\7\n",argv[0],Name);

		exit(10);
	}

	fprintf(IconFile,"#include <workbench/workbench.h>\n\n");

	if(!LoadImage(argv[3],&Image1))
	{
		printf("%s: Bilddatei \33[1m%s\33[0m nicht gefunden!\7\n",argv[0],argv[3]);
		fclose(IconFile);

		exit(10);
	}

	Image1 . ImageData = (USHORT *)LoadRaster(argv[3]);

	Image2C(&Image1,"Image1","Image1Data",IconFile);

	FreeImageData(&Image1);

	if(argc == 5)
	{
		if(!LoadImage(argv[4],&Image2))
		{
			printf("%s: Bilddatei \33[1m%s\33[0m nicht gefunden!\7\n",argv[0],argv[4]);
			fclose(IconFile);
			
			exit(10);
		}

		Image2 . ImageData = (USHORT *)LoadRaster(argv[4]);

		Image2C(&Image2,"Image2","Image2Data",IconFile);

		FreeImageData(&Image2);

		Image2Icon(&Image1,"Image1","Image2","MyIcon",Type,IconFile);
	}
	else
		Image2Icon(&Image1,"Image1",NULL,"MyIcon",Type,IconFile);

	fclose(IconFile);

	printf("%s: Datei gespeichert!\n",argv[0]);
			
	exit(0);
}
