/************************************************************************ * Version 3.00 MANDELBROT - Self-Squared Dragon Generator 29-May-86 * * Commodore Amiga Global Data Definitions MAND6.C * ************************************************************************* * 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. * ************************************************************************/ #include "mand.h" int MathBase, MathTransBase, max_x, max_y, max_mem_y, max_mem, max_count, color_inc, color_offset, color_set, color_mode, color_div, color_inset, func_num, v_starty, modified, want_read, threed_stat, title_displayed; BOOL SettingCenter, SettingBoxSize, SetBoxProportional; struct GfxBase *GfxBase = NULL; struct IntuitionBase *IntuitionBase = NULL; struct IconBase *IconBase = NULL; USHORT UserPalette[32], ZoomCenterX, ZoomCenterY, ZoomBoxSizeX, ZoomBoxSizeY, ZoomBoxStartX, ZoomBoxStartY; long v_offset; UWORD *color_table = NULL, *v_mand_store = NULL; FILE *console = NULL, *v_fp = NULL, *redir_fp = NULL; #ifdef DOUBLEPREC double start_r, end_r, start_i, end_i; #else union kludge { float f; int i; } start_r, end_r, start_i, end_i; #endif struct Window *w, *w2, ColorWindow; struct Screen *screen; struct IntuiMessage *message; struct RastPort *rp, *rp2; struct ViewPort *vp; struct TextAttr TextFont = { "topaz.font", /* Standard system font */ 8, 0, 0 }; struct NewScreen ns = { 0, 0, /* start position */ 320, 200, 6, /* width, height, depth */ 0, 1, /* detail pen, block pen */ HAM, /* Hold and Modify ViewMode */ CUSTOMSCREEN, /* screen type */ &TextFont, /* font to use */ "", /* default title for screen */ NULL /* pointer to additional gadgets */ }; struct NewWindow nw = { 0, 0, /* start position */ 320, 200, /* width, height */ -1, -1, /* detail pen, block pen */ MOUSEBUTTONS | MENUPICK | INTUITICKS, /* IDCMP flags */ ACTIVATE | BORDERLESS | BACKDROP, /* window flags */ NULL, /* pointer to first user gadget */ NULL, /* pointer to user checkmark */ NULL, /* window title */ NULL, /* pointer to screen (set below) */ NULL, /* pointer to superbitmap */ 0, 0, 320, 200, /* ignored since not sizeable */ CUSTOMSCREEN /* type of screen desired */ }; struct NewWindow aw = { 0, 10, 100, 70, -1, -1, CLOSEWINDOW|NEWSIZE, WINDOWDRAG|WINDOWSIZING|SMART_REFRESH|WINDOWCLOSE, NULL, NULL, "Analysis", NULL, NULL, 0, 0, 320, 200, CUSTOMSCREEN }; struct NewWindow ColorNewWindow = { /* SHORT LeftEdge, TopEdge; screen dimensions of window */ /* SHORT Width, Height; screen dimensions of window */ DEFAULT_WINDOW_LEFT, DEFAULT_WINDOW_TOP, COLORWINDOW_WIDTH, COLORWINDOW_HEIGHT, /* UBYTE DetailPen, BlockPen; for bar/border/gadget rendering */ -1, -1, /* ULONG IDCMPFlags; User-selected IDCMP flags */ NULL, /* ULONG Flags; see Window struct for defines */ BORDERLESS | SMART_REFRESH | NOCAREREFRESH, /* struct Gadget *FirstGadget;*/ NULL, /* struct Image *CheckMark;*/ NULL, /* UBYTE *Title; the title text for this window */ NULL, /* struct Screen *Screen;*/ NULL, /* struct BitMap *BitMap;*/ NULL, /* SHORT MinWidth, MinHeight; minimums */ 0, 0, /* SHORT MaxWidth, MaxHeight; maximums */ 0, 0, /* USHORT Type;*/ CUSTOMSCREEN, }; USHORT RGBData[] = { 0xFC00, 0x6600, 0x6600, 0x7C00, 0x6C00, 0x6600, 0xE300, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C00, 0x6600, 0xC000, 0xCE00, 0xC600, 0x6600, 0x3E00, 0x0000, 0x0000, 0x0000, 0x0000, 0xFC00, 0x6600, 0x6600, 0x7C00, 0x6600, 0x6600, 0xFC00, }; struct Image ColorRGBImage = { 3, 1, 8, 29, 1, &RGBData[0], 0x1, 0x0, NULL, }; SHORT ClusterBorderVectors[] = { -1, -1, -1, COLOR_CLUSTER_HEIGHT, COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT, COLOR_CLUSTER_WIDTH, -1, -1, -1, }; struct Border ColorClusterBorder = { 0, 0, 1, 0, JAM1, 5, &ClusterBorderVectors[0], NULL, }; struct IntuiText ColorClusterText[4] = { /* "COPY" */ { 1, 0, JAM2, 2 + CHARACTER_WIDTH, 1, &TextFont, "COPY", NULL, }, /* "RANGE" */ { 1, 0, JAM2, 2 + (CHARACTER_WIDTH >> 1), 1, &TextFont, "RANGE", NULL, }, /* "OK" */ { 1, 0, JAM2, 2 + (CHARACTER_WIDTH << 1), 1, &TextFont, "OK", NULL, }, /* "CANCEL" */ { 1, 0, JAM2, 2, 1, &TextFont, "CANCEL", NULL, }, }; /* ======================================================================== */ /* ======================================================================== */ /* ======================================================================== */ /* RJM anchor */ struct Image ColorPropsImages[3]; struct Image SuperColorImages[32]; struct PropInfo ColorPropsInfos[3] = { { /* COLOR_GREEN */ AUTOKNOB | FREEHORIZ, 0, 0, COLOR_KNOB_BODY, 0, 0, 0, 0, 0, 0, 0, }, { /* COLOR_RED */ AUTOKNOB | FREEHORIZ, 0, 0, COLOR_KNOB_BODY, 0, 0, 0, 0, 0, 0, 0, }, { /* COLOR_BLUE */ AUTOKNOB | FREEHORIZ, 0, 0, COLOR_KNOB_BODY, 0, 0, 0, 0, 0, 0, 0, }, }; struct Gadget ColorTemplateGadgets[COLOR_GADGETS_COUNT] = { { /* COLOR_0 */ NULL, COLOR_BOX_LEFT + ((0 & 0x7) * 15), COLOR_COLOR_TOP + ((0 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[0], NULL, NULL, NULL, NULL, 0, NULL, }, { /* COLOR_1 */ &ColorTemplateGadgets[0], COLOR_BOX_LEFT + ((1 & 0x7) * 15), COLOR_COLOR_TOP + ((1 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[1], NULL, NULL, NULL, NULL, 1, NULL, }, { /* COLOR_2 */ &ColorTemplateGadgets[1], COLOR_BOX_LEFT + ((2 & 0x7) * 15), COLOR_COLOR_TOP + ((2 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[2], NULL, NULL, NULL, NULL, 2, NULL, }, { /* COLOR_3 */ &ColorTemplateGadgets[2], COLOR_BOX_LEFT + ((3 & 0x7) * 15), COLOR_COLOR_TOP + ((3 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[3], NULL, NULL, NULL, NULL, 3, NULL, }, { /* COLOR_4 */ &ColorTemplateGadgets[3], COLOR_BOX_LEFT + ((4 & 0x7) * 15), COLOR_COLOR_TOP + ((4 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[4], NULL, NULL, NULL, NULL, 4, NULL, }, { /* COLOR_5 */ &ColorTemplateGadgets[4], COLOR_BOX_LEFT + ((5 & 0x7) * 15), COLOR_COLOR_TOP + ((5 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[5], NULL, NULL, NULL, NULL, 5, NULL, }, { /* COLOR_6 */ &ColorTemplateGadgets[5], COLOR_BOX_LEFT + ((6 & 0x7) * 15), COLOR_COLOR_TOP + ((6 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[6], NULL, NULL, NULL, NULL, 6, NULL, }, { /* COLOR_7 */ &ColorTemplateGadgets[6], COLOR_BOX_LEFT + ((7 & 0x7) * 15), COLOR_COLOR_TOP + ((7 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[7], NULL, NULL, NULL, NULL, 7, NULL, }, { /* COLOR_8 */ &ColorTemplateGadgets[7], COLOR_BOX_LEFT + ((8 & 0x7) * 15), COLOR_COLOR_TOP + ((8 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[8], NULL, NULL, NULL, NULL, 8, NULL, }, { /* COLOR_9 */ &ColorTemplateGadgets[8], COLOR_BOX_LEFT + ((9 & 0x7) * 15), COLOR_COLOR_TOP + ((9 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[9], NULL, NULL, NULL, NULL, 9, NULL, }, { /* COLOR_10 */ &ColorTemplateGadgets[9], COLOR_BOX_LEFT + ((10 & 0x7) * 15), COLOR_COLOR_TOP + ((10 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[10], NULL, NULL, NULL, NULL, 10, NULL, }, { /* COLOR_11 */ &ColorTemplateGadgets[10], COLOR_BOX_LEFT + ((11 & 0x7) * 15), COLOR_COLOR_TOP + ((11 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[11], NULL, NULL, NULL, NULL, 11, NULL, }, { /* COLOR_12 */ &ColorTemplateGadgets[11], COLOR_BOX_LEFT + ((12 & 0x7) * 15), COLOR_COLOR_TOP + ((12 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[12], NULL, NULL, NULL, NULL, 12, NULL, }, { /* COLOR_13 */ &ColorTemplateGadgets[12], COLOR_BOX_LEFT + ((13 & 0x7) * 15), COLOR_COLOR_TOP + ((13 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[13], NULL, NULL, NULL, NULL, 13, NULL, }, { /* COLOR_14 */ &ColorTemplateGadgets[13], COLOR_BOX_LEFT + ((14 & 0x7) * 15), COLOR_COLOR_TOP + ((14 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[14], NULL, NULL, NULL, NULL, 14, NULL, }, { /* COLOR_15 */ &ColorTemplateGadgets[14], COLOR_BOX_LEFT + ((15 & 0x7) * 15), COLOR_COLOR_TOP + ((15 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[15], NULL, NULL, NULL, NULL, 15, NULL, }, { /* COLOR_16 */ &ColorTemplateGadgets[15], COLOR_BOX_LEFT + ((16 & 0x7) * 15), COLOR_COLOR_TOP + ((16 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[16], NULL, NULL, NULL, NULL, 16, NULL, }, { /* COLOR_17 */ &ColorTemplateGadgets[16], COLOR_BOX_LEFT + ((17 & 0x7) * 15), COLOR_COLOR_TOP + ((17 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[17], NULL, NULL, NULL, NULL, 17, NULL, }, { /* COLOR_18 */ &ColorTemplateGadgets[17], COLOR_BOX_LEFT + ((18 & 0x7) * 15), COLOR_COLOR_TOP + ((18 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[18], NULL, NULL, NULL, NULL, 18, NULL, }, { /* COLOR_19 */ &ColorTemplateGadgets[18], COLOR_BOX_LEFT + ((19 & 0x7) * 15), COLOR_COLOR_TOP + ((19 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[19], NULL, NULL, NULL, NULL, 19, NULL, }, { /* COLOR_20 */ &ColorTemplateGadgets[19], COLOR_BOX_LEFT + ((20 & 0x7) * 15), COLOR_COLOR_TOP + ((20 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[20], NULL, NULL, NULL, NULL, 20, NULL, }, { /* COLOR_21 */ &ColorTemplateGadgets[20], COLOR_BOX_LEFT + ((21 & 0x7) * 15), COLOR_COLOR_TOP + ((21 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[21], NULL, NULL, NULL, NULL, 21, NULL, }, { /* COLOR_22 */ &ColorTemplateGadgets[21], COLOR_BOX_LEFT + ((22 & 0x7) * 15), COLOR_COLOR_TOP + ((22 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[22], NULL, NULL, NULL, NULL, 22, NULL, }, { /* COLOR_23 */ &ColorTemplateGadgets[22], COLOR_BOX_LEFT + ((23 & 0x7) * 15), COLOR_COLOR_TOP + ((23 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[23], NULL, NULL, NULL, NULL, 23, NULL, }, { /* COLOR_24 */ &ColorTemplateGadgets[23], COLOR_BOX_LEFT + ((24 & 0x7) * 15), COLOR_COLOR_TOP + ((24 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[24], NULL, NULL, NULL, NULL, 24, NULL, }, { /* COLOR_25 */ &ColorTemplateGadgets[24], COLOR_BOX_LEFT + ((25 & 0x7) * 15), COLOR_COLOR_TOP + ((25 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[25], NULL, NULL, NULL, NULL, 25, NULL, }, { /* COLOR_26 */ &ColorTemplateGadgets[25], COLOR_BOX_LEFT + ((26 & 0x7) * 15), COLOR_COLOR_TOP + ((26 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[26], NULL, NULL, NULL, NULL, 26, NULL, }, { /* COLOR_27 */ &ColorTemplateGadgets[26], COLOR_BOX_LEFT + ((27 & 0x7) * 15), COLOR_COLOR_TOP + ((27 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[27], NULL, NULL, NULL, NULL, 27, NULL, }, { /* COLOR_28 */ &ColorTemplateGadgets[27], COLOR_BOX_LEFT + ((28 & 0x7) * 15), COLOR_COLOR_TOP + ((28 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[28], NULL, NULL, NULL, NULL, 28, NULL, }, { /* COLOR_29 */ &ColorTemplateGadgets[28], COLOR_BOX_LEFT + ((29 & 0x7) * 15), COLOR_COLOR_TOP + ((29 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[29], NULL, NULL, NULL, NULL, 29, NULL, }, { /* COLOR_30 */ &ColorTemplateGadgets[29], COLOR_BOX_LEFT + ((30 & 0x7) * 15), COLOR_COLOR_TOP + ((30 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[30], NULL, NULL, NULL, NULL, 30, NULL, }, { /* COLOR_31 */ &ColorTemplateGadgets[30], COLOR_BOX_LEFT + ((31 & 0x7) * 15), COLOR_COLOR_TOP + ((31 >> 3) * 10), 15, 10, GADGIMAGE, GADGIMMEDIATE, BOOLGADGET, (APTR)&SuperColorImages[31], NULL, NULL, NULL, NULL, 31, NULL, }, { /* COLOR_COPY */ &ColorTemplateGadgets[31], COLOR_CLUSTER_LEFT, COLOR_CLUSTER_TOP + (0 * (COLOR_CLUSTER_HEIGHT + 3)), COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT, GADGHCOMP, RELVERIFY, BOOLGADGET, (APTR)&ColorClusterBorder, NULL, &ColorClusterText[0], NULL, NULL, COLOR_COPY, NULL, }, { /* COLOR_RANGE */ &ColorTemplateGadgets[COLOR_COPY], COLOR_CLUSTER_LEFT, COLOR_CLUSTER_TOP + (1 * (COLOR_CLUSTER_HEIGHT + 3)), COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT, GADGHCOMP, RELVERIFY, BOOLGADGET, (APTR)&ColorClusterBorder, NULL, &ColorClusterText[1], NULL, NULL, COLOR_RANGE, NULL, }, { /* COLOR_OK */ &ColorTemplateGadgets[COLOR_RANGE], COLOR_CLUSTER_LEFT, COLOR_CLUSTER_TOP + (2 * (COLOR_CLUSTER_HEIGHT + 3)), COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT, GADGHCOMP, RELVERIFY, BOOLGADGET, (APTR)&ColorClusterBorder, NULL, &ColorClusterText[2], NULL, NULL, COLOR_OK, NULL, }, { /* COLOR_CANCEL */ &ColorTemplateGadgets[COLOR_OK], COLOR_CLUSTER_LEFT, COLOR_CLUSTER_TOP + (3 * (COLOR_CLUSTER_HEIGHT + 3)), COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT, GADGHCOMP, RELVERIFY, BOOLGADGET, (APTR)&ColorClusterBorder, NULL, &ColorClusterText[3], NULL, NULL, COLOR_CANCEL, NULL, }, { /* COLOR_GREEN */ &ColorTemplateGadgets[COLOR_CANCEL], COLOR_PROP_LEFT, COLOR_PROP_TOP + (1 * (COLOR_PROP_HEIGHT + 1)), COLOR_PROP_WIDTH, COLOR_PROP_HEIGHT, GADGHCOMP | GADGIMAGE, FOLLOWMOUSE, PROPGADGET, (APTR)&ColorPropsImages[1], NULL, NULL, NULL, (APTR)&ColorPropsInfos[1], COLOR_GREEN, NULL, }, { /* COLOR_RED */ &ColorTemplateGadgets[COLOR_GREEN], COLOR_PROP_LEFT, COLOR_PROP_TOP + (0 * (COLOR_PROP_HEIGHT + 1)), COLOR_PROP_WIDTH, COLOR_PROP_HEIGHT, GADGHCOMP | GADGIMAGE, FOLLOWMOUSE, PROPGADGET, (APTR)&ColorPropsImages[0], NULL, NULL, NULL, (APTR)&ColorPropsInfos[0], COLOR_RED, NULL, }, { /* COLOR_BLUE */ &ColorTemplateGadgets[COLOR_RED], COLOR_PROP_LEFT, COLOR_PROP_TOP + (2 * (COLOR_PROP_HEIGHT + 1)), COLOR_PROP_WIDTH, COLOR_PROP_HEIGHT, GADGHCOMP | GADGIMAGE, FOLLOWMOUSE, PROPGADGET, (APTR)&ColorPropsImages[2], NULL, NULL, NULL, (APTR)&ColorPropsInfos[2], COLOR_BLUE, NULL, }, { /* COLOR_HSL_RGB */ &ColorTemplateGadgets[COLOR_BLUE], COLOR_HSL_LEFT, COLOR_HSL_TOP, CHARACTER_WIDTH + 5, COLOR_BOX_BOTTOM - COLOR_BOX_TOP + 1, GADGHIMAGE | GADGIMAGE | SELECTED, TOGGLESELECT, BOOLGADGET, (APTR)&ColorRGBImage, (APTR)&ColorRGBImage, NULL, NULL, NULL, COLOR_HSL_RGB, NULL, }, };