/* * MandelVroom 2.0 * * (c) Copyright 1987,1989 Kevin L. Clague, San Jose, CA * * All rights reserved. * * Permission is hereby granted to distribute this program's source * executable, and documentation for non-comercial purposes, so long as the * copyright notices are not removed from the sources, executable or * documentation. This program may not be distributed for a profit without * the express written consent of the author Kevin L. Clague. * * This program is not in the public domain. * * Fred Fish is expressly granted permission to distribute this program's * source and executable as part of the "Fred Fish freely redistributable * Amiga software library." * * Permission is expressly granted for this program and it's source to be * distributed as part of the Amicus Amiga software disks, and the * First Amiga User Group's Hot Mix disks. * * contents: this file contains the functions to create and initialize * a preset project selected by the user. */ #include "mandp.h" #define NUMPRESETS 10 extern struct NewScreen NewScreen; struct Preset { char *Name; int Type; double StartX, StartY, EndX, EndY; SHORT CountX, CountY; SHORT MaxCount; UBYTE MandType; USHORT ViewModes; USHORT Depth; ULONG BorderType; SHORT *ColorMap; SHORT NumContours; USHORT *Contours; UBYTE *Pens; }; extern int Num_vp_Colors; extern struct Preset Preset[]; extern USHORT NewViewModes; extern UBYTE NewDepth; DefaultColors() { LoadRGB4( vp, Preset[0].ColorMap, Num_vp_Colors ); } /* * Generate a preset picture */ ClonePict( Pict, Type ) register struct Picture *Pict; register SHORT Type; { register struct Picture *ClonedPict; struct Picture *NewPict(); extern int Num_vp_Colors; if ( (ClonedPict = NewPict( Type )) == NULL ) { ErrNoPict(); return; } CopyPict( ClonedPict, Pict ); strcpy(ClonedPict->Title,Pict->Title); ClonedPict->Flags = 0; ClonedPict->ZoomType == GENPENDSTATE; if ( Pict->pNode.ln_Type != Type ) { if ( Type == JULIAPICT ) { ClonedPict->Real = Pict->RealLow; ClonedPict->Imag = Pict->ImagLow; InitJulia( ClonedPict ); } else { InitMand( ClonedPict ); } } if ( OpenPicture( ClonedPict ) != 0 ) { ThrowPict( ClonedPict ); } GetCurPict(); } ErrNoPict() { DispErrMsg( "Can't Allocate Picture.",0); } CopyPict( DstPict, SrcPict ) register struct Picture *DstPict; register struct Picture *SrcPict; { movmem( &SrcPict->Real, &DstPict->Real, sizeof(struct Picture)- ((char *) &SrcPict->Real - (char *) SrcPict) ); } /* * Generate a preset picture */ int SetPreset(Number) int Number; { return( NewPreset( Number, Preset[Number].Type )); } /* * Generate a preset picture */ int NewPreset(Number, Type) int Number; int Type; { register struct Picture *Pict; struct Picture *NewPict(); extern int Num_vp_Colors; if ( (Pict = NewPict( Type )) == NULL ) { ErrNoPict(); return(UNSUCCESSFUL); } if (Number == -1) { InitPreset( 0, Pict ); #define VIEW_MODE_MASK (HIRES|INTERLACE|EXTRA_HALFBRITE) Pict->ViewModes = NewViewModes = screen->ViewPort.Modes & VIEW_MODE_MASK; Pict->Depth = NewDepth = screen->BitMap.Depth; if ( OpenPicture( Pict ) != 0 ) { ThrowPict( Pict ); return(UNSUCCESSFUL); } } else { InitPreset( Number, Pict ); if (MaybeNewScreen() == 0) { if ( OpenPicture( Pict ) != 0 ) { ThrowPict( Pict ); return(UNSUCCESSFUL); } else { Generate( Pict ); } } } GetCurPict(); if (CurPict) LoadRGB4( vp, CurPict->RGBs, Num_vp_Colors ); return(SUCCESSFUL); } InitJulia( Pict ) register struct Picture *Pict; { double JCountX, JCountY; double AspectRatio(); JCountX = (double) Pict->CountX; JCountY = (double) Pict->CountY; Pict->ImagLow = -1.0; Pict->ImagHigh = 1.0; Pict->RealLow = Pict->ImagLow * AspectRatio() * JCountX / JCountY; Pict->RealHigh = -Pict->RealLow; } /* * Set up system from preset list */ InitPreset(Number, Pict) int Number; register struct Picture *Pict; { register LONG i; register struct Preset *CurPreset; register SHORT *CurColors; register USHORT *CurContours; register UBYTE *CurPens; register struct Node *pNode = (struct Node *) Pict; extern USHORT NewViewModes; extern UBYTE NewDepth; if (Pict == NULL) { DispErrMsg("Initing NULL Pict",0); return(0); } if (Number < NUMPRESETS) { Pict->GenState = GENPENDSTATE; FreeCounts( Pict ); CurPreset = &Preset[Number]; sprintf(Pict->Title,"* %s",CurPreset->Name); Pict->CountX = CurPreset->CountX; Pict->CountY = CurPreset->CountY; if ( pNode->ln_Type == JULIAPICT ) { Pict->Real = CurPreset->StartX; Pict->Imag = CurPreset->StartY; InitJulia( Pict ); } else { Pict->RealLow = CurPreset->StartX; Pict->ImagLow = CurPreset->StartY; Pict->RealHigh = CurPreset->EndX; Pict->ImagHigh = CurPreset->EndY; } Pict->MaxIteration = CurPreset->MaxCount; Pict->MathMode = CurPreset->MandType; Pict->ViewModes = CurPreset->ViewModes; Pict->Depth = CurPreset->Depth; if ( Number != 0 ) { NewViewModes = CurPreset->ViewModes; NewDepth = CurPreset->Depth; } CurColors = CurPreset->ColorMap; for (i = 0; i < 32; i++) { Pict->RGBs[i] = *CurColors++; } CurContours = CurPreset->Contours; CurPens = CurPreset->Pens; for (i = 0; i < CurPreset->NumContours; i++) { *(Pict->Heights + i) = *CurContours++; *(Pict->Pens + i) = *CurPens++; } for ( ; i < NumContours; i++ ) { *(Pict->Heights + i) = 0; *(Pict->Pens + i) = NORMALPEN; } MakeColorXlate( Pict ); CalculateGaps( Pict ); return(0); } else { DispErrMsg("Invalid Preset",0); return(1); } } /************************************************************************** * * Preset arrays for generating pictures * *************************************************************************/ SHORT big_brotPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0114, 0x0225, 0x0337, 0x0448, 0x055a, 0x066b, 0x077c, 0x088e, 0x099f, 0x0bbf, 0x0ccf, 0x0eef, 0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0ccd, 0x0bbc, 0x0aab, 0x099b, 0x088a, 0x077a, 0x0669, 0x0558, 0x0558, 0x0447, 0x0337, 0x0226 }; USHORT big_brotHeights[] = { 128, 29,19, 13, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; UBYTE big_brotPens[] = { 0, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 4, 1, 1, }; SHORT Hey_BabyPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0c9b, 0x0b6a, 0x0a49, 0x0927, 0x0806, 0x0716, 0x0727, 0x0637, 0x0658, 0x0568, 0x0579, 0x0489, 0x0000, 0x0fff, 0x0dee, 0x0bcd, 0x09bc, 0x06aa, 0x0499, 0x0278, 0x0067, 0x059a, 0x0acc, 0x0fff, 0x0bdd, 0x08bb, 0x0489, 0x0067 }; USHORT Hey_BabyHeights[] = { 1023, 247, 220, 193, 167, 160, 154, 147, 141, 134, 128, 122, 115, 110, 106, 102, 98, 93, 89, 85, 81, 77, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65 }; UBYTE Hey_BabyPens[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 20, 23 }; SHORT coverPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f58, 0x0f46, 0x0e46, 0x0d35, 0x0c35, 0x0b34, 0x0a33, 0x0923, 0x0822, 0x0611, 0x0511, 0x0400, 0x0fe7, 0x0f9d, 0x0f8c, 0x0f7a, 0x009f, 0x0ade, 0x0cee, 0x009f, 0x03af, 0x05bf, 0x05bd, 0x09de, 0x0ade, 0x0cee, 0x09cd, 0x06bc }; USHORT coverHeights[] = { 1023, 111, 106, 96, 86, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 48, 47, 46, 45, 42, 39, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 14, 13, 12, 11, 10, 9, 8, 3, 0, 0, 0, 0, 0, 0, 0, }; UBYTE coverPens[] = { 0, 16, 17, 18, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 17, 18, 19, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 14, 13, 12, 11, 10, 8, 7, 6, 5, 4, 19, 18, 17, 11, 10, 9, 8, 7, 6, 5, 4, 19, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; SHORT sea_horsePalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0fff, 0x0bbb, 0x0888, 0x0444, 0x0000, 0x0002, 0x0003, 0x0005, 0x0006, 0x0007, 0x0009, 0x000a, 0x002a, 0x003a, 0x0059, 0x0003, 0x0020, 0x0030, 0x0040, 0x0040, 0x0050, 0x0060, 0x0050, 0x0040, 0x0030, 0x0020, 0x0010, 0x0fff }; USHORT sea_horseHeights[] = { 1023, 635, 542, 449, 356, 263, 171, 145, 142, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, }; UBYTE sea_horsePens[] = { 0, 7, 6, 5, 4, 4, 5, 6, 7, 8, 10, 20, 11, 21, 12, 22, 13, 23, 14, 24, 15, 25, 16, 26, 17, 27, 18, 28, 17, 29, 16, 30, 15, 20, 14, 21, 13, 22, 12, 23, 11, 24, 10, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 20, 16, 21, 17, 22, 18, 23, 17, 24, 16, 25, 15, 26, 14, 27, 13, 28, 12, 29, 11, 30, 10, 20, 10, 21, 11, 22, 12, 23, 13, 24, 14, 25, 15, 26, 16, 27, 17, 28, 18, 29, 17, 30, 16, 20, 15, 21, 14, 22, 13, 23, 12, 24, 11, 25, 10, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 20, 15, 21, 16, 22, 17, 23, 18, 24, 17, 25, 16, 26, 15, 27, 14, 28, 13, 29, 12, 30, 11, 20, 10, 21, 10, 22, 11, 23, 12, 1, }; SHORT golden_dragonPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f93, 0x0e83, 0x0c73, 0x0b53, 0x0943, 0x0732, 0x0411, 0x0200, 0x0310, 0x0410, 0x0520, 0x0720, 0x0850, 0x0930, 0x0c80, 0x0fb0, 0x0620, 0x0510, 0x0310, 0x0200, 0x0521, 0x0742, 0x0a63, 0x0c84, 0x0a63, 0x0742, 0x0521, 0x0200 }; USHORT golden_dragonHeights[] = { 1023, 353, 316, 279, 274, 270, 266, 261, 257, 253, 249, 226, 224, 222, 220, 219, 217, 215, 213, 212, 210, 208, 207, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 0, 0, 0, 0, 0, }; UBYTE golden_dragonPens[] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 23, 24, 25, 26, 27, 28, 29, 30, 23, 24, 25, 26, 27, 28, 29, 30, 23, 24, 25, 26, 27, 28, 29, 30, 23, 24, 25, 26, 27, 28, 29, 30, 23, 24, 25, 26, 27, 28, 29, 30, 13, 24, 25, 26, 27, 28, 29, 13, 1, 1, 1, 1, }; SHORT dual_spiralPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0bbb, 0x0999, 0x0777, 0x0555, 0x0333, 0x0246, 0x0357, 0x0468, 0x0479, 0x058b, 0x068c, 0x079d, 0x0fff, 0x0eee, 0x0ccc, 0x0fd0, 0x0246, 0x0357, 0x0468, 0x079d, 0x068c, 0x068b, 0x057a, 0x057a, 0x0469, 0x0358, 0x0357, 0x0246 }; USHORT dual_spiralHeights[] = { 1023, 283, 271, 260, 249, 238, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, }; UBYTE dual_spiralPens[] = { 0, 16, 17, 18, 5, 6, 7, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 30, 29, 28, 27, 26, 25, 24, 23, 24, 25, 26, 27, }; SHORT halfbritePalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0edd, 0x0dcc, 0x0dcc, 0x0cbb, 0x0cbb, 0x0baa, 0x0baa, 0x0a99, 0x0a99, 0x0988, 0x0988, 0x0877, 0x0445, 0x0fee, 0x0edd, 0x0dcc, 0x0cbb, 0x0a99, 0x0988, 0x0877, 0x0e95, 0x0d84, 0x0d83, 0x0c73, 0x0b62, 0x0a51, 0x0a41, 0x0940 }; USHORT halfbriteHeights[] = { 1023, 355, 333, 311, 289, 267, 245, 223, 201, 179, 173, 167, 161, 155, 149, 143, 137, 131, 125, 119, 113, 107, 101, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, }; UBYTE halfbritePens[] = { 17, 63, 62, 61, 60, 59, 58, 57, 56, 31, 30, 29, 28, 27, 26, 25, 24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63, 55, 54, 53, 52, 51, 50, 49, 23, 22, 21, 20, 19, 18, 17, 18, 19, 20, 21, 22, 23, 49, 50, 51, 52, 53, 54, 55, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 34, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 47, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, }; SHORT Valley_GalPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x099f, 0x077c, 0x055a, 0x0337, 0x0114, 0x0225, 0x0446, 0x0557, 0x0668, 0x0779, 0x099a, 0x0aab, 0x0bbc, 0x0ccd, 0x0eee, 0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0bbc, 0x0aab, 0x099b, 0x077a, 0x0669, 0x0558, 0x0448, 0x0337, 0x0226 }; USHORT Valley_GalHeights[] = { 1023, 182, 137, 126, 115, 105, 94, 83, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, }; UBYTE Valley_GalPens[] = { 0, 17, 15, 14, 13, 12, 11, 10, 9, 8, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, }; SHORT dragon_juliaPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f60, 0x0f80, 0x0f90, 0x0fb0, 0x0fd0, 0x0ff0, 0x0dd1, 0x0bb2, 0x0993, 0x0884, 0x0665, 0x0446, 0x0227, 0x0008, 0x0207, 0x0406, 0x0605, 0x0804, 0x0903, 0x0b02, 0x0d01, 0x0f00, 0x0f20, 0x0f40, 0x0f50, 0x0f70, 0x0f90, 0x0fb0 }; USHORT dragon_juliaHeights[] = { 1023, 142, 132, 123, 113, 104, 99, 94, 89, 84, 79, 74, 71, 68, 66, 63, 60, 58, 55, 52, 50, 48, 47, 45, 44, 42, 41, 39, 38, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, }; UBYTE dragon_juliaPens[] = { 0, 26, 27, 28, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 1, 1, 1, 1, }; SHORT haloPalette[] = { 0x0000, 0x0b98, 0x0fdc, 0x0765, 0x000f, 0x011f, 0x022f, 0x033f, 0x055f, 0x066f, 0x077f, 0x088f, 0x099f, 0x0aaf, 0x0ccf, 0x0ddf, 0x0eef, 0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0bbc, 0x0aac, 0x099b, 0x088a, 0x0779, 0x0669, 0x0558, 0x0447, 0x0337, 0x0226, 0x0fff }; USHORT haloHeights[] = { 1023, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, }; UBYTE haloPens[] = { 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 4, 5, 6, }; #define NUM_CONTOURS(a) (sizeof(a)/sizeof(USHORT)) struct Preset Preset[] = { { "big_brot", /* Preset Name */ MANDPICT, -2.000000, -1.204545, /* StartX, StartY */ 2.820000, 1.204545, /* EndX, EndY */ 109, 78, /* CountX,CountY */ 128, /* MaxCount */ 0, /* MandType */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ &big_brotPalette[0], /* Palette colors */ 32, /* NumContours */ &big_brotHeights[0], /* ContourHeights */ &big_brotPens[0] /* ContourPens */ }, { "Hey_Baby", /* Preset Name */ MANDPICT, -0.143523, -1.019072, /* StartX, StartY */ -0.143384, -1.018843, /* EndX, EndY */ 96, 65, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MandType */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ Hey_BabyPalette, /* Palette colors */ 32, /* NumContours */ Hey_BabyHeights, /* ContourHeights */ Hey_BabyPens /* ContourPens */ }, { "Aug_85_Cover", /* Preset Name */ MANDPICT, -0.948154, -0.296503, /* StartX, StartY */ -0.888359, -0.232261, /* EndX, EndY */ 92, 86, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ coverPalette, /* Palette colors */ NUM_CONTOURS( coverHeights ), /* NumContours */ coverHeights, /* ContourHeights */ coverPens /* ContourPens */ }, { "sea_horse", /* Preset Name */ MANDPICT, -0.750055, 0.105343, /* StartX, StartY */ -0.742464, 0.113267, /* EndX, EndY */ 86, 79, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ sea_horsePalette, /* Palette colors */ NUM_CONTOURS( sea_horseHeights ), /* NumContours */ sea_horseHeights, /* ContourHeights */ sea_horsePens /* ContourPens */ }, { "golden_dragon", /* Preset Name */ MANDPICT, -0.764140, -0.095187, /* StartX, StartY */ -0.764031, -0.095102, /* EndX, EndY */ 117, 87, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ golden_dragonPalette, /* Palette colors */ NUM_CONTOURS( golden_dragonHeights ), /* NumContours */ golden_dragonHeights, /* ContourHeights */ golden_dragonPens /* ContourPens */ }, { "dual_spiral", /* Preset Name */ MANDPICT, -0.764616, -0.095488, /* StartX, StartY */ -0.764312, -0.094471, /* EndX, EndY */ 94, 85, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ dual_spiralPalette, /* Palette colors */ NUM_CONTOURS( dual_spiralHeights ), /* NumContours */ dual_spiralHeights, /* ContourHeights */ dual_spiralPens /* ContourPens */ }, { "halfbrite", /* Preset Name */ MANDPICT, -0.655231, -0.366674, /* StartX, StartY */ -0.654933, -0.366417, /* EndX, EndY */ 103, 84, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0080, /* ViewModes */ 6, /* Depth */ 0, /* Border Type*/ halfbritePalette, /* Palette colors */ NUM_CONTOURS( halfbriteHeights ), /* NumContours */ halfbriteHeights, /* ContourHeights */ halfbritePens /* ContourPens */ }, { "Valley_Gal", /* Preset Name */ JULIAPICT, -0.760314, -0.135554, /* StartX, StartY */ 1.707388, 1.064516, /* EndX, EndY */ 133, 77, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ Valley_GalPalette, /* Palette colors */ NUM_CONTOURS( Valley_GalHeights ), /* NumContours */ Valley_GalHeights, /* ContourHeights */ Valley_GalPens /* ContourPens */ }, { "dragon_julia", /* Preset Name */ JULIAPICT, -0.942986, -0.270764, /* StartX, StartY */ 1.288473, 0.974026, /* EndX, EndY */ 149, 77, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ dragon_juliaPalette, /* Palette colors */ NUM_CONTOURS( dragon_juliaHeights ), /* NumContours */ dragon_juliaHeights, /* ContourHeights */ dragon_juliaPens /* ContourPens */ }, { "halo", /* Preset Name */ JULIAPICT, 0.263523, 0.000016, /* StartX, StartY */ 1.031916, 1.233333, /* EndX, EndY */ 79, 77, /* CountX,CountY */ 1023, /* MaxCount */ 0, /* MathMode */ 0x0000, /* ViewModes */ 5, /* Depth */ 0, /* Border Type*/ haloPalette, /* Palette colors */ NUM_CONTOURS( haloHeights ), /* NumContours */ haloHeights, /* ContourHeights */ haloPens /* ContourPens */ } }; #define DEVELOPMENT #ifdef DEVELOPMENT SavePreset(name,MPict) char *name; struct Picture *MPict; { register struct Picture *Pict = MPict; int i; FILE *SaveFile; SaveFile = fopen(name,"a"); if (SaveFile != (struct FILE *) NULL) { fprintf(SaveFile, "SHORT %sPalette[] =\n{\n",name); for (i = 0; i < 32; i++) { fprintf(SaveFile, " 0x%04x", GetRGB4(vp->ColorMap, i)); if (i != 31) fprintf(SaveFile,","); if (i % 8 == 7) fprintf(SaveFile, "\n"); } fprintf(SaveFile, "};\n"); fprintf(SaveFile, "USHORT %sHeights[] =\n{\n",name); for (i = 0; i < NumContours; i++) { fprintf(SaveFile, " %d", *(Pict->Heights + i) ); if (i != NumContours - 1) { fprintf(SaveFile,","); if (i % 8 == 7) fprintf(SaveFile, "\n"); } } fprintf(SaveFile, "\n};\n"); fprintf(SaveFile, "UBYTE %sPens[] =\n{\n",name); for (i = 0; i < NumContours; i++) { fprintf(SaveFile, " %d", *(Pict->Pens + i) ); if (i != NumContours - 1) { fprintf(SaveFile,","); if (i % 8 == 7) fprintf(SaveFile, "\n"); } } fprintf(SaveFile, "\n};\n"); fprintf(SaveFile, " {\n"); fprintf(SaveFile, " \"%s\", /* Preset Name */\n", name); if (Pict->pNode.ln_Type == JULIAPICT) { fprintf(SaveFile, " %f, %f, /* StartX, StartY */\n", Pict->Real, Pict->Imag); } else { fprintf(SaveFile, " %f, %f, /* StartX, StartY */\n", Pict->RealLow, Pict->ImagLow); } fprintf(SaveFile, " %f, %f, /* EndX, EndY */\n", Pict->RealHigh, Pict->ImagHigh); fprintf(SaveFile, " %d, %d, /* CountX,CountY */\n", Pict->CountX, Pict->CountY); fprintf(SaveFile, " %d, /* MaxCount */\n", Pict->MaxIteration); fprintf(SaveFile, " %d, /* MathMode */\n", Pict->MathMode); fprintf(SaveFile, " 0x%04x, /* ViewModes */\n", screen->ViewPort.Modes); fprintf(SaveFile, " %d, /* Depth */\n", screen->BitMap.Depth); fprintf(SaveFile, " %d, /* Border Type*/\n", 0); fprintf(SaveFile, " %sPalette, /* Palette colors */\n", name); fprintf(SaveFile, " %d, /* NumContours */\n", NumContours); fprintf(SaveFile, " %sHeights, /* ContourHeights */\n", name); fprintf(SaveFile, " %sPens /* ContourPens */\n", name); fprintf(SaveFile, " },\n\n\n"); fclose( SaveFile ); } } #endif