/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
* |_o_o|\\ Copyright (c) 1987 The Software Distillery.  All Rights Reserved *
* |. o.| ||          Written by Doug Walker                                 *
* | .  | ||          The Software Distillery                                *
* | o  | ||          235 Trillingham Lane                                   *
* |  . |//           Cary, NC 27511                                         *
* ======             BBS:(919)-471-6436                                     *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#include <exec/types.h>
#include <intuition/intuition.h>
#include "hackicon.h"


 
struct Image colimage[CTSIZ] = {    /* Imagery for color selection gadgets */
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,0,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,1,NULL },
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,2,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,3,NULL },   
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,4,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,5,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,6,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,7,NULL },
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,8,NULL }, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,9,NULL },
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,10,NULL}, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,11,NULL},
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,12,NULL}, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,13,NULL},
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,14,NULL}, 
   {0,0,PLXWIDTH,PLYHEIGHT,1, NULL ,0,15,NULL}
};
 
struct Gadget colgads[16] = {
   { &colgads[1], PLXLEFT, PLYTOP, PLXWIDTH, PLYHEIGHT, 
      GADGHBOX | GADGIMAGE, RELVERIFY,
      BOOLGADGET,  (APTR)&colimage[0], NULL,NULL,NULL,NULL, 0, NULL
   },
   { &colgads[2], PLXLEFT,PLYTOP+PLYHEIGHT, PLXWIDTH, PLYHEIGHT, 
      GADGHBOX | GADGIMAGE, RELVERIFY,
      BOOLGADGET,  (APTR)&colimage[1], NULL,NULL,NULL,NULL, 1, NULL
   },
   { &colgads[3], PLXLEFT,PLYTOP+PLYHEIGHT*2, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[2], NULL,NULL,NULL,NULL, 2, NULL
   },
   { &colgads[4], PLXLEFT,PLYTOP+PLYHEIGHT*3, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[3], NULL,NULL,NULL,NULL, 3, NULL
   },
   { &colgads[5], PLXLEFT,PLYTOP+PLYHEIGHT*4, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[4], NULL,NULL,NULL,NULL, 4, NULL
   },
   { &colgads[6], PLXLEFT,PLYTOP+PLYHEIGHT*5, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[5], NULL,NULL,NULL,NULL, 5, NULL
   },
   { &colgads[7], PLXLEFT,PLYTOP+PLYHEIGHT*6, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[6], NULL,NULL,NULL,NULL, 6, NULL
   },
   {        NULL, PLXLEFT, PLYTOP+PLYHEIGHT*7,  PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[7], NULL,NULL,NULL,NULL, 7, NULL
   },
/*
 * The following are defined in case the user selects 16-color mode.
 * If so, simply set colgads[7].NextGadget = &colgads[8] and all will be well.
 */
   { &colgads[9], PLXLEFT+PLXWIDTH+5,PLYTOP, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[8], NULL,NULL,NULL,NULL,  8, NULL
   },
   { &colgads[10],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT, PLXWIDTH, PLYHEIGHT, 
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[9], NULL,NULL,NULL,NULL,  9, NULL
   },
   { &colgads[11],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*2, PLXWIDTH, PLYHEIGHT,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[10], NULL,NULL,NULL,NULL, 10, NULL
   },
   { &colgads[12],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*3, PLXWIDTH, PLYHEIGHT,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[11], NULL,NULL,NULL,NULL, 11, NULL
   },
   { &colgads[13],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*4, PLXWIDTH, PLYHEIGHT,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[12], NULL,NULL,NULL,NULL, 12, NULL
   },
   { &colgads[14],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*5, PLXWIDTH, PLYHEIGHT,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[13], NULL,NULL,NULL,NULL, 13, NULL
   },
   { &colgads[15],PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*6,PLXWIDTH, PLYHEIGHT,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[14], NULL,NULL,NULL,NULL, 14, NULL
   },
   {        NULL ,PLXLEFT+PLXWIDTH+5,PLYTOP+PLYHEIGHT*7,PLXWIDTH, PLYHEIGHT-2,
     GADGHBOX | GADGIMAGE, RELVERIFY,
     BOOLGADGET,  (APTR)&colimage[15], NULL,NULL,NULL,NULL, 15, NULL
   },
};

struct IntuiText rtxt = {2,2,JAM1,-9,2,NULL,(UBYTE *)"R",NULL};
struct IntuiText gtxt = {2,2,JAM1,-9,2,NULL,(UBYTE *)"G",NULL};
struct IntuiText btxt = {2,2,JAM1,-9,2,NULL,(UBYTE *)"B",NULL};

struct Image    r_img, g_img, b_img;
struct PropInfo r_prop,g_prop,b_prop;

struct Gadget blue_gad = {
   colgads, 12, EDYTOP+34, PLXLEFT-16, 11, GADGHCOMP, 
   RELVERIFY|GADGIMMEDIATE|FOLLOWMOUSE, PROPGADGET,(APTR)&b_img, NULL,
   &btxt, NULL,(APTR)&b_prop, G_BLUE, NULL };

struct Gadget green_gad = {
   &blue_gad, 12,EDYTOP+22, PLXLEFT-16,11, GADGHCOMP, 
   RELVERIFY|GADGIMMEDIATE | FOLLOWMOUSE, PROPGADGET,(APTR)&g_img, NULL,
   &gtxt, NULL,(APTR)&g_prop, G_GREEN, NULL };

struct Gadget red_gad = {
   &green_gad, 12, EDYTOP+10, PLXLEFT-16,11, GADGHCOMP, 
   RELVERIFY|GADGIMMEDIATE | FOLLOWMOUSE, PROPGADGET,(APTR)&r_img, NULL,
   &rtxt, NULL,(APTR)&r_prop, G_RED, NULL };

struct IntuiText Load_text = {0,2,JAM1,3,20,NULL,
                              (UBYTE *)"Enter a file name to load:",NULL};
struct IntuiText Save_text = {0,2,JAM1,3,20,NULL,
                              (UBYTE *)"Enter a file name to save:",NULL};
struct IntuiText ok_text = {0,2,JAM1,22,2,NULL,(UBYTE *)"OK",NULL};
struct IntuiText cancel_text = {0,2,JAM1,6,2,NULL,(UBYTE *)"Cancel",NULL};

char TextBuffer[100] = "characters";
struct StringInfo Req_Info= {
   TextBuffer, NULL, 0, 100, 0, 0, 0, 0, 0, 0, NULL, 0L, NULL
};

struct Gadget Req_gads[] = {
   { &Req_gads[1], 10, 40, 200, 10, GADGHCOMP, 0, 
     STRGADGET|REQGADGET, NULL, NULL, NULL, 0L, &Req_Info, G_RSTR, NULL
   },
   { &Req_gads[2], 10, 60, 60, 10, GADGHCOMP, RELVERIFY|ENDGADGET,
     BOOLGADGET|REQGADGET, NULL, NULL, &ok_text, 0L, NULL, G_ROK, NULL
   },
   { NULL, 150, 60, 60, 10, GADGHCOMP, RELVERIFY|ENDGADGET,
     BOOLGADGET|REQGADGET, NULL, NULL, &cancel_text, 0L, NULL, G_RCANCEL, NULL
   },
};

SHORT ReqBordData[] = 
{
   -2, -2, 62, -2, 62, 11, -2, 11, -2, -2,
   -3, -2, 202, -2, 202, 9, -3, 9, -3, -2,
   2, 2, 218, 2, 218, 88, 2, 88, 2, 2
};

struct Border Req_Bords[] = {
{  10, 60, 0, 2, JAM1, 5, ReqBordData, &Req_Bords[1] },
{ 150, 60, 0, 2, JAM1, 5, ReqBordData, &Req_Bords[2] },
{  10, 40, 0, 2, JAM1, 5, &ReqBordData[10], &Req_Bords[3] },
{   0,  0, 0, 2, JAM1, 5, &ReqBordData[20], NULL },
   
};

struct Requester NameRequester;

SHORT BorderData[] = 
{
 0, 0, EDWIDTH+3,  0, EDWIDTH+3,  EDHEIGHT+3,    0, EDHEIGHT+3,    0, 0,
 0, 0, PLXWIDTH+3, 0, PLXWIDTH+3, 8*PLYHEIGHT+3, 0, 8*PLYHEIGHT+3, 0, 0,
 0, 0, PLXWIDTH+1, 0, PLXWIDTH+1, PLYHEIGHT+1, 0, PLYHEIGHT+1, 0, 0,
};

struct Border Borders[] = {
{ EDXLEFT-2, EDYTOP-2, 1, 0, JAM1, 5, BorderData, &Borders[1] },
{ PLXLEFT-2, PLYTOP-2, 1, 0, JAM1, 5, &BorderData[10], NULL },
{ PLXLEFT-1, PLYTOP-1, 1, 0, JAM1, 5, &BorderData[20], NULL },
};

