/************************************************************************ * Version 3.00 MANDELBROT - Self-Squared Dragon Generator 29-May-86 * * Commodore Amiga The Constants MAND.H * ************************************************************************* * Copyright (c) 1986, Robert S. French and R. J. Mical * * --------------------------------------------------------------------- * * This program has been placed in the public domain. A limited * * license is hereby granted for the unlimited use and distribution of * * this program, provided it is not used for commercial or profit- * * making purposes. Thank you. * ************************************************************************* * Author information: | Name: R. J. Mical * * | USnail: Commodore-Amiga, Inc. * * Name: Robert S. French | 983 University Avenue * * USnail: 2740 Frankfort Avenue | Los Gatos, CA 95030 * * Louisville, KY 40206 \-------------------------------------* * Phone: (502) 897-5096 UUCP: ihnp4!ptsfa!well!french * * ARPA: French#Robert%d@LLL-MFE or RFrench@MIT-MULTICS * ************************************************************************* * Please send any comments, suggestions, or bugs to one of the above * * addresses. * ************************************************************************/ /*-------------------*/ /* Lots of includes! */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* One of these MUST be defined! */ #define MANX /* #define LATTICE */ /* Define for double precision (slow!) */ /* #define DOUBLEPREC */ /*-------------------*/ /* Misc. definitions */ #define VERSION "3.00" #define MOD_DATE "May 29, 1986" #define TEMPNAME "Mandelbrot.temp.file" #define HELPNAME "Mandelbrot_help" #define EVER ;; #define MAXX 640 #define MAXY 400 #define MAXMY 100 #define STARTY 0 #define PROCESS_STACKSIZE 6000 #ifdef DOUBLEPREC #define FLOATSTRUCT double #define CNVFLT(x) (x) #define MAKEFP(x) (x) #define FP(x) (x) #define FIEEE(x) (double)(x) #define ADD(x,y) ((x)+(y)) #define SUB(x,y) ((y)-(x)) #define MUL(x,y) ((x)*(y)) #define DIV(x,y) ((y)/(x)) #define FLT(x) (double)(x) #define FIX(x) (int)(x) #define CNVSNG(x) (float)(x) #ifdef LATTICE #define PERCFLT "%16.14lf" #endif #ifdef MANX #define PERCFLT "%f" #endif #else #define FLOATSTRUCT union kludge #define CNVFLT(x) cnvf(x) #define MAKEFP(x) x.i #define FP(x) x.f #define FIEEE(x) SPFieee(x) #define ADD(x,y) SPAdd(x,y) #define SUB(x,y) SPSub(x,y) #define MUL(x,y) SPMul(x,y) #define DIV(x,y) SPDiv(x,y) #define FLT(x) SPFlt(x) #define FIX(x) SPFix(x) #define CNVSNG(x) (x) #define PERCFLT "%8.6f" /*---------------------------------*/ /* Fast-Floating-Point Definitions */ extern int SPFix(); extern int SPFlt(); extern int SPCmp(); extern int SPTst(); extern int SPAbs(); extern int SPNeg(); extern int SPAdd(); extern int SPSub(); extern int SPMul(); extern int SPDiv(); extern int SPAtan(); extern int SPSin(); extern int SPCos(); extern int SPTan(); extern int SPSincos(); extern int SPSinh(); extern int SPCosh(); extern int SPTanh(); extern int SPExp(); extern int SPLog(); extern int SPPow(); extern int SPSqrt(); extern int SPTieee(); extern int SPFieee(); #endif extern double atof(); #define TOPW2 w2->BorderTop #define BOTTOMW2 (w2->Height - w2->BorderBottom) #define LEFTW2 w2->BorderLeft #define RIGHTW2 (w2->Width - w2->BorderRight) /* === these definitions are for the color_mode variable ================== */ #define NOT_HOLDANDMODIFY 0x0001 #define INTERLACE_MODE 0x0002 #define HIRES_MODE 0x0004 /* === these definitions are for the menu strips ========================== */ #define ITEM_HEIGHT 10 #define MENU_PROJECT 0 /* first menu */ #define MENU_OPTIONS 1 /* next menu */ #define MENU_ZOOM 2 /* next menu */ #define MENU_COUNT 3 /* for the PROJECT Menu ... */ #define PROJECT_WIDTH 176 #define PROJECT_LEFT 0 #define PROJECT_SAVEPICTURE 0 #define PROJECT_TITLE 1 #define PROJECT_PRINT 2 #define PROJECT_COUNT 3 /* for the OPTIONS Menu ... */ #define OPTIONS_WIDTH 176 #define OPTIONS_LEFT (-24) #define OPTIONS_QUARTER 0 #define OPTIONS_FULL 1 #define OPTIONS_REDRAW 2 #define OPTIONS_3D 3 #define OPTIONS_3D_LEFT 130 #define OPTIONS_3D_WIDTH 100 #define OPTIONS_3D_NONE 0 #define OPTIONS_3D_2 1 #define OPTIONS_3D_5 2 #define OPTIONS_3D_10 3 #define OPTIONS_3D_15 4 #define OPTIONS_3D_COUNT 5 #define OPTIONS_GENERATE 4 #define OPTIONS_COLORS 5 #define OPTIONS_ANAL 6 #define OPTIONS_ANAL_LEFT 130 #define OPTIONS_ANAL_WIDTH 100 #define OPTIONS_ANAL_LINES 0 #define OPTIONS_ANAL_DOTS 1 #define OPTIONS_ANAL_COUNT 2 #define OPTIONS_STOP 7 #define OPTIONS_CLOSE 8 #define OPTIONS_COUNT 9 /* for the ZOOM Menu ... */ #define ZOOM_WIDTH 222 #define ZOOM_LEFT (-60) #define ZOOM_SETCENTER 0 #define ZOOM_SIZEBOX 1 #define ZOOM_SIZEPROP 2 #define ZOOM_ZOOMIN 3 #define ZOOM_ZOOMIN10 4 #define ZOOM_ZOOMOUT2 5 #define ZOOM_ZOOMOUT10 6 #define ZOOM_COUNT 7 #ifndef INTUITICKS #define INTUITICKS 0x00400000 #endif #define COLOR_KNOB_BODY 0x1111 #define COLORWINDOW_WIDTH 208 #define COLORWINDOW_HEIGHT 91 #define DEFAULT_WINDOW_LEFT (320 - COLORWINDOW_WIDTH) #define DEFAULT_WINDOW_TOP (200 - COLORWINDOW_HEIGHT) #define CHARACTER_WIDTH 8 #define CHARACTER_HEIGHT 8 #define COLOR_BOX_LEFT 7 #define COLOR_BOX_TOP 6 #define COLOR_BOX_RIGHT (COLOR_BOX_LEFT + 15) #define COLOR_BOX_BOTTOM (COLOR_BOX_TOP + 29) #define COLOR_COLOR_TOP 45 #define COLOR_PROP_LEFT 38 #define COLOR_PROP_TOP 4 #define COLOR_PROP_WIDTH 165 #define COLOR_PROP_HEIGHT 10 #define COLOR_CLUSTER_LEFT 141 #define COLOR_CLUSTER_TOP 41 #define COLOR_CLUSTER_WIDTH (CHARACTER_WIDTH * 6 + 4) #define COLOR_CLUSTER_HEIGHT 9 #define COLOR_HSL_TOP (COLOR_BOX_TOP - 2) #define COLOR_HSL_LEFT (COLOR_BOX_RIGHT + 3) /* GREEN and RED are out of order. Do you wonder why? Some day I'll * tell you. =RJ= */ #define COLOR_COPY 32 #define COLOR_RANGE 33 #define COLOR_OK 34 #define COLOR_CANCEL 35 #define COLOR_GREEN 36 #define COLOR_RED 37 #define COLOR_BLUE 38 #define COLOR_HSL_RGB 39 #define COLOR_GADGETS_COUNT 40