#import <appkit/Application.h>
#import <appkit/appkit.h>
#import <sys/file.h>
#import <stdio.h>
#import <stdlib.h>
#import <string.h>
#import "ToyWinPCD.h"
#import "PrefControl.h"
#import "strfunc.h"

#define  pcdCOMMAND	"hpcdtoppm"

static int prefBase = 0;
static int prefBright = 0;

@implementation ToyWinPCD

+ (void)setBase:(int)base bright:(int)bright
{
	prefBase = base;
	prefBright = bright;
}

- (commonInfo *)drawToyWin:(const char *)fileName type:(int)type
	map:(unsigned char **)map err:(int *)err
{
	int x;
	char buf[256];
	static const char *const brightTab[] = { ":+", "", ":-" };
	static const char *const baseTab[] = {
		"B-16", "B-4", "B", "B+4", "B+16", "B+64" };

	for (x = 0; execList[x]; x++) ;
	execList[x] = (char *)fileName;
	sprintf(buf, "%s(%s%s)", fileName, baseTab[prefBase], brightTab[prefBright]);
	return [super drawToyWin:buf type:type map:map err:err];
}

- setting
{
	int n;
	char **list;
	static char buf[128];
	static char *brightTab[] = { "-c+", "-c0", "-c-" };
	static char *baseTab[] = {
		"-1", "-2", "-3", "-4", "-5", "-6" };

	list = (char **)malloc(sizeof(char *) * 6);
	n = dircopy(buf, NXArgv[0], YES);
	list[0] = buf;
	strcpy(&buf[n], pcdCOMMAND);
	list[1] = &buf[n];
	list[2] = brightTab[prefBright];
	list[3] = baseTab[prefBase];
	list[4] = NULL;	/* filename */
	list[5] = NULL;
	[self setExecList: list ext: "pcd"];
	return self;
}

@end
