/* * M A N D E L B R O T C O N S T R U C T I O N S E T * * (C) Copyright 1989 by Olaf Seibert. * Mandel may be freely distributed. See file 'doc/Notice' for details. * * Select() requester, as generated by blk 2.0 (by Stuart Ferguson). * Necessary changes to the generated file: * - delete definition of select_nbuf[][] */ #include #include #include "mandel.h" #ifdef DEBUG # include # undef STATIC # define STATIC /* EMPTY */ #endif #define NUMCHR 5 /*extern UBYTE Buffer[5][20]; /* We want to re-use it for the * string gadgets here. */ extern UBYTE Buffer[20][5]; UBYTE undo[NUMCHR]; #define select_nbuf Buffer #define ta Topaz80 #define ITXT_BPEN REQ_BF #define ITXT_DRMD JAM2 #define BRD_DRMD JAM1 #define REQ_LE 0 #define REQ_TE 0 #define REQ_FLG 0 #define REQ_BF 1 #define PROPGADGETID (NEGGADGETID+3) #define VALUEGADGETID (NEGGADGETID+10) #include "select.req" #define FIRST_STRGAD 0 #define FIRST_SINFO 0 #define FIRST_ITEXT 1 #define NUMVALUES 20 #define MAXVAL (MAXDEPTH - NUMVALUES) void fillin(from, window) register int from; register struct Window *window; { register int to = from+20; register int i; if (window) { RemoveGList(window, &select_gad[FIRST_STRGAD], 20L); } for (i = 0; from < to; from++, i++) { sprintf(select_txt[FIRST_ITEXT+i].IText, "%4d", from); sprintf(select_sinfo[FIRST_SINFO+i].Buffer, "%d", (int)PenTable[from]); select_sinfo[FIRST_SINFO+i].LongInt = PenTable[from]; } if (window) { AddGList(window, &select_gad[FIRST_STRGAD], 0L, 20L, &select_req); RefreshGList(&select_gad[FIRST_STRGAD], window, &select_req, 20L); PrintIText(select_req.ReqLayer->rp, &select_txt[FIRST_ITEXT], 0L, 0L); } } void Select() { register int ID; register int base; register struct Window *window = NULL; int value; base = (select_pinfo[0].VertPot * (long) MAXVAL + 0x8000) >> 16; fillin(base, NULL); select_pinfo[0].VertBody = (MAXBODY * NUMVALUES) / (5*MAXVAL/4); window = MyRequest(&select_req, MainWindow); do { ID = WaitMyRequest(window); switch(ID) { case POSGADGETID: /* OK */ break; case PROPGADGETID: base = (select_pinfo[0].VertPot * (long) MAXVAL + 0x8000) >> 16; fillin(base, window); break; default: /* some value */ ID -= VALUEGADGETID; value = select_sinfo[FIRST_SINFO+ID].LongInt; if (value >= 0 && value < NumColors) PenTable[base + ID] = value; else DisplayBeep(MandelScreen); } } while (ID != POSGADGETID); EndMyRequest(&select_req, window, MainWindow); }