
/*****************************************************************************/
/****  File sorgente dimostrativo dell'uso degli oggetti della Class Lib  ****/
/****  AG-GIF.                                           	          ****/
/****  di Alberto Geneletti	version 1.0	giugno 1993               ****/
/****                                                                     ****/
/****  Il file di output di questo breve sorgente e' un visualizzatore,   ****/
/****  analizzatore, elaboratore e codificatore di immagini GIF.          ****/
/****  Il tutto in un centinaio di righe, e, soprattutto, in un solo co-  ****/
/****  mando.                                                             ****/
/****                                                                     ****/
/****  GAF immagine.gif                                                   ****/
/****  		visualizza un'immagine GIF, ed un eventuale Comment       ****/
/****           Extension                                                 ****/
/****  GAF immagine.gif immagine2.gif                                     ****/
/****           visualizza un'immagine GIF e la ricodifica in             ****/
/****           immagine2.gif, eliminando, se presente, la modalita'      ****/
/****           interlace.                                                ****/
/****  GAF -I immagine.gif immagine2.gif                                  ****/
/****           visualizza un'immagine GIF e la ricodifica in modalita'   ****/
/****           interlace.                                                ****/
/****  GAF -T "Testo di commento" immagine.gif immagine2.gif              ****/
/****           visualizza un'immagine GIF e la ricodifica aggiungendo    ****/
/****           una Comment Extension con il testo specificato, cambiando ****/
/****           eventualmente la signature in GIF89a.                     ****/
/****  GAF -I -T "Testo di commento" immagine.gif immagine2.gif           ****/
/****           Codifica interlace e Comment Extension                    ****/
/****                                                                     ****/
/*****************************************************************************/

#include "gif.h"
#include <stdio.h>

GIFImage *MyGIF;
static int Line;
void ShowWorkInProgress(int Error, PseudoColorImage *Im);

void main(int argc, char *argv[])
{

    boolean Interlace = FALSE;
	char *Text = NULL;
	int Arg = 1;

	if (argc==1) {
		printf("Syntax: GAF [-I][-T \"text extension\" immagine.gif immagine2.gif.\n");
		return;
	}

        while (argv[Arg][0] == '-')
		switch(argv[Arg++][1]) {
			case 'I' : Interlace = TRUE;
				break;
			case 'T' : Text = argv[Arg++];
				break;
			default : printf("Illegal option.\n");
		}

	MyGIF = CreateGIFImage(NULL, Interlace, NULL,
			  AmigaShow, ShowWorkInProgress);

	Line = 0;
	printf("loading...\n");

	switch((*MyGIF->Load)(argv[Arg++],MyGIF)) {
        	
		case OK:
			switch((*MyGIF->Display)(MyGIF)) {

				case OK : break;

				case UNSUPPORTED_DEPTH :
					  printf("Your Amiga can\'t handle %d colors.\n",MyGIF->NColors);
					  printf("Try with an Amiga 4000!\n");
					  break;

				case LIBRARY_ERROR :
					  printf("Can\'t open graphics and intuition library.\n");
					  break;
			}

			printf("Signature: ");
			fwrite(MyGIF->Signature,1,6,stdout);

			if(MyGIF->InterLace)
				printf(" Interlace");
			printf("\nSize: %d x %d\n",MyGIF->Width,MyGIF->Height);
			printf("Depth: %d\n",MyGIF->Depth);

			if(MyGIF->CommentExtension) {
				printf("Comment Extension:\n");
				printf("%s",MyGIF->CommentExtension);
			}

			printf("\n");
			break;

		case ALLOCATION_ERROR:
			printf("Out Of Memory.\n");
			break;

		case CORRUPTED_GIF_FILE :
			printf("Corrupted GIF file.\n");
			break;

		case FILE_NOT_FOUND :
			printf("File not found.\n");
			break;

		case NOT_A_GIF_FILE :
			printf("Not a GIF file.\n");

	}

	if (Arg == (argc - 1)) {
		Line = 0;

		if(MyGIF->InterLace != Interlace) {
			MyGIF->InterLace = Interlace;

			if(Interlace)
				printf("Converted to interlace.\n");
			else
				printf("Converted to not interlaced.\n");
		}

		if(Text) {
			MyGIF->CommentExtension = Text;
			printf("Added Comment Extension:\n");
			printf("%s \n",MyGIF->CommentExtension);
		}

		printf("saving...\n");
		(*MyGIF->Save)(argv[Arg],MyGIF);
		printf("\nOk.\n");
	}

        DestroyGIFImage(MyGIF);
}

void ShowWorkInProgress(int Error, PseudoColorImage *Im)
{
 	Line++;
 	printf("  %4d /%4d\r",Line,Im->Height);
}
