/*****************************************************************************
 *			MAND6.C - Color Window Data
 *		Mandelbrot Self-Squared Dragon Generator
 *			For the Commodore Amiga
 *			     Version 2.05
 *
 *		Copyright (C) 1986, =Robert J. Mical=
 *	   Further feached and even considerably optimized by
 *				>>SDB<<
 *		Copyright (C) 1986, Scott D. Ballantyne
 *		     Placed in the Public Domain
 *
 *	This program may be distributed free of charge as long as the above
 *	notice is retained.  You may extract any or all information contained
 *	in this file for use in your own programs
 *
 ****************************************************************************/

#include "mand.h"

/* === The Mandelbrot program definitions ================================= */

extern struct	GfxBase		*GfxBase;
extern struct	IntuitionBase	*IntuitionBase;
 
extern struct	RastPort	*rp;
extern struct	ViewPort	*vp;
 
extern struct	Window		*w, *ColorWindow;
extern struct	Screen		*screen;
extern struct	IntuiMessage	*message;
 
extern SHORT	last_color;
extern BOOL	SettingCenter, SettingBoxSize;
extern FLOAT	start_r, end_r, start_i, end_i;	/* Block bounds for set */
extern int	max_x, max_y;
extern int	max_count, color_inc, color_offset;
extern int	color_set, color_mode, color_div;
extern int	color_inset, func_num;
extern UWORD	*color_table;
extern FILE 	console, *redir_fp;
 
extern SHORT	ZoomCenterX, ZoomCenterY, ZoomBoxSizeX, ZoomBoxSizeY;
extern SHORT	ZoomBoxStartX, ZoomBoxStartY;

/*****************************************************************************
 *
 * Color window template initialization and routines, 
 * for colorwindow and cyclewindow
 *
 * Throughout this file, the COLOR_RED and COLOR_GREEN gadgets are in the
 * opposite order you would expect.  
 *
 ****************************************************************************/
struct TextAttr SafeFont = {
	(UBYTE *)"topaz.font",
	TOPAZ_EIGHTY,
	0,
	0,
};

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,
	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,
	NULL,
};

struct IntuiText ColorClusterText[4] = {
	{ /* "COPY" */
		1, 0,
		JAM2,
		2 + CHARACTER_WIDTH, 1, 
		&SafeFont,
		(UBYTE *)"COPY",
		NULL,
	},
	{ /* "RANGE" */
		1, 0, 
		JAM2,
		2 + (CHARACTER_WIDTH >> 1), 1, 
		&SafeFont,
		(UBYTE *)"RANGE",
		NULL,
	},
	{ /* "OK" */
		1, 0, 
		JAM2,
		2 + (CHARACTER_WIDTH << 1), 1, 
		&SafeFont,
		(UBYTE *)"OK",
		NULL,
	},
	{ /* "CANCEL" */
		1, 0, 
		JAM2,
		2, 1, 
		&SafeFont,
		(UBYTE *)"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[02],
		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 + (01 * (COLOR_CLUSTER_HEIGHT + 3)),
		COLOR_CLUSTER_WIDTH,
		COLOR_CLUSTER_HEIGHT,
		GADGHCOMP,
		RELVERIFY,
		BOOLGADGET,
		(APTR)&ColorClusterBorder,
		NULL,
		&ColorClusterText[01],
		NULL,
		NULL,
		COLOR_RANGE,
		NULL,
	},
	{ /* COLOR_OK */
		&ColorTemplateGadgets[COLOR_RANGE],
		COLOR_CLUSTER_LEFT,
		COLOR_CLUSTER_TOP + (02 * (COLOR_CLUSTER_HEIGHT + 3)),
		COLOR_CLUSTER_WIDTH,
		COLOR_CLUSTER_HEIGHT,
		GADGHCOMP,
		RELVERIFY,
		BOOLGADGET,
		(APTR)&ColorClusterBorder,
		NULL,
		&ColorClusterText[02],
		NULL,
		NULL,
		COLOR_OK,
		NULL,
	},
	{ /* COLOR_CANCEL */
		&ColorTemplateGadgets[COLOR_OK],
		COLOR_CLUSTER_LEFT,
		COLOR_CLUSTER_TOP + (03 * (COLOR_CLUSTER_HEIGHT + 3)),
		COLOR_CLUSTER_WIDTH,
		COLOR_CLUSTER_HEIGHT,
		GADGHCOMP,
		RELVERIFY,
		BOOLGADGET,
		(APTR)&ColorClusterBorder,
		NULL,
		&ColorClusterText[03],
		NULL,
		NULL,
		COLOR_CANCEL,
		NULL,
	},
	{ /* COLOR_GREEN */
		&ColorTemplateGadgets[COLOR_CANCEL],
		COLOR_PROP_LEFT,
		COLOR_PROP_TOP + (01 * (COLOR_PROP_HEIGHT + 1)),
		COLOR_PROP_WIDTH,
		COLOR_PROP_HEIGHT,
		GADGHCOMP | GADGIMAGE,
		FOLLOWMOUSE,
		PROPGADGET,
		(APTR)&ColorPropsImages[01],
		NULL,
		NULL,
		NULL,
		(APTR)&ColorPropsInfos[01],
		COLOR_GREEN,
		NULL,
	},
	{ /* COLOR_RED */
		&ColorTemplateGadgets[COLOR_GREEN],
		COLOR_PROP_LEFT,
		COLOR_PROP_TOP + (00 * (COLOR_PROP_HEIGHT + 1)),
		COLOR_PROP_WIDTH,
		COLOR_PROP_HEIGHT,
		GADGHCOMP | GADGIMAGE,
		FOLLOWMOUSE,
		PROPGADGET,
		(APTR)&ColorPropsImages[00],
		NULL,
		NULL,
		NULL,
		(APTR)&ColorPropsInfos[00],
		COLOR_RED,
		NULL,
	},
	{ /* COLOR_BLUE */
		&ColorTemplateGadgets[COLOR_RED],
		COLOR_PROP_LEFT,
		COLOR_PROP_TOP + (02 * (COLOR_PROP_HEIGHT + 1)),
		COLOR_PROP_WIDTH,
		COLOR_PROP_HEIGHT,
		GADGHCOMP | GADGIMAGE,
		FOLLOWMOUSE,
		PROPGADGET,
		(APTR)&ColorPropsImages[02],
		NULL,
		NULL,
		NULL,
		(APTR)&ColorPropsInfos[02],
		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,
	},
};


