/* * * * IFSout.h - Header file for the Iterated Function System * uses IFS to create a IFS-Construction Image * Released to the Public Domain - 1990 The Software Glen Company * * */ #include #include #include #include #include #include #include UBYTE stxt[NUMSTRS][GSTRLEN]; /* For the String Gadget Text */ struct GfxBase *GfxBase; /* Export the library pointers */ struct IntuitionBase *IntuitionBase; struct RastPort *rp; /* Graphics structures */ struct ViewPort *vp; struct TextAttr StdFont = { "topaz.font", /* Standard system font */ 8, 0, 0 }; struct Window *w, *adjwin; /* Intuition structures */ struct Screen *screen; struct IntuiMessage *message; struct Gadget gads[NUMGADS]; struct Image PImages[NUMPROPS]; /* dummy AUTOKNOB Images are required */ struct PropInfo PInfos[NUMPROPS]; /* These get copies of TPropInfo */ struct StringInfo SInfo[NUMSTRS]; struct IntuiText StrngText[NUMSTRS] = { {2, 0, JAM2, -30, 0, NULL, "WN= ", NULL}, {2, 0, JAM2, -30, 0, NULL, "A = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "B = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "C = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "D = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "E = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "F = ", NULL}, {2, 0, JAM2, -30, 0, NULL, "% = ", NULL} }; struct IntuiText MenuItemText[3][7] = { { {0, 1, JAM2, 0, 0, NULL, "About...", NULL}, {0, 1, JAM2, 0, 0, NULL, "Save IFS", NULL}, {0, 1, JAM2, 0, 0, NULL, "Get IFS", NULL}, {0, 1, JAM2, 0, 0, NULL, "To WB ", NULL}, {0, 1, JAM2, 0, 0, NULL, "Quit ", NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} }, { {0, 1, JAM2, 0, 0, NULL, "Zoom to Fit ", NULL}, {0, 1, JAM2, 0, 0, NULL, "Zoom Out X 2 ", NULL}, {0, 1, JAM2, 0, 0, NULL, "Adjust Func ", NULL}, {0, 1, JAM2, 0, 0, NULL, "Add Another ", NULL}, {0, 1, JAM2, 0, 0, NULL, "Erase Current", NULL}, {0, 1, JAM2, 0, 0, NULL, "Erase All ", NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} }, { {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Boxes ", NULL}, {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Numbers", NULL}, {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Pause ", NULL}, {0, 1, JAM2, CHECKWIDTH, 0, NULL, "BlkGrnd", NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} } }; struct MenuItem MenuItem[3][7] = { { {&MenuItem[0][1], 0, 0, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[0][0], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[0][2], 0, 20, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[0][1], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[0][3], 0, 40, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[0][2], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[0][4], 0, 60, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[0][3], NULL, NULL, NULL, 0xFFFF}, {NULL, 0, 80, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[0][4], NULL, NULL, NULL, 0xFFFF}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} }, { {&MenuItem[1][1], 0, 0, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][0], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[1][2], 0, 20, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][1], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[1][3], 0, 40, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][2], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[1][4], 0, 60, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][3], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[1][5], 0, 80, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][4], NULL, NULL, NULL, 0xFFFF}, {NULL, 0,100, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 0, (APTR)&MenuItemText[1][5], NULL, NULL, NULL, 0xFFFF}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} }, { {&MenuItem[2][1], 0, 0, 56+CHECKWIDTH, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|MENUTOGGLE, 0, (APTR)&MenuItemText[2][0], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[2][2], 0, 20, 56+CHECKWIDTH, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|CHECKED|MENUTOGGLE, 0, (APTR)&MenuItemText[2][1], NULL, NULL, NULL, 0xFFFF}, {&MenuItem[2][3], 0, 40, 56+CHECKWIDTH, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|MENUTOGGLE, 0, (APTR)&MenuItemText[2][2], NULL, NULL, NULL, 0xFFFF}, {NULL, 0, 60, 56+CHECKWIDTH, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|CHECKED|MENUTOGGLE, 0, (APTR)&MenuItemText[2][3], NULL, NULL, NULL, 0xFFFF}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} } }; struct Menu Menu[3] = { {&Menu[1], 0, 0, 60, 0, MENUENABLED, "Project", &MenuItem[0][0]}, {&Menu[2], 81, 0, 76, 0, MENUENABLED, "Functions", &MenuItem[1][0]}, {NULL, 171, 0, 60, 0, MENUENABLED, "Control", &MenuItem[2][0]} }; struct PropInfo TPropInfo = { AUTOKNOB | FREEHORIZ, /* Flags */ 0, 0, /* Pots: Horiz, Vert: both start at 0 */ 0x00D4, 0x00D4, /* Bodies: Horiz is 1/300, Vert is 1/300 */ 0, 0, 0, 0, 0, 0 /* System usage stuff */ }; /* this is the template for the Gadget of a horizonal */ /* Proportional Gadget */ struct Gadget TPropGadget = { NULL, /* pointer to NextGadget */ 110, GADSIZE, (WIDTH/4), GADSIZE, /* Select Box L T W H */ GADGHCOMP, /* Flags */ GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE, /* Activation flags */ PROPGADGET, /* Type */ NULL, /* pointer to Image filled in later */ NULL, /* no pointer to SelectRender filled later */ NULL, /* no pointer to GadgetText */ 0, /* no MutualExclude */ NULL, /* SpecialInfo proportional data filled later */ 0, /* no ID */ NULL /* no pointer to special data */ }; struct Gadget ZoomGadget = { NULL, /* pointer to NextGadget */ 340, (2*GADSIZE), (2*GADSIZE), 80, /* Select Box L T W H */ GADGHCOMP, /* Flags */ GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE, /* Activation flags */ PROPGADGET, /* Type */ NULL, /* pointer to Image filled in later */ NULL, /* no pointer to SelectRender */ NULL, /* no pointer to GadgetText */ 0, /* no MutualExclude */ NULL, /* SpecialInfo proportional filled in later*/ 0, /* no ID */ NULL /* no pointer to special data */ }; struct Gadget CenterGadget = { NULL, /* pointer to NextGadget */ 440, GADSIZE*2, (WIDTH/4), 80, /* Select Box L T W H */ GADGHCOMP, /* Flags */ GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE, /* Activation flags */ PROPGADGET, /* Type */ NULL, /* pointer to Image filled in later */ NULL, /* no pointer to SelectRender */ NULL, /* no pointer to GadgetText */ 0, /* no MutualExclude */ NULL, /* SpecialInfo proportional filled in later*/ 0, /* no ID */ NULL /* no pointer to special data */ }; struct Gadget TStrngGadget = { NULL, /* pointer to NextGadget */ 40, GADSIZE, 50, GADSIZE, /* Select Box L T W H */ GADGHCOMP, /* Flags */ RELVERIFY | ENDGADGET, /* Activation flags */ STRGADGET, /* Type */ NULL, /* pointer to Image filled in later */ NULL, /* no pointer to SelectRender filled later */ NULL, /* no pointer to GadgetText */ 0, /* no MutualExclude */ NULL, /* SpecialInfo proportional data filled later */ 0, /* no ID */ NULL /* no pointer to special data filled in later*/ }; /* This is the text for the About requester */ #define TXT01 "" #define TXT02 " AMIGA IFSOUT V1.5" #define TXT03 "Public Domain by Software Glen Co." #define TXT04 "An Iterated Function System Viewer" #define TXT05 "" #define TXT06 "I would be interested in any new &" #define TXT07 "interesting functions you find. " #define TXT08 "" #define TXT09 " Glen Fullmer" #define TXT10 " email fullmer@alfalfa.sps.mot.com" #define TXT11 "" #define TXT12 "" #define TXT13 "Algorithm from FRACTALS EVERYWHERE" #define TXT14 " by Michael Barnsley" struct IntuiText ReqText14 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 133, /* Top */ &StdFont, /* pointer to TextFont */ TXT14, NULL /* next */ }; struct IntuiText ReqText13 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 123, /* Top */ &StdFont, /* pointer to TextFont */ TXT13, &ReqText14 /* next */ }; struct IntuiText ReqText12 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 113, /* Top */ &StdFont, /* pointer to TextFont */ TXT12, &ReqText13 /* next */ }; struct IntuiText ReqText11 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 103, /* Top */ &StdFont, /* pointer to TextFont */ TXT11, &ReqText12 /* next */ }; struct IntuiText ReqText10 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 93, /* Top */ &StdFont, /* pointer to TextFont */ TXT10, &ReqText11 /* next */ }; struct IntuiText ReqText9 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 83, /* Top */ &StdFont, /* pointer to TextFont */ TXT09, &ReqText10 /* next */ }; struct IntuiText ReqText8 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 73, /* Top */ &StdFont, /* pointer to TextFont */ TXT08, &ReqText9 /* next */ }; struct IntuiText ReqText7 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 63, /* Top */ &StdFont, /* pointer to TextFont */ TXT07, &ReqText8 /* next */ }; struct IntuiText ReqText6 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 53, /* Top */ &StdFont, /* pointer to TextFont */ TXT06, &ReqText7 /* next */ }; struct IntuiText ReqText5 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 43, /* Top */ &StdFont, /* pointer to TextFont */ TXT05, &ReqText6 /* next */ }; struct IntuiText ReqText4 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 33, /* Top */ &StdFont, /* pointer to TextFont */ TXT04, &ReqText5 /* next */ }; struct IntuiText ReqText3 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 23, /* Top */ &StdFont, /* pointer to TextFont */ TXT03, &ReqText4 /* next */ }; struct IntuiText ReqText2 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 13, /* Top */ &StdFont, /* pointer to TextFont */ TXT02, &ReqText3 /* next */ }; struct IntuiText ReqText1 = { 0, /* Front Pen */ 1, /* Back pen */ JAM2, /* Draw Mode */ 5, /* Left Edge */ 3, /* Top */ &StdFont, /* pointer to TextFont */ TXT01, &ReqText2 /* next */ }; struct IntuiText OKIText = { 0, 1 , /* FrontPen, BackPen */ JAM2, /* DrawMode */ 6, 3, /* LeftEdge, TopEdge (relative to gadget) */ &StdFont, /* pointer to TextFont */ "OK", /* pointer to Text */ NULL /* no pointer to NextText */ }; struct NewScreen ns = { 0, 0, /* start position */ 640, 400, 4, /* width, height, depth */ 0, 1, /* detail pen, block pen */ HIRES|INTERLACE, /* Normal ViewMode */ CUSTOMSCREEN, /* screen type */ &StdFont, /* font to use */ SCREENTITLE, /* default title for screen */ NULL /* pointer to additional gadgets */ }; struct NewWindow nw = { 0, 0, /* start position */ WIDTH, HEIGHT, /* width, height */ -1, -1, /* detail pen, block pen */ CLOSEWINDOW|MOUSEBUTTONS|MENUPICK|INTUITICKS, /* IDCMP flags */ /* Window flags*/ WINDOWCLOSE|ACTIVATE|BORDERLESS|SMART_REFRESH|NOCAREREFRESH, NULL, /* Pointer to FirstGadget */ NULL, /* pointer to user checkmark */ NULL, /* window title */ NULL, /* pointer to screen (set below) */ NULL, /* pointer to superbitmap */ 0, 0, 640, 373, /* ignored since not sizeable */ CUSTOMSCREEN /* type of screen desired */ }; struct NewWindow nadjwin = { 0, 20, /* start position */ WIDTH,(((NUMPROPS-2) * GADSIZE)+30),/* width, height */ 2,1, /* detail pen, block pen */ CLOSEWINDOW | GADGETUP, /* IDCMP flags */ WINDOWCLOSE|WINDOWDRAG|SMART_REFRESH|NOCAREREFRESH, /* window flags */ &gads[NUMGADS-1], /* Pointer to FirstGadget */ NULL, /* pointer to user checkmark */ "Coefficients Adjust Zoom Reposition ",/* window title */ NULL, /* pointer to screen (set below) */ NULL, /* pointer to superbitmap */ 0, 0, 0, 0, /* ignored since not sizeable */ CUSTOMSCREEN /* type of screen desired */ };