/*********************************************************************/
/*                                                                   */
/*                     Copyright (c) 1987                            */
/*                    Commodore-Amiga, Inc.                          */
/*                    All rights reserved.                           */
/*                                                                   */
/*                                                                   */
/*      Unlimited non-comercial use of this program is given,        */
/*      provided this notice is left intact.                         */
/*                      andy finkel                                  */
/*                                                                   */
/*********************************************************************/

#include "exec/types.h"
#include "intuition/intuition.h"

#define OK 1
#define CANCEL 2
#define NUMBER1 3
#define NUMBER2 4
#define NUMBER3 5
#define NUMBER4 6
#define NUMBER5 7
#define NUMBER6 8
#define NUMBER7 9
#define NUMBER8 10

#define BNUMBER0 12
#define BNUMBER1 13
#define BNUMBER2 14
#define BNUMBER3 15
#define BNUMBER4 16
#define BNUMBER5 17
#define BNUMBER6 18
#define BNUMBER7 19
#define BNUMBER8 20
#define BNUMBER9 21
#define BNUMBER10 22
#define BNUMBER11 23

#define BLUE 0 
#define WHITE 1 
#define BLACK 2 
#define RED 3 


#define INPUTWIDTH 80
#define INPUTHEIGHT 10
#define OKWIDTH 20
#define OKHEIGHT 10
#define CANCELWIDTH 52
#define CANCELHEIGHT 10
#define BITWIDTH 16
#define BITHEIGHT 10

char buffer1[10];
char buffer2[10];
char buffer3[10];
char buffer4[10];
char buffer5[10];
char buffer6[10];
char buffer7[10];
char buffer8[10];
char ubuffer1[10];
char ubuffer2[10];
char ubuffer3[10];
char ubuffer4[10];
char ubuffer5[10];
char ubuffer6[10];
char ubuffer7[10];
char ubuffer8[10];

SHORT Inputxys[] = { /* String input gadget xy pairs */
        0,0,
        INPUTWIDTH+1,0,
        INPUTWIDTH+1,INPUTHEIGHT,
        0,INPUTHEIGHT,
        0,0
};

struct Border InputBorder = { /* border for String input gadget */
        -1,-1,                          /* left,top */
        WHITE,RED,JAM1, /* front,back,drawmode */
        5,                                              /* # of xy pairs */
        Inputxys,                                /* array of xy pairs */
        NULL                      /* ptr to another border */
};

SHORT Okxys[] = { /* OK gadget xy pairs */
        0,0,
        OKWIDTH+1,0,
        OKWIDTH+1,OKHEIGHT+1,
        0,OKHEIGHT+1,
        0,0
};

struct Border OkBorder = {      /* border for OK gadget */
        -1,-1,                  /* left,top */
        WHITE,BLACK,JAM1,       /* front,back,drawmode */
        5,                      /* # of xy pairs */
        Okxys,                  /* array of xy pairs */
        NULL                    /* ptr to another border */
};

SHORT Cancelxys[] = { /* CANCAL gadget xy pairs */
        0,0,
        CANCELWIDTH+1,0,
        CANCELWIDTH+1,CANCELHEIGHT+1,
        0,CANCELHEIGHT+1,
        0,0
};

struct Border CancelBorder = {  /* border for CANCEL gadget */
        -1,-1,                  /* left,top */
        WHITE,RED,JAM1,         /* front,back,drawmode */
        5,                      /* # of xy pairs */
        Cancelxys,              /* array of xy pairs */
        NULL                    /* ptr to another border */
};

SHORT Bitxys[] = { /* bit gadget xy pairs */
        0,0,
        BITWIDTH+1,0,
        BITWIDTH+1,BITHEIGHT+1,
        0,BITHEIGHT+1,
        0,0
};

struct Border BitBorder = {  /* border for bit gadget */
        -1,-1,                  /* left,top */
        WHITE,RED,JAM1,         /* front,back,drawmode */
        5,                      /* # of xy pairs */
        Bitxys,              /* array of xy pairs */
        NULL                    /* ptr to another border */
};

struct StringInfo       field1 = {
        buffer1,     /* buffer */
        ubuffer1,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};

struct StringInfo       field2 = {
        buffer2,     /* buffer */
        buffer2,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field3 = {
        buffer3,     /* buffer */
        ubuffer3,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field4 = {
        buffer4,     /* buffer */
        ubuffer4,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field5 = {
        buffer5,     /* buffer */
        ubuffer5,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field6 = {
        buffer6,     /* buffer */
        ubuffer6,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field7 = {
        buffer7,     /* buffer */
        ubuffer7,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};
struct StringInfo       field8 = {
        buffer8,     /* buffer */
        ubuffer8,    /* undo buffer */
        7,              /* char posn in buffer */
        8,	        /* max # of chars */
};

struct IntuiText text1 = {
	WHITE,RED,JAM1,-50,0,0,"CMap:",NULL};
struct IntuiText text2 = {
	WHITE,RED,JAM1,-50,0,0,"Mode:",NULL};
struct IntuiText text3 = {
	WHITE,RED,JAM1,-50,0,0,"SrcX:",NULL};
struct IntuiText text4 = {
	WHITE,RED,JAM1,-50,0,0,"SrcY:",NULL};
struct IntuiText text5 = {
	WHITE,RED,JAM1,-50,0,0,"SrcW:",NULL};
struct IntuiText text6 = {
	WHITE,RED,JAM1,-50,0,0,"SrcH:",NULL};
struct IntuiText text7 = {
	WHITE,RED,JAM1,-50,0,0,"DCol:",NULL};
struct IntuiText text8 = {
	WHITE,RED,JAM1,-50,0,0,"DRow:",NULL};

struct IntuiText btext0 = {
	WHITE,RED,JAM1,0,0,0,"MC",NULL};
struct IntuiText btext1 = {
	WHITE,RED,JAM1,0,0,0,"MR",NULL};
struct IntuiText btext2 = {
	WHITE,RED,JAM1,0,0,0,"FC",NULL};
struct IntuiText btext3 = {
	WHITE,RED,JAM1,0,0,0,"FR",NULL};
struct IntuiText btext4 = {
	WHITE,RED,JAM1,0,0,0,"FR",NULL};
struct IntuiText btext5 = {
	WHITE,RED,JAM1,0,0,0,"FC",NULL};
struct IntuiText btext6 = {
	WHITE,RED,JAM1,0,0,0,"CE",NULL};
struct IntuiText btext7 = {
	WHITE,RED,JAM1,0,0,0,"AS",NULL};
struct IntuiText btext8 = {
	WHITE,RED,JAM1,0,0,0,"D1",NULL};
struct IntuiText btext9 = {
	WHITE,RED,JAM1,0,0,0,"D2",NULL};
struct IntuiText btext10 = {
	WHITE,RED,JAM1,0,0,0,"D3",NULL};
struct IntuiText btext11 = {
	WHITE,RED,JAM1,-48,0,0,"Spec: D4",NULL};

struct IntuiText OKText = {
	WHITE,RED,JAM1,2,0,0,"OK",NULL};
struct IntuiText CancelText = {
	WHITE,RED,JAM1,2,0,0,"CANCEL",NULL};

struct Gadget sGadget[] = {    /* the input gadget */
{
        NULL,                   	/* ptr to next gadget */
        60,20,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadet_Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text1,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field1,	       	 	/* special info */
        NUMBER1,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[0],                   	/* ptr to next gadget */
        60,30,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,			/* Gadet_Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text2,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field2,	        	/* special info */
        NUMBER2,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[1],                   	/* ptr to next gadget */
        60,40,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* GadetFlags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text3,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field3,	        	/* special info */
        NUMBER3,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[2],                   	/* ptr to next gadget */
        60,50,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadget Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text4,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field4,	        	/* special info */
        NUMBER4,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[3],                   	/* ptr to next gadget */
        60,60,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadget Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text5,                 	/* text for input prompt */
        0,                   	   	/* mutual exclude */
        &field5,	        	/* special info */
        NUMBER5,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[4],                   	/* ptr to next gadget */
        60,70,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadget Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text6,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field6,	        	/* special info */
        NUMBER6,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[5],                   	/* ptr to next gadget */
        60,80,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadget Flags */
        RELVERIFY,             	 	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text7,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field7,	        	/* special info */
        NUMBER7,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &sGadget[6],                   	/* ptr to next gadget */
        60,90,INPUTWIDTH,INPUTHEIGHT,   /* left,top,width,height */
        GADGHCOMP,     			/* Gadget Flags */
        RELVERIFY,              	/* Activation Flag */
        STRGADGET,    			/* gadget type */
        &InputBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &text8,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        &field8,	        	/* special info */
        NUMBER8,                   	/* ID */
        NULL                    	/* UserData */
}
};

struct Gadget bgadget[] = {    		/* the bit gadgets */
{
        &sGadget[7],                    /* ptr to next gadget */
        258,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext0,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER0,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[0],                   	/* ptr to next gadget */
        240,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext1,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER1,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[1],                    /* ptr to next gadget */
        222,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext2,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER2,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[2],                    /* ptr to next gadget */
        204,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext3,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER3,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[3],                   	/* ptr to next gadget */
        186,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext4,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER4,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[4],                   	/* ptr to next gadget */
        168,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext5,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER5,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[5],                   	/* ptr to next gadget */
        150,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Flags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext6,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER6,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[6],                   	/* ptr to next gadget */
        132,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Fllags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext7,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER7,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[7],                   	/* ptr to next gadget */
        114,110,BITWIDTH,BITHEIGHT,     /* left,top,width,height */
        GADGHCOMP,            		/* Gadget Fllags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext8,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER8,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[8],                   	/* ptr to next gadget */
        96,110,BITWIDTH,BITHEIGHT,     	/* left,top,width,height */
        GADGHCOMP,            		/* Gadget Fllags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext9,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER9,                   	/* ID */
        NULL                    	/* UserData */
},
{ 
        &bgadget[9],                   	/* ptr to next gadget */
        78,110,BITWIDTH,BITHEIGHT,     	/* left,top,width,height */
        GADGHCOMP,            		/* Gadget Fllags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext10,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER10,                   	/* ID */
        NULL                    	/* UserData */
},
{
        &bgadget[10],                   /* ptr to next gadget */
        60,110,BITWIDTH,BITHEIGHT,     	/* left,top,width,height */
        GADGHCOMP,            		/* Gadget Fllags */
        RELVERIFY|TOGGLESELECT,    	/* Activation Flag */
        BOOLGADGET,    			/* gadget type */
        &BitBorder,         		/* gadget render */
        NULL,                   	/* select render */
        &btext11,                 	/* text for input prompt */
        0,                      	/* mutual exclude */
        NULL,	        		/* special info */
        BNUMBER11,                   	/* ID */
        NULL                    	/* UserData */
}
};


struct Gadget OKGadget = {
        &bgadget[11]
        256,140,OKWIDTH,OKHEIGHT, 	/* left,top,width,height */
        GADGHCOMP,              	/* Gadget Flags */
        RELVERIFY|ENDGADGET,    	/* Activation flag */
        BOOLGADGET,   			/* gadget type */
        &OkBorder,              	/* gadget render */
        NULL,                   	/* select render */
        &OKText,
        0,                      	/* mutual exclude */
        NULL,                   	/* special info */
        OK,                     	/* ID */
        NULL                    	/* UserData */
};

struct Gadget CancelGadget = {
        &OKGadget,
        160,140,CANCELWIDTH,CANCELHEIGHT, 	/* left,top,width,height */
        GADGHCOMP,              		/* Gadget Flags */
        RELVERIFY|ENDGADGET,    		/* Activation flag */
        BOOLGADGET,   				/* gadget type */
        &CancelBorder,              		/* gadget render */
        NULL,                   		/* select render */
        &CancelText
        0,                      		/* mutual exclude */
        NULL,                   		/* special info */
        CANCEL,                 		/* ID */
        NULL                    		/* UserData */
};

struct IntuiText projectext[] = {
  {
    BLUE, WHITE, JAM2,  	/* FrontPen, BackPen, DrawMode */
    0, 20,               	/* LeftEdge, TopEdge */
    NULL,               	/* ITextFont */
    "\251 1987 Commodore",  	/* IText */
    NULL        		/* NextText */
  },
  {
    BLUE, WHITE, JAM2,  	/* FrontPen, BackPen, DrawMode */
    0, 10,               	/* LeftEdge, TopEdge */
    NULL,               	/* ITextFont */
    "By Andy Finkel",   	/* IText */
    &projectext[0]      	/* NextText */
  }
  {
    BLUE, WHITE, JAM2,  	/* FrontPen, BackPen, DrawMode */
    0, 0,               	/* LeftEdge, TopEdge */
    NULL,               	/* ITextFont */
    "Printer Driver Control",   /* IText */
    &projectext[1]      	/* NextText */
  }
};

struct MenuItem projectitems[] = {
  { 
    NULL,           		/* next item */
    0, 0, 180, 30,      	/* LeftEdge, TopEdge, Width, Height */
    ITEMENABLED | ITEMTEXT | HIGHCOMP,
    0,                  	/* mutual exclude */
    (APTR)&projectext[2],	/* ItemFill */
    NULL,               	/* SelectFill */
    NULL,               	/* Command */
    NULL,               	/* SubItem */
    NULL                	/* NextSelect */
  }
};

struct Menu menus[] = {
  {
    NULL                /* next menu */
    10+0, 0, 100, 0,    /* LeftEdge, TopEdge, Width, Height */
    MENUENABLED,        /* flags */
    "About",          	/* name */
    projectitems        /* first item */
  },
};
