/**************************************************************************/
/* Fraktal.menu                                                  03.01.88 */
/* Version 2.0                                                            */
/*                                                                        */
/* Include-File fuer das Programm Fraktal.c                               */
/*                                                                        */
/* Dieses  File  enthaelt  alle  notwendigen Menue-,  Gadget- und Window- */
/* Strukturen. Im Programm Fractal.c wird es durch '#include< .inc>' ein- */
/* gebunden. Es ist natuerlich auch moeglich diese Definitionen im Haupt- */
/* programm  vorzunehmen. Die Trennung in zwei Files ist aber in Hinblick */
/* auf Modularitaet und Uebersicht sicher sinnvoll.                       */
/**************************************************************************/


/* Definitionen zum Ein- und Ausschalten der Menues */
#define ON ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|CHECKED
#define OFF ITEMTEXT|ITEMENABLED|HIGHCOMP
#define LORES Res1.Flags
#define MEDRES Res2.Flags
#define HILORES Res3.Flags
#define HIMEDRES Res4.Flags
#define F1 Funk1.Flags
#define F2 Funk2.Flags
#define F3 Funk3.Flags
#define F4 Funk4.Flags
#define F5 Funk5.Flags
#define F6 Funk6.Flags
#define F7 Funk7.Flags
#define F8 Funk8.Flags
#define F9 Funk9.Flags
#define F10 Funk10.Flags
#define F11 Funk11.Flags
#define F12 Funk12.Flags
#define DREIDN DDN.Flags
#define DREIDI DDI.Flags
#define BRITE Brite.Flags
#define BW Bw.Flags
#define PAGE Page.Flags
#define ANZFUNK 12      /* Wieviele Funktionen sind moeglich */
#define WIDTH MyNewScreen.Width=NewWorkWindow.Width
#define HEIGHT MyNewScreen.Height=NewWorkWindow.Height
#define DEPTH MyNewScreen.Depth
#define TOPEDGE MyNewScreen.TopEdge
#define FLAGS MyNewScreen.ViewModes
#define MYFIRSTMENU ProjMenu
#define WORKMENU WorkMenu


/* Text-Gadget */
UBYTE F[80]="Newton-pic";
UBYTE File[80]="Newton-pic";
UBYTE Fileh[80]="Newton-pic.info";
struct StringInfo MyGInfo={&F,0,0,80,0,0,0,0,0,0,0,0,0};
USHORT MyVec[]={0,0,579,0,579,9,0,9,0,0};
struct Border MyBorder={-2,-1,3,0,JAM1,5,MyVec,0};
struct Gadget Text_Gad=
 {0,31,12,576,8,GADGHCOMP,RELVERIFY,STRGADGET,&MyBorder,0,0,0,&MyGInfo,4,0};


/* Extra-Menu */
struct IntuiText DDIText={3,1,COMPLEMENT,20,1,0," invertiert",0};
struct MenuItem DDI=
 {0,72,9,120,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&DDIText,0,0,0,0xFFFF};
struct IntuiText DDNText={3,1,COMPLEMENT,20,1,0," normal",0};
struct MenuItem DDN=
 {&DDI,72,-2,120,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&DDNText,0,0,0,0xFFFF};
struct IntuiText DDText={3,1,COMPLEMENT,20,1,0," 3-D",0};
struct MenuItem DD=
 {0,0,11,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&DDText,0,0,&DDN,0xFFFF};
struct IntuiText BriteText={3,1,COMPLEMENT,20,1,0,"Brite",0};
struct MenuItem Brite=
 {&DD,0,0,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&BriteText,0,0,0,0xFFFF};
struct Menu ExMenu={0,240,0,75,0,MENUENABLED,"Extra",&Brite};


/* Funktions-Menu */
struct IntuiText FunkText12={3,1,COMPLEMENT,20,1,0,"  Erw.",0};
struct MenuItem Funk12=
 {0,0,121,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText12,0,0,0,0xFFFF};
struct IntuiText FunkText11={3,1,COMPLEMENT,20,1,0,"J z^5-c",0};
struct MenuItem Funk11=
 {&Funk12,0,110,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText11,0,0,0,0xFFFF};
struct IntuiText FunkText10={3,1,COMPLEMENT,20,1,0,"J z^4-c",0};
struct MenuItem Funk10=
 {&Funk11,0,99,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText10,0,0,0,0xFFFF};
struct IntuiText FunkText9={3,1,COMPLEMENT,20,1,0,"J z^3-c",0};
struct MenuItem Funk9=
 {&Funk10,0,88,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText9,0,0,0,0xFFFF};
struct IntuiText FunkText8={3,1,COMPLEMENT,20,1,0,"Julia",0};
struct MenuItem Funk8=
 {&Funk9,0,77,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText8,0,0,0,0xFFFF};
struct IntuiText FunkText7={3,1,COMPLEMENT,20,1,0,"z^5-c=z",0};
struct MenuItem Funk7=
 {&Funk8,0,66,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText7,0,0,0,0xFFFF};
struct IntuiText FunkText6={3,1,COMPLEMENT,20,1,0,"z^4-c=z",0};
struct MenuItem Funk6=
 {&Funk7,0,55,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText6,0,0,0,0xFFFF};
struct IntuiText FunkText5={3,1,COMPLEMENT,20,1,0,"z^3-c=z",0};
struct MenuItem Funk5=
 {&Funk6,0,44,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText5,0,0,0,0xFFFF};
struct IntuiText FunkText4={3,1,COMPLEMENT,20,1,0,"z^2-c=z",0};
struct MenuItem Funk4=
 {&Funk5,0,33,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText4,0,0,0,0xFFFF};
struct IntuiText FunkText3={3,1,COMPLEMENT,20,1,0,"z^5-1=0",0};
struct MenuItem Funk3=
 {&Funk4,0,22,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText3,0,0,0,0xFFFF};
struct IntuiText FunkText2={3,1,COMPLEMENT,20,1,0,"z^4-1=0",0};
struct MenuItem Funk2=
 {&Funk3,0,11,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&FunkText2,0,0,0,0xFFFF};
struct IntuiText FunkText1={3,1,COMPLEMENT,20,1,0,"z^3-1=0",0};
struct MenuItem Funk1=
 {&Funk2,0,0,76,10,CHECKIT+ITEMTEXT+ITEMENABLED+HIGHCOMP+CHECKED,
  0,&FunkText1,0,0,0,0xFFFF};
struct Menu FunkMenu={&ExMenu,153,0,84,0,MENUENABLED,"Funktion",&Funk1};

/* Res.-Menu */
struct IntuiText ResText4={3,1,COMPLEMENT,20,1,0,"640x500",0};
struct MenuItem Res4=
 {0,0,33,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&ResText4,0,0,0,0xFFFF};
struct IntuiText ResText3={3,1,COMPLEMENT,20,1,0,"320x500",0};
struct MenuItem Res3=
 {&Res4,0,22,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&ResText3,0,0,0,0xFFFF};
struct IntuiText ResText2={3,1,COMPLEMENT,20,1,0,"640x250",0};
struct MenuItem Res2=
 {&Res3,0,11,76,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&ResText2,0,0,0,0xFFFF};
struct IntuiText ResText1={3,1,COMPLEMENT,20,1,0,"320x250",0};
struct MenuItem Res1=
 {&Res2,0,0,76,10,CHECKIT+ITEMTEXT+ITEMENABLED+HIGHCOMP+CHECKED,
  0,&ResText1,0,0,0,0xFFFF};
struct Menu ResMenu={&FunkMenu,81,0,66,0,MENUENABLED,"Format",&Res1};

/* Projekt-Menu */
struct IntuiText EndeText={3,1,COMPLEMENT,1,1,0,"Ende",0};
struct MenuItem Ende=
 {0,0,33,113,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&EndeText,0,0,0,0xFFFF};
struct IntuiText InputText={3,1,COMPLEMENT,1,1,0,"Input",0};
struct MenuItem Inp=
 {&Ende,0,22,113,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&InputText,0,0,0,0xFFFF};
struct IntuiText StartText={3,1,COMPLEMENT,1,1,0,"Start",0};
struct MenuItem Start=
 {&Inp,0,11,113,10,ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
  0,&StartText,0,'R',0,0xFFFF};
struct IntuiText LadenText={3,1,COMPLEMENT,1,1,0,"Laden",0};
struct MenuItem Laden=
 {&Start,0,0,113,10,ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
  0,&LadenText,0,'L',0,0xFFFF};
struct Menu ProjMenu={&ResMenu,0,0,75,0,MENUENABLED,"Projekt",&Laden};

/* Definition der Menues fuer das WorkWindow */
struct IntuiText ViewText={3,1,COMPLEMENT,1,1,0,"  View",0};
struct MenuItem View=
 {0,0,33,90,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&ViewText,0,0,0,0xFFFF};
struct IntuiText GridText={3,1,COMPLEMENT,1,1,0,"  Grid",0};
struct MenuItem Grid=
 {&View,0,22,90,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&GridText,0,0,0,0xFFFF};
struct IntuiText BwText={3,1,COMPLEMENT,1,1,0,"  B&W",0};
struct MenuItem Bw=
 {&Grid,0,11,90,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&BwText,0,0,0,0xFFFF};
struct IntuiText PageText={3,1,COMPLEMENT,1,1,0,"  Seite?",0};
struct MenuItem Page=
 {&Bw,0,0,90,10,ITEMTEXT+ITEMENABLED+HIGHCOMP,0,&PageText,0,0,0,0xFFFF};
struct Menu ExtraMenu={0,81,0,75,0,MENUENABLED,"Extra",&Page};
struct IntuiText CancelText={3,1,COMPLEMENT,1,1,0,"Cancel",0};
struct MenuItem Cancel=
 {0,0,11,113,10,ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
  0,&CancelText,0,'C',0,0xFFFF};
struct IntuiText SpeichernText={3,1,COMPLEMENT,1,1,0,"Speichern",0};
struct MenuItem Speichern=
 {&Cancel,0,0,113,10,ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
  0,&SpeichernText,0,'S',0,0xFFFF};
struct Menu WorkMenu={&ExtraMenu,0,0,75,0,MENUENABLED,"Projekt",&Speichern};


/* Window-Definition */
/* WORKBENCH Window */
struct NewWindow MyNewWindow=
 {0,0,640,23,0,1,CLOSEWINDOW+MENUPICK+GADGETUP+GADGETDOWN,
  WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,&Text_Gad,0,
  "Komplexe Dynamische Systeme",0,0,5,5,640,200,WBENCHSCREEN};
/* Arbeits-Window */
struct NewWindow NewWorkWindow=
 {0,0,0,0,15,31,MOUSEBUTTONS+MENUPICK+MENUVERIFY,GIMMEZEROZERO+BORDERLESS+
  ACTIVATE+NOCAREREFRESH,0,0,0,0,0,0,0,0,0,CUSTOMSCREEN};

/* weitere wichtige Struktur-Definitionen */
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Window *MyWindow;
struct Window *WorkWindow;
struct IntuiMessage *MyMessage;
struct IntuiMessage *WorkMessage;
struct Screen *MyScreen;
struct NewScreen MyNewScreen={0,25,0,0,0,0,1,0,CUSTOMSCREEN,0,0,0,0};
struct RastPort *rp;

/* Definition des Info-Chunks */
struct INFOC          /* Info-Datei                               */
{
 float rmin;          /* xmin,xmax,ymin,ymax                      */
 float rmax;          /* rel. Koordinaten des Bildes              */
 float imin;
 float imax;
 float cre;           /* cre, cim fuer Julia-Mengen               */
 float cim;
 short mx;            /* mx,my augenblickliche Koordinaten        */
 short my;
 int   nmax;          /* Bild-Parameter                           */
 int   noff;
 float emin,emax;
 char  mode;          /* Berechnungsmodus?                        */
 char  res;           /* Aufloesung des Bildes                    */
 char  dim;           /* 3D Bild?                                 */
 char  half_brite;    /* HALF_BRITE Modus?                        */
 char  text[256];
} MyInfo;

