/*  kurvemake  */
/* this is the name of the makefile */
/*******************************************************************/
/*                                                                 */
/*                    These are all structures                     */
/*                used in kurve.c and funkrequest.c                */
/*                                                                 */
/*                  © 90-92 by Henning  Rink                       */
/*                                                                 */
/* copyright notes -> see ReadMe                                   */
/*******************************************************************/


#ifdef TURBOKURVE
char VERSTAG[]="\0$VER: TurboKurve 2.001 (27.09.1992)";
#else
char VERSTAG[]="\0$VER: Kurve 2.001 (27.09.1992)";
#endif


/* data used in kurve.c */
char *Days[]=
   { 
      "Sunday",
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
   };


char *Months[]=
   {
     "January",
     "February",
     "March",
     "April",
     "May",
     "June",
     "July",
     "August",
     "September",
     "October",
     "November",
     "December"
    };

char *ErrorMessages[]=
 {
/*  0 */   "Really quit?",
/*  1 */   "Syntaxerror!",
/*  2 */   "Too much left braces!",
/*  3 */   "Too much right braces!",
/*  4 */   "Unknown arithmetic operator!",
/*  5 */   "Unknown function!",
/*  6 */   "You need some braces!",
/*  7 */   "Error, right before left brace!",
/*  8 */   "Can't open window for coordinates!",
/*  9 */   "Can't open window!",
/* 10 */   "",      /*   "Printer is not online!",       not needed          */
/* 11 */   "",      /*   "Where is the System Disk ?",   cleared 21.12.1991  */
/* 12 */   "Can't open outputwindow!",
/* 13 */   "Can't open requester!",
/* 14 */   "Out of memory?!",
/* 15 */   "Can't open screen, Kurve ends!!",
/* 16 */   "Really wanna print?",
/* 17 */   "Can't create menus!",
/* 18 */   "Not enough chip mem available!\nSave config, before restarting?",
/* 19 */   "Not enough memory for full sized screen!"
  };

char mycolors[]=
   {
      8,8,8,
      0,0,0,
      15,15,15,
      6,9,13,
      14,0,2,
      2,15,2,
      14,8,0,
      0,0,0
   };




unsigned char funktion[255];   /* init with LoadConfig()   25.07.1991 */
unsigned char funktion1[255];
unsigned char funktion2[255];
unsigned char UndoBuffer[280];
unsigned char minx[20];
unsigned char maxx[20];
unsigned char miny[20];
unsigned char maxy[20];

char  fontname[]="topaz.font";
const char *coltoolname="sys:tools/colors";
char  configdir[]="S:";
char  configfile[]="Kurve.config";
char  configpath[16];  /* configdir+configfile  */



APTR ScreenVI;
struct Menu *menu;

struct TextAttr NormalAttr=
{
 (STRPTR)fontname,
 TOPAZ_EIGHTY,
 FS_NORMAL,
 FPF_ROMFONT
};

struct TextAttr BigAttr=
{
 (STRPTR)fontname,
 TOPAZ_SIXTY,
 FS_NORMAL,
 FPF_ROMFONT
};

struct TextAttr BigUnderlineAttr=
{
 (STRPTR)fontname,
 TOPAZ_SIXTY,
 FSF_UNDERLINED,
 FPF_ROMFONT
};



struct EasyStruct es1=
{
 sizeof(struct EasyStruct),0,(UBYTE *)"Kurve message!",(UBYTE *)"%s",NULL
};


char LoadText[]={"Load Settings..."};
char SaveText[]={"Save Settings..."};


struct NewMenu menulist[]=
{
  NM_TITLE,(STRPTR)"Project",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)"Clear",(STRPTR)"X",0,0,NULL,
      NM_ITEM,(STRPTR)"About...",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)"Print",(STRPTR)"P",0,0,NULL,
      NM_ITEM,(STRPTR)"Quit",(STRPTR)"Q",0,0,NULL,

  NM_TITLE,(STRPTR)"Settings",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)"Functionlist...",(STRPTR)"N",0,0,NULL,
      NM_ITEM,(STRPTR)"Intervall...",(STRPTR)"I",0,0,NULL,
      NM_ITEM,(STRPTR)"Unzoom",(STRPTR)"U",0,0,NULL,
      NM_ITEM,(STRPTR)"Stepping Rate",NULL,0,0,NULL,
         NM_SUB,(STRPTR)"1 Pixel",(STRPTR)"1",CHECKIT,14L,NULL,
         NM_SUB,(STRPTR)"2 Pixel",(STRPTR)"2",CHECKIT,13L,NULL,
         NM_SUB,(STRPTR)"4 Pixel",(STRPTR)"4",CHECKIT|CHECKED,11L,NULL,
         NM_SUB,(STRPTR)"8 Pixel",(STRPTR)"8",CHECKIT,7L,NULL,

      NM_ITEM,(STRPTR)"Screenformat...",(STRPTR)"C",0,0,NULL,
      NM_ITEM,(STRPTR)"Change Color...",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)LoadText,NULL,0,0,NULL,
      NM_ITEM,(STRPTR)SaveText,NULL,0,0,NULL,

  NM_TITLE,(STRPTR)"Draw",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)"Function",(STRPTR)"F",0,0,NULL,
      NM_ITEM,(STRPTR)"1st Diff",(STRPTR)"D",0,0,NULL,
      NM_ITEM,(STRPTR)"2nd Diff",(STRPTR)"G",0,0,NULL,
      NM_ITEM,(STRPTR)"Draw All",(STRPTR)"A",0,0,NULL,
      NM_ITEM,(STRPTR)"Refresh Display",(STRPTR)"R",0,0,NULL,

  NM_TITLE,(STRPTR)"Extremes",NULL,0,0,NULL,
      NM_ITEM,(STRPTR)"Zero Points",(STRPTR)"Z",0,0,NULL,
      NM_ITEM,(STRPTR)"Maxima",(STRPTR)"M",0,0,NULL,
      NM_ITEM,(STRPTR)"Turning Points",(STRPTR)"T",0,0,NULL,
      NM_ITEM,(STRPTR)"Num. Integrate",NULL,0,0,NULL,
  NM_END
};



struct NewGadget NewOKGadget=
  { 25,97,90,16,(STRPTR)"_Ok",&BigAttr,7,PLACETEXT_IN,NULL,NULL};

struct NewGadget NewCancelGadget=
  { 275,97,90,16,(STRPTR)"_Cancel",&BigAttr,6,PLACETEXT_IN,NULL,NULL};






struct IntuiText  MemText=
{
 1,0,JAM2,
 132,97,
 &NormalAttr,NULL,NULL
};

struct IntuiText DateText=
{
  1,0,JAM2,
  100,80,
  &NormalAttr,NULL,
  &MemText
};


struct TextAttr NameAttr=
{
 (STRPTR)fontname,
 TOPAZ_SIXTY,
 FSF_BOLD,
 FPF_ROMFONT
};

struct IntuiText CopyrightText=
{
  5,0,JAM2,
  75,45,
  &NameAttr,
  (UBYTE *)"© by Henning Rink 1989-92",
  &DateText
};

struct TextAttr  VerAttr=
{
 (STRPTR)fontname,
 TOPAZ_SIXTY,
 FS_NORMAL,
 FPF_ROMFONT
};

struct IntuiText VerText=
{
 1,0,JAM2,
 75,60,
 &VerAttr,
 (UBYTE *)"Version 2.001, 27.09.1992",
 &CopyrightText
};


#ifdef TURBOKURVE
struct IntuiText WhatisText=
{
 1,0,JAM2,
 100,30,
 &VerAttr,
 (UBYTE *)"The function plotter",
 &VerText
};

struct IntuiText NameText=
{
 5,0,JAM2,
 150,12,
 &NameAttr,
 (UBYTE *)"TurboKurve",
 &WhatisText
};

#else
struct IntuiText WhatisText=
{
 1,0,JAM2,
 75,30,
 &VerAttr,
 (UBYTE *)"FreeWare function plotter",
 &VerText
};

struct IntuiText NameText=
{
 5,0,JAM2,
 175,12,
 &NameAttr,
 (UBYTE *)"Kurve",
 &WhatisText
};

#endif



struct NewWindow FourthNewWindow=
  {
   0,10,
   400,250,
   0,1,
   CLOSEWINDOW ,
   WINDOWCLOSE |
   WINDOWDRAG  |
   ACTIVATE |
   SIMPLE_REFRESH,
   NULL,
   NULL,
   (UBYTE *)"Extremes",
   NULL,
   NULL,
   0,0,
   0,0,
   CUSTOMSCREEN
  };

struct NewWindow ThirdNewWindow=
  {
   120,80,
   400,120,
   0,1,
   IDCMP_REFRESHWINDOW|
   ACTIVATE |
   GADGETUP |
   GADGETDOWN |
   VANILLAKEY |
   MOUSEMOVE |
   MOUSEBUTTONS,
   ACTIVATE |
   SIMPLE_REFRESH ,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   0,0,
   0,0,
   CUSTOMSCREEN
  };

struct NewWindow SecondNewWindow=
  {
   520,11,
   120,36,
   0,1,
   0 ,
   WINDOWDRAG |
   SIMPLE_REFRESH,
   NULL,
   NULL,
   (UBYTE *)"Coordinates",
   NULL,
   NULL,
   0,0,
   0,0,
   CUSTOMSCREEN
  };

struct NewWindow FirstNewWindow=
  {
   0,10,
   640,250,
   0,1,
   MENUPICK |
   MENUVERIFY |
   MOUSEMOVE |
   MOUSEBUTTONS |
   INTUITICKS ,
   BACKDROP |
   ACTIVATE |
   BORDERLESS |
   REPORTMOUSE |
   SMART_REFRESH ,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   0,0,
   0,0,
   CUSTOMSCREEN
  };


UWORD pens[]={~0};

struct TagItem ExtDef[]=
 {
  SA_DisplayID,NULL,
  SA_Pens,(ULONG *)pens,
  SA_Overscan,OSCAN_TEXT,
  SA_AutoScroll,TRUE,
  TAG_DONE,NULL
 };


struct ExtNewScreen FirstNewScreen=
  {
    0,0,
    640,260,
    3,
    0,1,
    PAL_MONITOR_ID|HIRES_KEY ,
    CUSTOMSCREEN | NS_EXTENDED,
    &NormalAttr,
    (UBYTE *)&VERSTAG[7],
    NULL,
    NULL,
    ExtDef
  };

/* definitions for changeintervall 06.08.1992 */

struct IntuiText Intervall2Text=
 {
  1,0,
  JAM2,
  128,10,
  &BigAttr,
  (UBYTE *)"Intervall limits",
  NULL
 };

struct NewGadget NewResetGadget=
  { 150,94,90,16,(STRPTR)"_Reset",&BigAttr,5,PLACETEXT_IN,NULL,NULL};

struct NewGadget NewmaxyGadget=
{225,70,152,14,(STRPTR)"Ymax:",&NormalAttr,4,
  PLACETEXT_ABOVE,NULL,NULL};

struct NewGadget NewmaxxGadget=
{225,36,152,14,(STRPTR)"Xmax:",&NormalAttr,2,
  PLACETEXT_ABOVE,NULL,NULL};

struct NewGadget NewminyGadget=
{25,70,152,14,(STRPTR)"Ymin:",&NormalAttr,3,
  PLACETEXT_ABOVE,NULL,NULL};

struct NewGadget NewminxGadget=
{25,36,152,14,(STRPTR)"_Xmin:",&NormalAttr,1,
  PLACETEXT_ABOVE,NULL,NULL};

/* end of changeintervall */




/* definitions for edit function  */

struct NewGadget NewF2Gadget=
{14,88,600,14,(STRPTR)"_2nd Differentiation:",&NormalAttr,3,
  PLACETEXT_ABOVE,NULL,NULL};

struct NewGadget NewF1Gadget=
{14,54,600,14,(STRPTR)"_1st Differentiation:",&NormalAttr,2,
  PLACETEXT_ABOVE,NULL,NULL};

struct NewGadget NewFGadget=
{14,20,600,14,(STRPTR)"_Function:",&NormalAttr,1,PLACETEXT_ABOVE,NULL,NULL};

struct NewWindow   ReqNewWindow=
 {
  5,50,
  630,140,
  0,1,
  IDCMP_REFRESHWINDOW|
  IDCMP_GADGETUP |
  IDCMP_VANILLAKEY,
  WFLG_ACTIVATE |
  WFLG_SIMPLE_REFRESH ,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  0,0,
  0,0,
  CUSTOMSCREEN
 };

/* end of definitions    edit function  */


/* border around prop gadget in list of functions  */

short FuncPropPairsB[]=
 {
  356,81,375,81,375,19,376,18,376,81
 };
struct Border FuncPropBorderB =
 {
  0,0,1,0,JAM1,5,
  FuncPropPairsB,NULL
 };

short FuncPropPairsW[]=
 {
   375,18,356,18,356,80,355,81,355,18
 };
struct Border FuncPropBorderW =
 {
  0,0,2,0,JAM1,5,
  FuncPropPairsW,&FuncPropBorderB
 };


/* Border around displayed active function */
short ActFuncPairsW[]=
 {
  18,113,375,113,375,103,376,102,376,113
 };
struct Border ActFuncBorderW =
 {
  0,0,2,0,JAM1,5,
  ActFuncPairsW,&FuncPropBorderW
 };

short ActFuncPairsB[]=
 {
  375,102,18,102,18,112,17,113,17,102
 };

struct Border ActFuncBorderB =
 {
  0,0,1,0,JAM1,5,
  ActFuncPairsB,&ActFuncBorderW
 };


/* Border around the funtionlist */
short ListPairsB[]=
 {
  18,101,352,101,352,19,353,18,353,101
 };

struct Border ListBorderB =
 {
  0,0,1,0,JAM1,5,
  ListPairsB,&ActFuncBorderB
 };

short ListPairsW[]=
 {
  352,18, 18,18, 18,100,17,101,17,18
 };
struct Border ListBorderW =
 {
  0,0,2,0,JAM1,5,
  ListPairsW,&ListBorderB
 };

/* Border around SCROLL UP DOWN gadgets  */
short  FuncUDPairs[]=
 {
  20,0,0,0,0,9,1,8,1,1
 };

short FuncUD2Pairs[]=
 {
  1,9,20,9,20,1,21,0,21,9
 };

struct Border FuncUD2Border=
 {
  -3,-1,1,0,JAM1,5,
   FuncUD2Pairs,NULL
 };

struct Border FuncUDBorder=
 {
  -3,-1,2,0,JAM1,5,
   FuncUDPairs,&FuncUD2Border
 };

struct Border FuncUD2SelBorder=
 {
  -3,-1,2,0,JAM1,5,
   FuncUD2Pairs,NULL
 };

struct Border FuncUDSelBorder=
 {
  -3,-1,1,0,JAM1,5,
   FuncUDPairs,&FuncUD2SelBorder
 };

struct Gadget FuncDownGadget=
 {
  NULL,
  358,93,16,8,
  GADGHIMAGE, RELVERIFY | GADGIMMEDIATE , BOOLGADGET,
  (APTR)&FuncUDBorder,(APTR)&FuncUDSelBorder, NULL, NULL, NULL, 12, NULL
 };

struct Gadget FuncUpGadget=
 {
  &FuncDownGadget,
  358,83,16,8,
  GADGHIMAGE, RELVERIFY | GADGIMMEDIATE , BOOLGADGET,
  (APTR)&FuncUDBorder,(APTR)&FuncUDSelBorder, NULL, NULL, NULL, 11, NULL
 };


UWORD DownData[6] =
  { 0x1800,0x1800,0xFF00,0x7E00,0x3C00,0x1800 };

struct Image DownImage =
  {
    0,0,8,6,1,
    &DownData[0],0x1,0x0,NULL
  };

UWORD UpData[6] =
  { 0x1800,0x3C00,0x7E00,0xFF00,0x1800,0x1800, };

struct Image UpImage =
  {
    0,0,8,6,1,
    &UpData[0],0x1,0x0,NULL
  };

struct Image FuncPropImage;

struct PropInfo FuncProp =
{
   FREEVERT | AUTOKNOB| PROPBORDERLESS,
   0,0,
   771,0,
};

struct Gadget FuncPropGadget =
   {
   &FuncUpGadget,
   358,20,
   16,60,
   GADGHCOMP,
   RELVERIFY  |
   GADGIMMEDIATE |
   FOLLOWMOUSE ,
   PROPGADGET,
   (APTR)&FuncPropImage,
   NULL,
   NULL,
   NULL,
   (APTR)&FuncProp,
   10,
   NULL
   };


struct Gadget Num8Gadget=
 {
  &FuncPropGadget,
  20,90,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 28, NULL
 };

struct Gadget Num7Gadget=
 {
  &Num8Gadget,
  20,80,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 27, NULL
 };

struct Gadget Num6Gadget=
 {
  &Num7Gadget,
  20,70,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 26, NULL
 };

struct Gadget Num5Gadget=
 {
  &Num6Gadget,
  20,60,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 25, NULL
 };

struct Gadget Num4Gadget=
 {
  &Num5Gadget,
  20,50,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 24, NULL
 };

struct Gadget Num3Gadget=
 {
  &Num4Gadget,
  20,40,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 23, NULL
 };

struct Gadget Num2Gadget=
 {
  &Num3Gadget,
  20,30,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 22, NULL
 };

struct Gadget Num1Gadget=
 {
  &Num2Gadget,
  20,20,330,10,
  GADGHCOMP, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 21, NULL
 };


/* coordinates for Border around "normal" gadgets in functionlist  */
short  FuncOKPairs[]=
 {
  1,1,1,13,0,14,0,0,83,0
 };

short FuncOK2Pairs[]=
 {
  1,14,84,14,84,0,83,1,83,13
 };

/* Border around gadgets in funclist -> non selected  */

struct Border FuncOK2Border=
 {
  -3,-2,1,0,JAM1,5,
   FuncOK2Pairs,NULL
 };

struct Border FuncOKBorder=
 {
  -3,-2,2,0,JAM1,5,
   FuncOKPairs,&FuncOK2Border
 };

/* Border around gadgets in funclist -> selected */

struct Border FuncOK2SelBorder=
 {
  -3,-2,2,0,JAM1,5,
   FuncOK2Pairs,NULL
 };

struct Border FuncOKSelBorder=
 {
  -3,-2,1,0,JAM1,5,
   FuncOKPairs,&FuncOK2SelBorder
 };

/* Differentation gadget */
struct IntuiText FuncDiffText=
 {
  1,0,JAM2,
  15,2,&BigAttr,(UBYTE *)"Diff.",NULL
 };


struct Gadget FuncDiffGadget=
 {
  &Num1Gadget,
  295,125,80,11,
  GADGHIMAGE|GADGDISABLED,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncDiffText,
  NULL,NULL,9,NULL
 };


/* Pattern gadget  */
struct IntuiText FuncPatternText=
 {
  1,0,JAM2,
  5,2,&BigAttr,(UBYTE *)"Pattern",NULL
 };
struct Gadget FuncPatternGadget=
 {
  &FuncDiffGadget,
  295,145,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncPatternText,
  NULL,NULL,8,NULL
 };


/* Print list of function gadget */
struct IntuiText FuncPrintText=
 {
  1,0,JAM2,
  15,2,&BigAttr,(UBYTE *)"Print",NULL
 };

struct Gadget FuncPrintGadget=
 {
  &FuncPatternGadget,
  25,125,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncPrintText,
  NULL,NULL,7,NULL
 };


/* OK gadget in list of function request */
struct IntuiText FuncOKText=
 {
  1,0,JAM2,
  30,2,&BigAttr,(UBYTE *)"OK",NULL
 };
struct Gadget FuncOKGadget=
 {
  &FuncPrintGadget,
  295,165,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncOKText,
  NULL,NULL,6,NULL
 };


/* save list of function gadget */
struct IntuiText FuncSaveText=
 {
  1,0,JAM2,
  20,2,&BigAttr,(UBYTE *)"Save",NULL
 };
struct Gadget FuncSaveGadget=
 {
  &FuncOKGadget,
  25,165,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncSaveText,
  NULL,NULL,5,NULL
 };


/* load new list of functions gadget */
struct IntuiText FuncLoadText=
 {
  1,0,JAM2,
  20,2,&BigAttr,(UBYTE *)"Load",NULL
 };
struct Gadget FuncLoadGadget=
 {
  &FuncSaveGadget,
  25,145,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&FuncLoadText,
  NULL,NULL,4,NULL
 };


/* New gadget adds a new function to the list */
struct IntuiText NewText=
 {
  1,0,JAM2,
  25,2,&BigAttr,(UBYTE *)"New",NULL
 };
struct Gadget NewGadget=
 {
  &FuncLoadGadget,
  160,125,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&NewText,
  NULL,NULL,3,NULL
 };


/* Edit gadget, to edit the selected function */
struct IntuiText EditText=
 {
  1,0,JAM2,
  20,2,&BigAttr,(UBYTE *)"Edit",NULL
 };

struct Gadget Edit2Gadget=
 {
  &NewGadget,
  19,103,355,10,
  GADGHNONE, RELVERIFY , BOOLGADGET,
  NULL, NULL, NULL, NULL, NULL, 13, NULL
 };

struct Gadget EditGadget=
 {
  &Edit2Gadget,
  160,145,80,11,
  GADGHIMAGE,RELVERIFY,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&EditText,
  NULL,NULL,2,NULL
 };


/* Main text of the request  */
struct IntuiText FuncListText=
{
 1,0,JAM2,
 -140,-160,&BigAttr,(UBYTE *)"List of functions",NULL
};


/* delete gadget used to delete the actual function */
struct IntuiText DeleteText=
 {
  1,0,JAM2,
  10,2,&BigAttr,(UBYTE *)"Delete",&FuncListText
 };
struct Gadget DeleteGadget=
 {
  &EditGadget,
  160,165,80,11,
  GADGHIMAGE,RELVERIFY ,BOOLGADGET,
  (APTR)&FuncOKBorder,(APTR)&FuncOKSelBorder,&DeleteText,
  NULL,NULL,1,NULL
 };


struct NewWindow   FuncReqNewWindow=
 {
  0,11,400,185,0,1,
  GADGETUP | GADGETDOWN    | INTUITICKS    | MOUSEMOVE ,
  ACTIVATE | SMART_REFRESH | NOCAREREFRESH ,
  &DeleteGadget,
  NULL,NULL,NULL,NULL,
  0,0,0,0,
  CUSTOMSCREEN
 };

/* Definitions for Pattern-Request Window  04.08.1992 and 05.08.1992 */

struct IntuiText PatternBoxText=
 {
  1,0,JAM2,
  70,12,&BigAttr,(UBYTE *)"Change line style pattern!",&FuncListText
 };

struct NewGadget NewPatternGadget=
{ 355,45,22,11,NULL,&NormalAttr,10,NULL,NULL};

/* end of definitions for Pattern-Request Window */


UWORD mousedata[36] =
       {
          0,0,
          0x0400,0x07C0,
          0x0000,0x07C0,
          0x0100,0x0380,
          0x0000,0x07E0,
          0x07C0,0x1FF8,
          0x1FF0,0x3FEC,
          0x3FF8,0x7FDE,
          0x3FF8,0x7FBE,
          0x7FFC,0xFF7F,
          0x7EFC,0xFFFF,
          0x7FFC,0xFFFF,
          0x3FF8,0x7FFE,
          0x3FF8,0x7FFE,
          0x1FF0,0x3FFC,
          0x07C0,0x1FF8,
          0x0000,0x07E0,
          0,0
       };


struct IntuiText IntegralWin1Text=
 {
  1,0,JAM2,
  20,10,&BigAttr,(UBYTE *)"Numerical Integral via Simpson, from",NULL
 };

struct IntuiText IntegralWin3Text=
 {
  6,0,JAM2,
  10,32,&NormalAttr,NULL,&IntegralWin1Text
 };

struct IntuiText IntegralWin4Text=
 {
  1,0,JAM2,
  110,54,&BigAttr,(UBYTE *)"reports an area of",&IntegralWin3Text
 };

struct IntuiText IntegralWin5Text=
 {
  6,0,JAM2,
  10,75,&BigAttr,NULL,&IntegralWin4Text
 };



/* changescreenmode definitions  03.08.1992*/

struct Window *screenmodewin;

struct NewWindow ScrModeNewWindow=
  {
   0,11,
   620,160,
   0,1,
   IDCMP_ACTIVEWINDOW |
   IDCMP_REFRESHWINDOW|
   IDCMP_GADGETDOWN |
   IDCMP_GADGETUP,
   WFLG_ACTIVATE |
   WFLG_SIMPLE_REFRESH|
   WFLG_DRAGBAR ,
   NULL,
   NULL,
   (UBYTE *)"ScreenMode Prefs",
   NULL,
   NULL,
   0,0,
   0,0,
   CUSTOMSCREEN
  };

struct Gadget *nullgadget;

struct NewGadget modeuse=
  { 12,140,60,14,(STRPTR)"Use",&NormalAttr,1,PLACETEXT_IN,NULL,NULL};

struct NewGadget modecancel=
  { 548,140,60,14,(STRPTR)"Cancel",&NormalAttr,2,PLACETEXT_IN,NULL,NULL};

struct NewGadget defwidth=
  { 155,97,60,10,(STRPTR)"Default",&NormalAttr,3,PLACETEXT_RIGHT,NULL,NULL};

struct NewGadget defheight=
  { 155,117,60,10,(STRPTR)"Default",&NormalAttr,4,PLACETEXT_RIGHT,NULL,NULL};

struct NewGadget scrwidthgadget=
  { 80,95,60,14,(STRPTR)"Width:",&NormalAttr,5,PLACETEXT_LEFT,NULL,NULL};

struct NewGadget scrheightgadget=
  { 80,115,60,14,(STRPTR)"Height:",&NormalAttr,6,PLACETEXT_LEFT,NULL,NULL};

struct NewGadget modelistview=
  { 12,30,288,60,(STRPTR)"Display Mode",&NormalAttr,7,PLACETEXT_ABOVE,NULL,NULL};


char   monitordescript[4][32];
struct List monitorlist;
struct Node l1mode={NULL,NULL,0,0,&monitordescript[0][0]};
struct Node l2mode={NULL,NULL,0,0,&monitordescript[1][0]};
struct Node l3mode={NULL,NULL,0,0,&monitordescript[2][0]};
struct Node l4mode={NULL,NULL,0,0,&monitordescript[3][0]};

struct NameInfo      namebuffer;
struct DimensionInfo dimensionbuffer;
USHORT defscr;  /* default for screenheight and width BIT 0 -> default width */
                /* BIT 1 -> default screenheight                             */

char monitorvissize[18];
char monitorminsize[18];
char monitormaxsize[18];
char colorstring[10];

struct IntuiText colortxt2=
{
 1,0,JAM2,
 150,35,&NormalAttr,(UBYTE *)colorstring,
 NULL
};

struct IntuiText maxsizetxt2=
{
 1,0,JAM2,
 150,25,&NormalAttr,(UBYTE *)monitormaxsize,
 &colortxt2
};

struct IntuiText minsizetxt2=
{
 1,0,JAM2,
 150,15,&NormalAttr,(UBYTE *)monitorminsize,
 &maxsizetxt2
};

struct IntuiText vissizetxt2=
{
 1,0,JAM2,
 150,5,&NormalAttr,(UBYTE *)monitorvissize,
 &minsizetxt2
};

struct IntuiText colortxt=
{
 1,0,JAM2,
 6,35,&NormalAttr,(UBYTE *)"Maximum Colors:",
 &vissizetxt2
};

struct IntuiText maxsizetxt=
{
 1,0,JAM2,
 6,25,&NormalAttr,(UBYTE *)"Maximum Size  :",
 &colortxt
};

struct IntuiText minsizetxt=
{
 1,0,JAM2,
 6,15,&NormalAttr,(UBYTE *)"Minimum Size  :",
 &maxsizetxt
};

struct IntuiText vissizetxt=
{
 1,0,JAM2,
 6,5,&NormalAttr,(UBYTE *)"Visible Size  :",
 &minsizetxt
};

struct IntuiText modeproptxt=
{
 1,0,JAM2,
 93,-12,&NormalAttr,(UBYTE *)"Mode Properties",
 &vissizetxt
};

/* end of changescreenmode definitions  */
