/* * :ts=8 Common DEFINEs and external declarations for the Mandelbrot * Construction Set... */ #undef LIBRARY_VERSION #define LIBRARY_VERSION 33L /* V1.2 */ #define MYFRONTPEN 2 /* Black */ /* Menus */ #define CPRMENU 0 /* Copyright Menu */ #define PRJMENU 1 /* Poject Menu */ #define OPTMENU 2 /* Option Menu */ #define DRWMENU 3 /* Draw functions Menu */ #define BATMENU 4 /* Batch Menu */ /* Menu items */ #define PRJNEW 0 /* Project Menu: New */ #define PRJOPN 1 /* Open */ #define PRJSVE 2 /* Save */ #define PRJSVA 3 /* Save As */ #define PRJSTP 4 /* Stop */ #define PRJQUI 5 /* Quit */ #define PNABS 0 /* Project New: Absolute */ #define PNENL 1 /* Enlarge */ #define PNRED 2 /* Reduce */ #define PNSHF 3 /* Shift */ #define PNZI 4 /* Zoom In */ #define PNZO 5 /* Zoom Out */ #define OPTCOL 0 /* Option Menu: Colors */ #define OPTRES 1 /* Resolution */ #define OPTPAR 2 /* Parameters */ #define OPTPRI 3 /* Priority */ #define OCSEL 0 /* Opt Color: Select */ #define OCMOD 1 /* Modulo */ #define OCRAN 2 /* Ranges */ #define OCPAL 3 /* Palette */ #define ORNRM 0 /* Opt Resl: Normal */ #define OR12 1 /* 1/2 */ #define OR13 2 /* 1/3 */ #define OR14 3 /* 1/4 */ #define ORFIL 4 /* Fill In */ #define ORHI 5 /* HiRes */ #define ORILC 6 /* Interlace */ #define ORBCK 7 /* Borderless */ #define OREHB 8 /* Extra Half Brite */ #define OPNOR 0 /* Normal priority */ #define OPLOW 1 /* Low priority */ #define DRWFUN 0 /* Draw functions */ #define DRWIPL 1 /* - Iteration plot */ #define DRWEPL 2 /* - End plot */ #define DF1 0 /* Functions Menu: Z^2-C */ #define DF2 1 /* ZC1MinZ */ #define DF3 2 /* Z3PlusZCMin1MinC */ #define DFUPF 3 /* Not on the menu for now */ #define DF5 4 /* i:Z^2 - C */ #define DINONE 0 /* draw iplot none */ #define DIZ 1 /* iplot Z */ #define DEDEPTH 0 /* draw eplot depth */ #define DEZ 1 /* eplot Z */ #define BATFILE 0 /* Batch Menu: File... */ #define BATWAIT 1 /* Wait */ #define BATCONT 2 /* Continue */ #define BATABORT 3 /* Abort */ #define POSGADGETID 10 /* For Positive Gadget */ #define NEGGADGETID 11 /* For Negative Gadget */ #define FNAME_SIZE 32L /* Filename size */ #define DNAME_SIZE 66L /* Directoryname size */ #define MAXDEPTH 512 /* Maximum maximum depth */ #define BMDEPTH 5 /* Depth of our bitmap */ #define MAXCOL (1<member) /* Type definitions */ typedef short bool; struct BitMapHeader { UWORD w, h; UWORD x, y; UBYTE nPlanes; UBYTE masking; UBYTE compression; UBYTE pad1; UWORD transparentColor; UBYTE xAspect, yAspect; WORD pageWidth, pageHeight; }; /* * ILBM_info is the structure read_iff returns, and is hopefully all you * need to deal with out of the iff reader routines below */ struct ILBM_info { struct BitMapHeader header; UBYTE cmap[MAXCOL * 3]; struct BitMap bitmap; struct Mand *mand; long mandsize; }; struct Mand { ULONG MandID; /* 'MAND' */ LONG Size; /* sizeof(struct Mand) */ WORD MaxDepth; /* Maximum iteration count */ WORD RangeWidth; BYTE RainDist; /* From the palette Rainbow mode */ BYTE RainRMax; /* From the palette Rainbow mode */ BYTE RainGMax; /* From the palette Rainbow mode */ BYTE RainBMax; /* From the palette Rainbow mode */ BYTE Coords[4 * 18]; /* Ascii representation */ BYTE FunctionNr; /* Which function was used (1...4) */ BYTE PenTableMode; /* MODULO, RANGES, SELECT */ USHORT WBWidth; USHORT WBHeight; }; struct BorderInfo { BYTE SizeX, SizeY; BYTE MoveX, MoveY; }; /* Some definitions for the User Programmed Functions */ struct Program { char pr_OpCode; char pr_Dest; char pr_Op1; char pr_Op2; long pr__Reserved; }; enum Opcode { End, Rassign, Cassign, Ri, Ci, Rplus, Cplus, Rminus, Cminus, Rtimes, Ctimes, }; #define PROGRAMSIZE 64 #define PROGRAMREGS 16 extern struct Program Program[PROGRAMSIZE]; extern double PrgReg[2 * PROGRAMREGS]; #define RE(x) (x) /* These RE and IM cannot */ #define IM(x) ((x) + PROGRAMREGS) /* be exchanged! */ /* Some Other Macros */ #define MENU(menu,item,subitem)\ (LONG)(SHIFTMENU(menu)|SHIFTITEM(item)|SHIFTSUB(subitem)) /* External declarations */ #include extern long GetScreenData(); /* * extern struct Screen *OpenScreen(); extern struct Window *OpenWindow(); * extern struct IntuiMessage *GetMsg(); extern struct Library * *OpenLibrary(); extern struct MenuItem *ItemAddress(); extern long * AutoRequest(), DisplayAlert(), Request(), MoveLayer(), SizeLayer(); * extern void SetAPen(), WritePixel(), WindowLimits(), EndRequest(); * extern struct Task *FindTask(); extern long Wait(); */ /* Forward POINTER declarations */ extern struct Screen *MandelScreen; extern struct Window *MainWindow; extern struct IntuiMessage *message; extern int (*DepthFunc) (); extern void (*IPlotFunc) (); extern void (*EPlotFunc) (); extern struct IntuitionBase *IntuitionBase; extern struct LayersBase *LayersBase; extern struct GfxBase *GfxBase; extern FILE *BatchFILE; extern struct Task *MandelTask, *DrawTask; /* Forward STRUCT declarations */ extern struct Menu MandelMenu[]; extern struct NewScreen MandelNScreen; extern struct NewWindow MainNWindow; extern struct TextAttr Topaz60, Topaz80; extern struct IntuiText PositiveText, NegativeText; extern struct Gadget PositiveGadget, NegativeGadget; extern struct BorderInfo borderinfo; /* Forward ARRAY declarations */ extern TEXT FileName[FNAME_SIZE + 1]; extern TEXT DirName[DNAME_SIZE + 2]; /* Forward `SIMPLE' declarations */ extern int NumColors, MaxDepth, PixelStep, RangeWidth; extern int DrawPri; extern unsigned PenTableMode; extern unsigned short FrameX1, FrameX2, FrameY1, FrameY2; extern short MouseStatus; extern bool finished, StillDrawing, Saved, NameValid; extern double LeftEdge, RightEdge, TopEdge, BottomEdge, CXStep, CYStep; extern UBYTE PenTable[MAXDEPTH]; extern UBYTE FunctionNr; extern SHORT RainbowDistance, RainbowRMax, RainbowGMax, RainbowBMax; extern long DrawSigMask; extern int DrawSigBit; extern USHORT WBWidth, WBHeight; /* Forward FUNCTION declarations */ extern bool InitDisplay(); extern bool ReInitDisplay(); extern bool Sure(); extern bool CleanupDisplay(); extern bool InterpretMAND(); extern bool DoBorderless(); extern bool DrawPicture(); extern bool OpenAs(); extern bool SaveAs(); extern bool OpenBatch(); extern int WaitMyRequest(); extern int write_iff(); extern int ZQuadMinC(); extern int ZC1MinZ(); extern int Z3PlusZCMin1MinC(); extern int UserProgFunc(); extern int I_ZQuadMinC(); extern float Ratio(); extern char *get_fname(); extern char *index(); extern struct ILBM_info *win_read_iff(); extern struct Window *MyRequest(); extern void MyExit(); extern void GotMenu(); extern void UndoBorderless(); extern void CprMenu(); extern void PrjMenu(); extern void EdtMenu(); extern void OptMenu(); extern void DrwMenu(); extern void BatchMenu(); extern void UnImpl(); extern void EndMyRequest(); extern void CloseWindowSafely(); extern void get_ea_cmap(); extern void put_ea_cmap(); extern void free_planes(); extern void RectDraw(); extern void CrossDraw(); extern void CheckMouse(); extern void InitPenTable(); extern void StopFraming(); extern void EnableSystemGadgets(); extern void DisableSystemGadgets(); extern void Parameters(); extern void Palette(); extern void MakeMAND(); extern void StopDrawing(); extern void CalcCSteps(); extern void None(); extern void PlotZ(); extern void PlotIterationCount(); extern void SelectMenu(); extern void SuspendDrawing(); extern void ResumeDrawing(); extern void UpdateCheckmarks(); extern void UpdateDrwFunCm(); extern void UpdateDrwIplotCm(); extern void UpdateDrwEplotCm(); extern void UpdateOptColorCm(); extern void UpdateOptDrawResCm(); extern void UpdateOptViewResCm(); extern void UpdateOptPriCm(); extern void CloseBatch(); #ifdef AREXX /* * This is the list of functions we can access. (Cheap forward * declarations, too.) */ extern long upRexxPort() ; extern void dnRexxPort() ; extern void dispRexxPort() ; extern struct RexxMsg *sendRexxCmd() ; extern struct RexxMsg *syncRexxCmd() ; extern struct RexxMsg *asyncRexxCmd() ; extern void replyRexxCmd() ; extern long RexxMask; #endif