home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 July
/
IMM0795.ISO
/
share
/
os2
/
pmfract
/
src
/
pmfract.h
< prev
next >
Wrap
Text File
|
1994-01-24
|
21KB
|
550 lines
/*----------------------
FRACTINT for PM
PMFRACT.H header file
05/24/91 Donald P. Egen
----------------------*/
#define ID_RESOURCE 1
#define ID_TIMER 1
#define ID_EMESSAGEBOX 2
#define ID_SYNCMSGBOX 3
#define ID_BADNUMERIC 4
#define IDT_TEXT 1024
#define IDT_HELP_INTRO 1 /* Introduction */
#define IDT_HELP_TYPES 2 /* Fractal Types */
#define IDT_HELP_EXTENT 3 /* Extents dialog help */
#define IDT_HELP_PARAMS 4 /* Set Params dialog help */
#define IDT_HELP_OPERATE 5 /* Operation help */
#define IDM_VIEW_MENU 29
#define IDM_ZIN_MENU 28
#define IDM_ZOUT_MENU 27
#define IDM_ZIN_2 2 /* *** WARNING **** */
#define IDM_ZIN_5 5 /* Code depends on values for IDM_ZIN_x */
#define IDM_ZIN_10 10
#define IDM_ZIN_PICK 9
#define IDM_ZOUT_2 12 /* .. and for IDM_ZOUT_x */
#define IDM_ZOUT_5 15
#define IDM_ZOUT_10 20
#define IDM_ZOUT_PICK 19
#define IDM_PAN 21
#define IDM_ZIN_WIN 22
#define IDM_ZOUT_WIN 23
#define IDM_FILE_MENU 30
#define IDM_NEW_FRACTAL 31
#define IDM_READ_FILE 32
#define IDM_SAVE_FILE 33
#define IDM_READ_3D 34
#define IDM_READ_3DOVER 35
#define IDM_PRINT_FILE 36
#define IDM_READ_COLORMAP 37
#define IDM_WRITE_COLORMAP 38
#define IDM_EDIT_MENU 40
#define IDM_COPY_BMP 41
#define IDM_COPY_MET 42
#define IDM_PASTE 43
#define IDM_CLEAR_CLPB 44
#define IDM_CLPB_TEXT 45
#define IDM_CLPB_BMP 46
#define IDM_CLPB_MET 47
#define IDM_OPTIONS_MENU 50
#define IDM_SET_EXTENTS 51
#define IDM_SET_SWAP 52
#define IDM_SET_PARAMS 53
#define IDM_SET_OPTIONS 54
#define IDM_SET_RESET 55
#define IDM_SET_IMAGE 56
#define IDM_SET_PALETTE 57
#define IDM_HELP 60
#define IDM_HELP_INTRO 61
#define IDM_HELP_FRACTTYPE 62
#define IDM_HELP_OPERATE 63
#define IDM_FREEZE_HALT 95
#define IDM_GO 96
#define IDM_ABOUT 99
#define IDD_ABOUT 110
#define IDD_NUMBER_PICK 120
#define IDD_NUMBER_PROMPT 121
#define IDD_NUMBER_EF 122
#define IDD_SET_EXTENTS 130
#define IDD_SET_XLEFT 132
#define IDD_SET_XRIGHT 133
#define IDD_SET_YTOP 134
#define IDD_SET_YBOTTOM 135
#define IDD_SET_XCENTER 136
#define IDD_SET_YCENTER 137
#define IDD_SET_XHELP 138
#define IDD_SET_XDEF 139
#define IDD_SET_FRACTTYPE 140
#define IDD_SET_FRACTTYPE_LB 141
#define IDD_SET_THELP 142
#define IDD_SET_PARAMS 150
#define IDD_SET_P0 151 /* *** WARNING *** */
#define IDD_SET_P1 152 /* Code depends on IDD_SET_Px being */
#define IDD_SET_P2 153 /* contiguous numbers */
#define IDD_SET_P3 154
#define IDD_SET_PFRACTALTYPE 155
#define IDD_SET_P0TEXT 156
#define IDD_SET_P1TEXT 157
#define IDD_SET_P2TEXT 158
#define IDD_SET_P3TEXT 159
#define IDD_SET_PDEF 160
#define IDD_SET_T1TEXT 161 /* trig function parms */
#define IDD_SET_T2TEXT 162
#define IDD_SET_T3TEXT 163
#define IDD_SET_T4TEXT 164
#define IDD_SET_T1CB 165 /* *** WARNING *** */
#define IDD_SET_T2CB 166 /* Code depends on IDD_SET_TxCB being */
#define IDD_SET_T3CB 167 /* contiguous numbers */
#define IDD_SET_T4CB 168
#define IDD_SET_PHELP 169
#define IDD_SET_IMAGE 170
#define IDD_SET_IHELP 171
#define IDD_IMG_WIN 172
#define IDD_IMG_SCR 173
#define IDD_IMG_PRT 174
#define IDD_IMG_VGA 175
#define IDD_IMG_X 176
#define IDD_IMG_Y 177
#define IDD_IMG_C2 178
#define IDD_IMG_C16 179
#define IDD_IMG_C256 180
#define IDD_SET_PALETTE 190
#define IDD_SET_AHELP 191
#define IDD_PAL_BW 192
#define IDD_PAL_WB 193
#define IDD_PAL_VGA16 194
#define IDD_PAL_VGA256 195
#define IDD_PAL_PHYS 196
#define IDD_PAL_USER 197
#define IDD_SET_OPTIONS 210
#define IDD_SET_OHELP 211
#define IDD_SET_ODEF 212
#define IDD_OPT_PASSES1 213
#define IDD_OPT_PASSES2 214
#define IDD_OPT_PASSESG 215 /* solid-guessing */
#define IDD_OPT_PASSESB 216 /* boundary-trace */
#define IDD_OPT_MATHI 217 /* integer math */
#define IDD_OPT_MATHF 218 /* floating-point math */
#define IDD_OPT_MAXITER 219 /* maximum iterations */
#define IDD_OPT_BIOMORF 210 /* biomorph */
#define IDD_OPT_DECOMP 221 /* decomposition */
#define IDD_OPT_INCOLOR 222 /* inside color */
#define IDD_OPT_OUTCOLR 223 /* outside color */
#define IDD_OPT_DISTEST 224 /* distance estimator */
#define IDD_PRINT 250
#define IDD_PRINT_HELP 251
#define IDD_PRINT_PM 253
#define IDD_PRINT_PJ 254
#define IDD_PRINT_FILE 255
#define IDD_PRINT_PORT 256
#define IDD_PRINT_PORTNAME 257
#define IDD_SEL_LIST 270
#define IDD_SEL_LIST_WHAT 271
#define IDD_SEL_LIST_LB 272
#define IDD_SEL_LIST_HELP 273
#define IDD_LOADSAVE_TYPE 300
#define IDD_LST_WHAT 301
#define IDD_LST_WHAT_HELP 302
#define IDD_LST_GIF 305
#define IDD_LST_BMP 306
#define IDD_LST_MET 307
#define IDD_LST_WIN3BMP 308
#define IDD_LST_PCX 309
#define IDS_ZOOM_IN 1
#define IDS_ZOOM_OUT 2
#define IDS_FREEZE 3
#define IDS_HALT 4
#define IDS_TITLEBAR 5
#define IDS_SWAP_MANDEL 6
#define IDS_SWAP_JULIA 7
#define IDS_MISSING_SUB 8
#define IDS_FLOAT_FORMAT 9
#define IDS_VAL_NOTAPP 10
#define IDS_CLIENT_CLASS 11
#define IDS_BAD_NUMERIC 12
#define IDS_SUBTASK_FATAL 13
#define IDS_INIT_FATAL 14
#define IDS_WORKING 15
#define IDS_PRINT_NOOPEN 16
#define IDS_PRINT_ACTION 17
#define IDS_PRINT_HELP 18
#define IDS_OPEN_TITLE 19
#define IDS_OPEN_HELP 20
#define IDS_FORMULA_FILE 21
#define IDS_FORMULA_FILE_HELP 22
#define IDS_LSYSTEM_FILE 23
#define IDS_LSYSTEM_FILE_HELP 24
#define IDS_IFS_FILE 25
#define IDS_IFS_FILE_HELP 26
#define IDS_IFS3D_FILE 27
#define IDS_IFS3D_FILE_HELP 28
#define IDS_SEL_FORMULA 29
#define IDS_SEL_LSYSTEM 30
#define IDS_COLORMAP_TITLE 31
#define IDS_COLORMAP_HELP 32
#define IDS_LOAD_WHAT 33
#define IDS_SAVE_WHAT 34
#define IDS_EXT_GIF 35
#define IDS_EXT_BMP 36
#define IDS_EXT_MET 37
#define IDS_EXT_PCX 38
/*---------------------------------------------
The sStatus variable implements a state machine
that helps remember what we are doing, and it
is interrogated and defines much of what goes on
in the code.
The states basically map as follows:
[READY]------------->[FROZEN]
A \ (FREEZE command) V
| \ | (Go)
(Final | \ |
Paint) | \ (GO) /--------|
| \ /
| \ /
| V V (New Parms)
[DONE]<---[WORKING]---------->[NEWPARMS]
(Subtask A A V (SubTask Aborted)
Post) | \ |
(STARTUP)[INIT]--------/ \ |
(subtask \------------|
INIT_DONE)
(goes to GO or LOAD)
----------------------------------------------*/
#define STATUS_INIT 0
#define STATUS_READY 1
#define STATUS_FROZEN 2
#define STATUS_WORKING 3
#define STATUS_DONE 4
#define STATUS_NEWPARMS 5
/* define the codes used as communication between */
/* the subtask and the main thread */
#define WM_THRD_POST (WM_USER + 0) /* main post from subtask */
/* SHORT1FROMMP(mp1) is a status code: */
#define SUB_STAT_OK 0 /* successful completion */
#define SUB_STAT_ABORT -1 /* action aborted */
#define SUB_STAT_START_TIMER -2 /* post to clear screen, start */
/* refresh timer (CalcDriver) */
#define SUB_STAT_FATAL -3 /* fatal error (probably insufficient
memory), subtask is gone */
#define SUB_INIT_DONE -4 /* subtask init complete */
#define WM_SYNC_MSG (WM_USER + 1) /* sync message post from subtask */
/* action codes to the subtask */
#define SUB_ACT_CALC 1 /* Calculate a Fractal */
#define SUB_ACT_PRINT 2 /* Print */
#define SUB_ACT_SAVE 3 /* Save */
#define SUB_ACT_LOAD 4 /* Load */
#define SUB_ACT_TERM 999 /* shutdown */
/* sub-function codes for the subtask */
/* sub-functions for print */
#define SUB_PRINT_PM 1 /* print to PM printer */
#define SUB_PRINT_PJ 2 /* print to a PaintJet */
/* sub-functions for load and save */
#define SUB_LOADSAVE_GIF 1 /* load/save as GIF */
#define SUB_LOADSAVE_BMP 2 /* load/save as OS/2 PM BMP */
#define SUB_LOADSAVE_MET 3 /* load/save as Metafile */
#define SUB_LOADSAVE_WIN3BMP 4 /* load/save as Windows 3 BMP */
#define SUB_LOADSAVE_PCX 5 /* load/save as PCX file */
#define STACKSIZE 8192 /* subtask stack size */
#define TIMER_REPAINT 10000
/* in the following TWO structures, like named elements must be */
/* the same types, as partial copies are effected continuously */
typedef struct _CALCPARM
{
HWND hwnd ;
volatile BOOL fContinueCalc ; /* subthread stop request */
volatile SHORT sSubAction ; /* subthread command to process */
volatile SHORT sSubFunction ; /* subthread sub-function of that command */
ULONG ulSemTrigger ; /* subthread start request */
ULONG ulSemMemPS; /* memory PS serialization */
ULONG ulSemSubEnded; /* subthread terminated post */
HDC hdcScreen; /* screen window DC */
HPS hpsScreen; /* screen window PS */
HPS hpsMemory; /* memory DC/PS/BitMap for background drawing */
HDC hdcMemory;
HBITMAP hbmMemory;
PBITMAPINFO pbmiMemory; /* current BITMAPINFO structure pointer */
/* for Engine Pixel Array */
USHORT sCurrentPalette; /* current palette - IDD_PAL_xxx value */
unsigned char _huge *pixels; /* the Engine Pixel Array (pointer) */
USHORT pm_xdots; /* cx rounded to mult of 4-byte boundary, in pixels */
USHORT pm_xbytes; /* cx rounded to mult of 4-byte boundary, in bytes */
USHORT cPlanes; /* number of planes in Bitmap */
USHORT cBitCount; /* bits per plane in Bitmap */
USHORT pixels_per_byte; /* bitmap configuration data */
LONG pixels_per_bytem1;
USHORT pixelshift_per_byte;
unsigned char pm_andmask[8];
unsigned char pm_notmask[8];
unsigned char pm_bitshift[8];
volatile BOOL fNewBits; /* flag to say rebuild mem bitmap from pixel
array */
volatile BOOL fSuppressPaint; /* flag to say to paint function:
"Don't Touch Mem Bitmap or
pixel Array" */
ULONG ulSemSyncMsg; /* for Sync Message processing */
ULONG ulSemSyncMsgDone;
int SyncMsgAnswer;
BOOL fNewParms;
int iFractType;
char cFloatflag; /* float flag */
SHORT cx, cy; /* target image size in pixels */
double XL, XR, YT, YB; /* x left, x right, y top, y bottom values */
double param[4]; /* parameters for fractal calc */
unsigned char trigndx[4]; /* up to 4 trig fnct in fractal */
char szFileName[128]; /* load/save file name */
char szIfsFileName[128];/* ifs file name */
char szIfs3dFileName[128]; /* 3-d ifs file name */
char szFormFileName[128]; /* Forumla file name */
char szFormName[40]; /* formula selected from above */
char szLSysFileName[128]; /* L-System file name */
char szLSysName[40]; /* L-System formula selected from above */
char szPrintName[128]; /* name to print to */
int colors; /* colors in the display */
int maxiter; /* max iteration count */
char stdCalcMode; /* '1', '2', 'b', 'g' */
int distest; /* distance estimator parm */
int periodicitycheck; /* RYFM */
int biomorph; /* biomorph */
int decomp[2]; /* decomposition colors */
int inside; /* inside color; 1=blue */
int outside; /* outside color; -1=ignore */
BOOL fHaveUserPalette; /* TRUE if we have read a user palette map */
SHORT sLastLoadSaveType; /* remember load/save format between calls */
/* values are SUB_LOADSAVE_xxx values */
}
CALCPARAM ;
typedef CALCPARAM FAR *PCALCPARAM ;
typedef struct _NEWPARAM
{
BOOL fNewParms;
int iFractType; /* index into Fractal type array */
char cFloatflag; /* float flag */
SHORT cx, cy; /* target image size in pixels */
double XL, XR, YT, YB; /* x left, x right, y top, y bottom values */
double mxXL, mxXR, mxYT, mxYB; /* left, right, top, bottom limits */
double XCenter, YCenter;
double param[4]; /* parameters for fractal calc */
unsigned char trigndx[4]; /* up to 4 trig fnct in fractal */
char szFileName[128]; /* load/save file name */
char szIfsFileName[128];/* ifs file name */
char szIfs3dFileName[128]; /* 3-d ifs file name */
char szFormFileName[128]; /* Forumla file name */
char szFormName[40]; /* formula selected from above */
char szLSysFileName[128]; /* L-System file name */
char szLSysName[40]; /* L-System formula selected from above */
char szPrintName[128]; /* name to print to */
int colors; /* colors in the display */
int maxiter; /* max iteration count */
char stdCalcMode; /* like he said */
int distest; /* distance estimator parm */
int periodicitycheck; /* like he said */
int biomorph; /* biomorph */
int decomp[2]; /* decomposition colors */
int inside; /* inside color; 1=blue */
int outside; /* outside color; -1 = ignore */
}
NEWPARAM ;
typedef NEWPARAM FAR *PNEWPARAM ;
/* the following structure is the parameter to the General Selection
dialog box and supporting routines */
#define MAX_SEL 101 /* maximum number of items selectable at once */
typedef struct _GENSEL
{
PSZ pszTitle; /* title to use in Dialog Box */
char szSelected[21]; /* the name of what was selected now or last */
SHORT sCountNames; /* how many in the array of names */
char szNames[MAX_SEL][21]; /* the actual array of names to select from */
}
GENSEL;
typedef GENSEL FAR *PGENSEL;
/* routine prototypes */
VOID PMfrGlobalInit(VOID);
BOOL PMfrWindowInit(HWND hwnd, MPARAM mp2);
void FAR CalcDriverInit(void);
int FAR CalcDriver (VOID) ;
void FAR PrintDriverInit(void);
int FAR PrintDriver (VOID);
int FAR SaveDriver (VOID) ;
int FAR LoadDriver (VOID) ;
VOID FAR PMfrThread (VOID) ;
int FAR PMfrSyncMsg (int flags, PSZ msg);
PSZ GetFractalName(int iFractType);
VOID EnableMenuItem (HWND hwnd, SHORT sMenuItem, BOOL fEnable) ;
VOID UpdateMenuText (HWND hwnd, SHORT sMenuItem, PSZ szNewText);
BOOL UpdateMenuStatus (HWND hwnd, SHORT sMenuID);
BOOL GetMemoryBitmap (HAB);
VOID InitNewParms(PNEWPARAM npTempParms);
VOID ScheduleNewParms(HWND hwnd);
VOID CopyParmsToNew(VOID);
VOID CopyParmsToBase(VOID);
VOID CalcZoomValues (PNEWPARAM npTempParms, double dFactor, BOOL InOrOut);
VOID InitCrossHairs (VOID);
VOID DrawCrossHairs (HWND hwnd, PPOINTL pptlMouse);
VOID MoveCrossHairs (HWND hwnd, MPARAM mp1);
VOID EraseCrossHairs (HWND hwnd);
VOID DrawCrossHairsInner(HWND hwnd);
VOID DrawZoomBoxInner (HWND hwnd);
VOID InitZoomBox (SHORT x, SHORT y);
VOID DrawZoomBox (HWND hwnd, PPOINTL pptlMouse);
VOID MoveZoomBox (HWND hwnd, MPARAM mp1);
VOID EraseZoomBox (HWND hwnd);
VOID PanNewCenter (HWND hwnd);
VOID ZoomNewWindow (HWND hwnd, BOOL InOrOut);
VOID CancelZoomOrPan (HWND hwnd);
VOID PMfrRepaint (HWND hwnd);
MRESULT PMfrCommands (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2);
VOID SetSwitchEntry (HWND hwnd, PSZ szTitleBar, PSZ szFract);
VOID CenterDialogBox (HWND hwnd);
VOID LoadColorMap (PSZ szFileName);
VOID SaveColorMap (PSZ szFileName);
VOID FileFmtExt (PSZ far *ppszFmt);
VOID PMfrFetchClipbrdBmp(HAB hab);
VOID PMfrWriteClipbrdBmp(HAB hab);
MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY AboutDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SetExtentsDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY ZoomValueDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SelFractalDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SetParametersDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SetImageDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SetPaletteDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SetOptionsDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY PrintOptionsDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY SelWhatDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
MRESULT EXPENTRY LoadSaveFmtDlgProc (HWND, USHORT, MPARAM, MPARAM) ;
/* global variables */
/* this provides definition only where desired (main module) */
#if !defined(EXTERN)
#define EXTERN extern
#endif
EXTERN HAB hab ; /* main thread HAB */
EXTERN CALCPARAM _far cp ; /* shared data with subtask thread */
EXTERN NEWPARAM _far npNewParms ; /* delayed copy for change of parms while working */
EXTERN NEWPARAM _far npTempParms ; /* copy of copy for dialogs to play with */
EXTERN POINTL ptlCrossHairs;
EXTERN POINTL ptlZBox1, ptlZBox2;
EXTERN HPOINTER hptrWait; /* Hour-glass pointer */
EXTERN HPOINTER hptrArrow; /* normal Arrow pointer */
EXTERN SHORT sStatus;
EXTERN BOOL flAmIcon;
EXTERN BYTE bThreadStack [STACKSIZE];
EXTERN TID tidCalc ;
EXTERN BOOL fPan, fZoomWin, fActive, fGoodPan, fGoodZoom;
EXTERN ULONG cxMouseTol, cyMouseTol; /* x, y mouse move tolerances (SYS_DBLCLK) */
EXTERN ULONG cxScreenRes, cyScreenRes ; /* screen resolution */
EXTERN ULONG cxScreen, cyScreen; /* monitor x,y size */
EXTERN ULONG cyIcon, cyMenu; /* icon depth, menu depth */
EXTERN ULONG cxPrtRes, cyPrtRes; /* default printer resolution */
EXTERN ULONG cxFullScreen, cyFullScreen; /* max client window size */
EXTERN ULONG cxPrinter, cyPrinter; /* printer page size, pels */
EXTERN SHORT cxClient, cyClient; /* current client window size */
EXTERN ULONG lScreenColors; /* color capability of screen */
EXTERN ULONG lPrinterColors; /* color capability of printer */
EXTERN GENSEL _far gs; /* interface to General Selection
dialog */
EXTERN CHAR _far szZoomIn[25]; /* Strings to fill in from resource file */
EXTERN CHAR _far szZoomOut[25];
EXTERN CHAR _far szFreeze[10];
EXTERN CHAR _far szHalt[10];
EXTERN CHAR _far szTitleBar[35];
EXTERN CHAR _far szSwapMandel[35];
EXTERN CHAR _far szSwapJulia[35];
EXTERN CHAR _far szMissingSub[35];
EXTERN CHAR _far szFloatFormat[10];
EXTERN CHAR _far szValueNotApplicable[10];
EXTERN CHAR _far szClientClass[10];
EXTERN CHAR _far szBadNumeric[50];
EXTERN CHAR _far szSubtaskFatal[50];
EXTERN CHAR _far szInitFatal[50];
EXTERN CHAR _far szWorking[20];
EXTERN CHAR _far szPrintNoOpen[35];
EXTERN CHAR _far szPrintAction[35];
EXTERN CHAR _far szPrintHelp[35];
EXTERN CHAR _far szOpenTitle[35];
EXTERN CHAR _far szOpenHelp[35];
EXTERN CHAR _far szFormTitle[35];
EXTERN CHAR _far szFormHelp[35];
EXTERN CHAR _far szLsysTitle[35];
EXTERN CHAR _far szLsysHelp[35];
EXTERN CHAR _far szIFSTitle[35];
EXTERN CHAR _far szIFSHelp[35];
EXTERN CHAR _far szIFS3DTitle[35];
EXTERN CHAR _far szIFS3DHelp[35];
EXTERN CHAR _far szSelFormula[35];
EXTERN CHAR _far szSelLsystem[35];
EXTERN CHAR _far szColorMapTitle[40];
EXTERN CHAR _far szColorMapHelp[40];
EXTERN CHAR _far szLoadWhatFmt[35];
EXTERN CHAR _far szSaveWhatFmt[35];
EXTERN CHAR _far szExtGIF[10];
EXTERN CHAR _far szExtBMP[10];
EXTERN CHAR _far szExtMET[10];
EXTERN CHAR _far szExtPCX[10];
EXTERN int MainArgc;
EXTERN char **MainArgv;
/* for color table switching */
extern BITMAPINFO _far bmiColorTableVGA16; /* color tables are in external */
extern BITMAPINFO _far bmiColorTableVGA256; /* assembler file */
extern BITMAPINFO _far bmiColorTableBW;
extern BITMAPINFO _far bmiColorTableWB;
extern BITMAPINFO _far bmiColorTableUser;
extern BITMAPINFO _far bmiColorTablePhys;
EXTERN ULONG _far *alPhysicalColors;
EXTERN SHORT CountFractalList; /* names of fractals in the */
EXTERN SHORT far *asFracTypeList; /* engine table -fractalspecific- */
#define SYSVAL(x) ( (USHORT) WinQuerySysValue(HWND_DESKTOP, x) )
#define MAX_TRIG 6 /* SQR - should be in fractype.h but isn't */