home *** CD-ROM | disk | FTP | other *** search
- /* This module is a minimum extenal hooks tek 4010 emulation, the
-
- * function OpenTek {InitTek()} must be called before any of the others, it
- * assumes that gfx, intuition are open. Tek() returns true if it
- * uses the input stream else false. It must be called before any
- * character parsing or you could get into trouble. CloseTek() Frees
- * up all resources used by this module */
-
- /* I had to invent a few commands for area fill reset screen, and
- * color setting. Any one who knows the correct commands please let me
- * know the line drawing and color index selection are standard commands.
- * I have vax software to drive the 640x400 mode, and it works really well.
- * the 1024x780 mode is not quite as clear, but works ok.
- * The author of this software can be contacted as:
- * T.Whelan
- * Dept. of Physics & Astronomy
- * University of Iowa
- * Iowa City
- * IA 52244
- * and on span at IOWA::WHELAN
-
- * on the "to do" list, are graphic input mode and run time selection
- * of the screen resolution. */
-
- /******************************************************************/
- /* More Mods added by NG 4-88 - Now built on top of vt100 v2.8
- /* Mods added by NG 4-87 - Now built on top of vt100 v2.6
- /******************************************************************/
-
- /* compiler directives to fetch the necessary header files */
-
- #include <stdio.h>
- #include <ctype.h>
- #include <typedefs.h>
- #include "tek.h"
-
- /* externs from ftek.c */
- extern MENU Menu[];
- extern WIN *Win;
-
- /*********************** tek defaults *******************************/
-
- int t_scale = 0; /* 0->1024x780 1->640x400 resolution */
- int t_on = 0; /* 0 = no 1 = yes come up with tek screen on */
- int t_depth = 1; /* depth of tek screen */
- int t_interlace = 1; /* interlace tek screen 0=no 1=yes */
-
- /* new for v2.85 */
-
- int t_font_size = 8; /* use topaz in this font size for tek window */
-
- /********************************************************************/
-
- int TekMode = FALSE;
-
- /* global pointers, used only in this code module */
-
- MENU tekmenu[2];
- struct Screen *TekScreen;
- struct Window *TekWindow;
- void *TekFillRas; /* was an int * in 1.1 */
- int Tek_screen_open = 0; /* new variable added by NG */
- extern void * AllocRaster(); /* was an int * in 1.1 */
- int dx = 8;
- int dy = 10;
-
- /* macros... */
- #define mrp TekWindow->RPort
- #define COLOR(i, j, k, l) SetRGB4(&TekScreen->ViewPort, i, j, k, l)
-
-
- /* this macro puts the tek screen at the back
- * and sets things so that the user gets the
- * non-tek mode of operation, there are some problems here
- * as we do not use intuition to control window positions */
-
- #define TekOFF() {TekMode = FALSE; \
- ScreenToBack(TekScreen); }
-
- #define clear() SetRast(mrp, 0L); /* set the screen to color Zero */
-
- /* the screen size */
- #define TXMIN 0
- #define TYMIN 0
- #define TXMAX 640 /* changed from old tek version */
- #define TYMAX 400
-
- int real_txmax = TXMAX;
- int real_tymax = TYMAX;
-
- struct DiskfontBase *DiskfontBase;
- struct TextAttr tek_Attr = { (STRPTR)"topaz.font",8,0,0 };
- struct TextFont *tekf;
-
- struct NewScreen TekNewScreen = {
- TXMIN, TYMIN,
- TXMAX, TYMAX, 1, /* 1 bit plane is now the default */
- 0, 1,
- HIRES|INTERLACE, /* now the default */
- CUSTOMSCREEN,
- NULL,
- NULL,
- NULL,
- NULL
- };
-
- struct NewWindow TekNewWindow = {
- TXMIN, TYMIN + 1, /* allow one pixel space at top for screen access */
- TXMAX, TYMAX - 1,
- 1, 0,
- RAWKEY, /* No IDCMP flags */
- BORDERLESS|NOCAREREFRESH|SMART_REFRESH,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- 0, 0,
- 0, 0,
- CUSTOMSCREEN
- };
-
- /******** tek menu stuff *******/
- struct MenuItem TekItem[TekParamsMax];
- struct IntuiText TekText[TekParamsMax];
- struct MenuItem TekScaleItem[TekScaleMax];
- struct IntuiText TekScaleText[TekScaleMax];
- struct MenuItem TekDepthItem[TekDepthMax];
- struct IntuiText TekDepthText[TekDepthMax];
- struct MenuItem TekInterlaceItem[TekInterlaceMax];
- struct IntuiText TekInterlaceText[TekInterlaceMax];
- struct MenuItem TekScreenItem[TekScreenMax];
- struct IntuiText TekScreenText[TekScreenMax];
- struct MenuItem TekSelectItem[TekSelectMax];
- struct IntuiText TekSelectText[TekSelectMax];
-
-
- /* initalize the window and screen needed for this mode
- * inituition and gfx are assumed open */
- /* was called InitTek in old version - now this function just opens
- the tek screen so rename it */
-
- OpenTek(HisPort)
- struct MsgPort *HisPort;
- {
- static struct AreaInfo ai;
- static WORD buffer[250];
- static struct TmpRas tr;
-
- if(Tek_screen_open == 1)
- return(FALSE);
-
- /* for morerows compatibility */
- real_txmax = TekNewScreen.Width = GfxBase->NormalDisplayColumns;
- real_tymax = TekNewScreen.Height = 2 * GfxBase->NormalDisplayRows;
-
- TekScreen = (struct Screen *)OpenScreen(&TekNewScreen);
- if (TekScreen == NULL) {
- puts("Cannot open Tek screen\n");
- return TRUE;
- }
-
- TekNewWindow.Screen = TekScreen;
-
- /* for morerows compatibility */
- TekNewWindow.Width = real_txmax;
- TekNewWindow.Height = real_tymax - 1;
-
- TekWindow = (struct Window *)OpenWindow(&TekNewWindow);
- if (TekWindow == NULL){
- puts("Cannot open Tek window\n");
- return TRUE;
- }
-
- DiskfontBase = (struct DiskfontBase *) OpenLibrary("diskfont.library",0L);
- if(DiskfontBase != NULL) {
- /* set up desired font */
- tek_Attr.ta_YSize = t_font_size;
- tekf = (struct TextFont *) OpenDiskFont(&tek_Attr);
- if(tekf != NULL) {
- SetFont(mrp,tekf);
- dx = tekf->tf_XSize;
- dy = tekf->tf_YSize;
- }
- }
-
- /* make HisPort the User Port for this window, so that his
- * read routines will work when my screen is active
- */
- TekWindow->UserPort = HisPort;
- ModifyIDCMP(TekWindow, RAWKEY|MENUPICK);
-
-
- /* allow for area fill */
- InitArea (&ai, buffer, 100L);
- mrp->AreaInfo = &ai;
- TekFillRas = AllocRaster((long)real_txmax, (long)real_tymax);
-
- InitTmpRas(&tr, TekFillRas, RASSIZE((long)real_txmax, (long)real_tymax));
-
- reset();
-
- TekOFF();
- Tek_screen_open = 1; /* added by NG */
- return FALSE; /* no errors detected */
- }
-
-
- InitTekDev(HisWin)
- WIN *HisWin;
- {
- if(t_on == 1)
- OpenTek(HisWin->UserPort);
- }
-
- CloseTek()
- {
- if(Tek_screen_open == 0)
- return;
- TekMode = FALSE;
- FreeRaster(TekFillRas,(long)real_txmax,(long)real_tymax);
- TekWindow->UserPort = NULL; /* I will not close his port */
- CloseWindow(TekWindow);
- CloseScreen(TekScreen);
- if(DiskfontBase != NULL) {
- CloseLibrary(DiskfontBase);
- }
- if(tekf != NULL) {
- CloseFont(tekf);
- }
- Tek_screen_open = 0;
- }
-
-
- /*************************************************
- * Function to do tek 4010 graphics and mode
- * switching, the function returns false if it
- * uses the character else the
- * character can be used for something else
- *************************************************/
-
-
- int Tek(c)
- char c;
- {
- static int x = TXMIN, xl;
- static int y = TYMIN, yl;
- static int last, escmode = FALSE, boxmode = FALSE;
- static int loy, hix, hiy;
-
- static int mode;
-
- static colormode = NULL, index, red, green;
- static int tk4100 = NULL;
- static int ic = 1;
- static int lastc = 1;
-
- if (TekMode) goto top;
- if (c == GS) {
- TekMode = TRUE;
- if(Tek_screen_open == 0)
- return TRUE;
- ScreenToFront(TekScreen);
- mode = MOVE;
- }
- return TekMode; /* i.e. if c == GS we used it and can leave */
- top:
- /* first handle case if graph is sent without having the tek screen
- * turned on; just eat the graphics commands until the graph is
- * finished - then turn back to text mode
- * also make this selanar compatible
- */
- if(Tek_screen_open == 0) {
- if((c == CAN) || ((lastc == ESC) && (c == '2')))
- TekMode = FALSE; /* turn tek mode off */
- lastc = c;
- return TRUE;
- }
- /*
- if(mode == ALPHA) {
- emit(c);
- emit(CR);
- emit(LF);
- }
- */
-
- if(escmode){
- if(colormode != (int)NULL){
- c = c - '0';
- colormode++;
- if(colormode == 2)
- index = c;
- else if(colormode == 3)
- red = c;
- else if(colormode == 4)
- green = c;
- else if(colormode == 5){
- COLOR((long)index, (long)red, (long)green, (long)c);
- colormode = NULL;
- escmode = FALSE;
- }
- return TekMode;
- }
- switch (c) {
- case '2': /* Selanar Compatable graphics terminator */
- TekOFF();
- boxmode = FALSE;
- break;
- /* I do not know what the tek 4100 area fill commands are so I made-up
- my own, this will not harm the line drawing mode. */
- case 'A':
- boxmode = TRUE;
- break;
- case 'B':
- boxmode = FALSE;
- break;
- case 'Q':
- colormode = 1;
- return TekMode;
- /* another one of my own commands */
- case 'R': /* reset to default then clear screen */
- reset();
- ic = 1;
- case 12: /* clear page */
- x = TXMIN;
- y = TYMIN + dy;
- mode = ALPHA;
- tk4100 = NULL;
- clear();
- break;
- case 'M': /* looks like a 4100 command */
- tk4100 = 'M';
- break;
- }
- escmode = FALSE;
- } else if (tk4100 != (int)NULL){
- if(tk4100 == COLORSET){
- ic = c - '0';
- SetAPen(mrp, (long)ic);
- }
- if(tk4100 == 'M' && c == 'L')
- tk4100 = COLORSET;
- else
- tk4100 = NULL;
- } else if (c >= ' ')
- if (mode == ALPHA){
- if(xl > real_txmax-dx) xl = real_txmax-dx;
- if(xl < TXMIN) xl = TXMIN;
- if(yl < TYMIN+dy) yl = TYMIN+dy;
- if(yl > real_tymax) yl = real_tymax;
- SetAPen(mrp, 1L);
- Move(mrp,(long)xl,(long)yl);
- Text(mrp,&c,1L);
- SetAPen(mrp, (long)ic);
- xl += dx;
- if (xl > real_txmax) xl = real_txmax;
- } else if(mode & INCREMENTAL)
- switch(c){
- case ' ':
- mode |= MOVE;
- mode &= ~LINE;
- break;
- case 'P':
- mode |= LINE;
- mode &= ~MOVE;
- break;
- case 'D':
- yl += 1;
- goto doit;
- case 'E':
- xl += 1;
- yl += 1;
- goto doit;
- case 'A':
- xl += 1;
- goto doit;
- case 'I':
- xl += 1;
- yl -= 1;
- goto doit;
- case 'H':
- yl -= 1;
- goto doit;
- case 'J':
- xl -= 1;
- yl -= 1;
- goto doit;
- case 'B':
- xl -= 1;
- goto doit;
- case 'F':
- xl -= 1;
- yl += 1;
- goto doit;
- default:
- printf("Bad incremental command: %c\n",c);
- break;
- doit:
- if(mode & LINE)
- Draw(mrp,(long)xl,(long)yl);
- else if(mode & MOVE)
- Move(mrp,(long)xl,(long)yl);
- else
- printf("Bad mode: %d\n",mode);
- }
- else{
-
- /* a note here about 4014 graphics, If your graphics software
- drives a Tek 4014 then this will work perfecly well, you
- just will not be able to use the 4096 pixel resolution
- that that big storage tube device offers */
-
- register int tag, data, x, y;
-
- tag = c/32;
- data = c - tag*32;
- switch (tag){
- case 1:
- if (last == 3)
- hix = data*32;
- else
- hiy = data*32;
- break;
- case 2:
- x = hix + data; /* low x always sent so don't save it */
- y = hiy + loy;
- if (t_scale == 0){
- x = (((float)x)*real_txmax)/1024;
- y = (((float)y)*real_tymax)/780;
- }
- x = x/(2-t_interlace);
- y = (real_tymax-1) - (y/(2-t_interlace));
- if(x > real_txmax) x = real_txmax;
- if(x < TXMIN) x = TXMIN;
- if(y > real_tymax) y = real_tymax;
- if(y < TYMIN) y = TYMIN;
- switch (mode){
- case MOVE:
- mode = LINE;
- Move(mrp, (long)x, (long)y);
- break;
- case LINE:
- if (boxmode)
- RectFill(mrp, (long)min((int)xl,(int)x),
- (long)min((int)yl,(int)y), (long)max((int)xl,(int)x),
- (long)max((int)yl,(int)y));
- else
- Draw(mrp, (long)x, (long)y);
- break;
- case POINT:
- WritePixel(mrp, (long)x, (long)y);
- break;
- }
- xl = x;
- yl = y;
- break;
- case 3:
- loy = data;
- break;
- }
- last = tag;
- }
- else switch(c){
- case BEL: /* bell */
- DisplayBeep(NULL);
- break;
- case BS: /* backspace */
- x -= dx;
- if (x < TXMIN) x = TXMIN;
- break;
- case HT: /* cursor right */
- x += dx;
- if (x > real_txmax) x = real_txmax;
- break;
- case LF: /* NL */
- y += dy;
- if (y > real_tymax) y = real_tymax;
- break;
- case VT: /* cursor up */
- y -= dy;
- if (y < TYMIN+dy) y = TYMIN+dy;
- break;
- case CR: /* CR */
- x = TXMIN;
- break;
- case CAN: /* CAN */
- TekOFF();
- boxmode = FALSE;
- break;
- case ESC: /* ESC */
- escmode = TRUE;
- break;
- case FS: /* FS (point-plot) */
- mode = POINT;
- break;
- case GS: /* GS vector */
- mode = MOVE;
- break;
- case US: /* US alpha mode */
- mode = ALPHA;
- break;
- case RS: /* GS vector */
- mode |= INCREMENTAL;
- break;
- default:
- /* TekOFF();
- return FALSE; */
- break;
- } /* end of switch */
- return TRUE;
- }
-
- reset()
- {
- /* mess up the colors */
- COLOR(0L, 0L, 0L, 0L);
- COLOR(1L, 15L, 15L, 15L);
- COLOR(2L, 15L, 0L, 0L);
- COLOR(3L, 0L, 15L, 0L);
- COLOR(4L, 0L, 0L, 15L);
- COLOR(5L, 0L, 15L, 15L);
- COLOR(6L, 15L, 0L, 15L);
- COLOR(7L, 15L, 15L, 0L);
- COLOR(8L, 15L, 8L, 0L);
- COLOR(9L, 8L, 15L, 0L);
- COLOR(10L,0L, 15L, 8L);
- COLOR(11L,0L, 8L, 15L);
- COLOR(12L,8L, 0L, 15L);
- COLOR(13L,15L, 0L, 8L);
- COLOR(14L,5L, 5L, 5L);
- COLOR(15L,10L, 10L, 10L);
-
- clear();
- SetAPen(mrp, 1L);
- }
-
- max(a,b)
- int a,b;
- {
- if(a >= b) return(a);
- return(b);
- }
-
- min(a,b)
- int a,b;
- {
- if(a <= b) return(a);
- return(b);
- }
-
- /*****************************************************************/
- /* Intialize the structure arrays needed for
- /* the Tek menu items
- /*****************************************************************/
- char keycommands[] = " TVEQ";
- char otherkeys[] = "NY";
-
- void
- InitTekItems()
- {
- int n;
-
- for(n=0; n<TekParamsMax; n++) {
- TekItem[n].NextItem = &TekItem[n+1];
- TekItem[n].LeftEdge = 0;
- TekItem[n].TopEdge = 10 * n;
- TekItem[n].Width = 100;
- TekItem[n].Height = 10;
- TekItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- TekItem[n].MutualExclude = 0;
- TekItem[n].ItemFill = (APTR)&TekText[n];
- TekItem[n].SelectFill = NULL;
- TekItem[n].Command = 0;
-
- TekText[n].FrontPen = 0;
- TekText[n].BackPen = 1;
- TekText[n].DrawMode = JAM2;
- TekText[n].LeftEdge = 0;
- TekText[n].TopEdge = 1;
- TekText[n].ITextFont = NULL;
- TekText[n].NextText = NULL;
- }
- TekItem[TekParamsMax - 1].NextItem = NULL;
-
- TekText[0].IText = (UBYTE *)"Scale";
- TekText[1].IText = (UBYTE *)"Screen Depth";
- TekText[2].IText = (UBYTE *)"Interlace";
- TekItem[0].SubItem = TekScaleItem;
- TekItem[1].SubItem = TekDepthItem;
- TekItem[2].SubItem = TekInterlaceItem;
-
- for(n=0; n<TekScaleMax; n++) {
- TekScaleItem[n].NextItem = &TekScaleItem[n+1];
- TekScaleItem[n].LeftEdge = 60;
- TekScaleItem[n].TopEdge = 10 * n;
- TekScaleItem[n].Width = 100;
- TekScaleItem[n].Height = 10;
- TekScaleItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT;
- TekScaleItem[n].MutualExclude = (~(1 << n));
- TekScaleItem[n].ItemFill = (APTR)&TekScaleText[n];
- TekScaleItem[n].SelectFill = NULL;
- TekScaleItem[n].Command = 0;
-
- TekScaleText[n].FrontPen = 0;
- TekScaleText[n].BackPen = 1;
- TekScaleText[n].DrawMode = JAM2;
- TekScaleText[n].LeftEdge = 0;
- TekScaleText[n].TopEdge = 1;
- TekScaleText[n].ITextFont = NULL;
- TekScaleText[n].NextText = NULL;
- }
- TekScaleItem[TekScaleMax - 1].NextItem = NULL;
-
- switch(t_scale) {
- case 0:
- TekScaleItem[0].Flags |= CHECKED;
- break;
- case 1:
- TekScaleItem[1].Flags |= CHECKED;
- break;
- }
-
- TekScaleText[0].IText = (UBYTE *)" 1028x780";
- TekScaleText[1].IText = (UBYTE *)" 640x400";
-
- for(n=0; n<TekDepthMax; n++) {
- TekDepthItem[n].NextItem = &TekDepthItem[n+1];
- TekDepthItem[n].LeftEdge = 60;
- TekDepthItem[n].TopEdge = 10 * n;
- TekDepthItem[n].Width = 60;
- TekDepthItem[n].Height = 10;
- TekDepthItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT;
- TekDepthItem[n].MutualExclude = (~(1 << n));
- TekDepthItem[n].ItemFill = (APTR)&TekDepthText[n];
- TekDepthItem[n].SelectFill = NULL;
- TekDepthItem[n].Command = 0;
-
- TekDepthText[n].FrontPen = 0;
- TekDepthText[n].BackPen = 1;
- TekDepthText[n].DrawMode = JAM2;
- TekDepthText[n].LeftEdge = 0;
- TekDepthText[n].TopEdge = 1;
- TekDepthText[n].ITextFont = NULL;
- TekDepthText[n].NextText = NULL;
- }
- TekDepthItem[TekDepthMax - 1].NextItem = NULL;
-
- TekDepthText[0].IText = (UBYTE *)" 1";
- TekDepthText[1].IText = (UBYTE *)" 2";
- TekDepthText[2].IText = (UBYTE *)" 3";
- TekDepthText[3].IText = (UBYTE *)" 4";
-
- switch(t_depth) {
- case 1:
- TekDepthItem[0].Flags |= CHECKED;
- break;
- case 2:
- TekDepthItem[1].Flags |= CHECKED;
- break;
- case 3:
- TekDepthItem[2].Flags |= CHECKED;
- break;
- case 4:
- TekDepthItem[3].Flags |= CHECKED;
- break;
- }
-
- for(n=0; n<TekInterlaceMax; n++) {
- TekInterlaceItem[n].NextItem = &TekInterlaceItem[n+1];
- TekInterlaceItem[n].LeftEdge = 60;
- TekInterlaceItem[n].TopEdge = 10 * n;
- TekInterlaceItem[n].Width = 60;
- TekInterlaceItem[n].Height = 10;
- TekInterlaceItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT;
- TekInterlaceItem[n].MutualExclude = (~(1 << n));
- TekInterlaceItem[n].ItemFill = (APTR)&TekInterlaceText[n];
- TekInterlaceItem[n].SelectFill = NULL;
- TekInterlaceItem[n].Command = 0;
-
- TekInterlaceText[n].FrontPen = 0;
- TekInterlaceText[n].BackPen = 1;
- TekInterlaceText[n].DrawMode = JAM2;
- TekInterlaceText[n].LeftEdge = 0;
- TekInterlaceText[n].TopEdge = 1;
- TekInterlaceText[n].ITextFont = NULL;
- TekInterlaceText[n].NextText = NULL;
- }
- TekInterlaceItem[TekInterlaceMax - 1].NextItem = NULL;
-
- TekInterlaceText[0].IText = (UBYTE *)" Off";
- TekInterlaceText[1].IText = (UBYTE *)" On";
-
- switch(t_interlace) {
- case 0:
- TekInterlaceItem[0].Flags |= CHECKED;
- break;
- case 1:
- TekInterlaceItem[1].Flags |= CHECKED;
- break;
- }
-
-
- for(n=0; n<TekScreenMax; n++) {
- TekScreenItem[n].NextItem = &TekScreenItem[n+1];
- TekScreenItem[n].LeftEdge = 0;
- TekScreenItem[n].TopEdge = 10 * n;
- TekScreenItem[n].Width = 140;
- TekScreenItem[n].Height = 10;
- TekScreenItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP;
- TekScreenItem[n].MutualExclude = 0;
- TekScreenItem[n].ItemFill = (APTR)&TekScreenText[n];
- TekScreenItem[n].SelectFill = NULL;
- if(n != 0) {
- TekScreenItem[n].Command = keycommands[n];
- TekScreenItem[n].Flags |= COMMSEQ;
- }
- else
- TekScreenItem[n].Command = 0;
-
- TekScreenText[n].FrontPen = 0;
- TekScreenText[n].BackPen = 1;
- TekScreenText[n].DrawMode = JAM2;
- TekScreenText[n].LeftEdge = 0;
- TekScreenText[n].TopEdge = 1;
- TekScreenText[n].ITextFont = NULL;
- TekScreenText[n].NextText = NULL;
- }
- TekScreenItem[TekScreenMax - 1].NextItem = NULL;
-
- TekScreenText[0].IText = (UBYTE *)" TekScreen";
- TekScreenText[1].IText = (UBYTE *)" Tek Front";
- TekScreenText[2].IText = (UBYTE *)" VT Front";
- TekScreenText[3].IText = (UBYTE *)" Erase";
- TekScreenText[4].IText = (UBYTE *)" Quit";
-
- TekScreenItem[0].SubItem = TekSelectItem;
-
- for(n=0; n<TekSelectMax; n++) {
- TekSelectItem[n].NextItem = &TekSelectItem[n+1];
- TekSelectItem[n].LeftEdge = 60;
- TekSelectItem[n].TopEdge = 10 * n;
- TekSelectItem[n].Width = 100;
- TekSelectItem[n].Height = 10;
- TekSelectItem[n].Flags = ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT
- | COMMSEQ;
- TekSelectItem[n].MutualExclude = (~(1 << n));
- TekSelectItem[n].ItemFill = (APTR)&TekSelectText[n];
- TekSelectItem[n].SelectFill = NULL;
- TekSelectItem[n].Command = otherkeys[n];
-
- TekSelectText[n].FrontPen = 0;
- TekSelectText[n].BackPen = 1;
- TekSelectText[n].DrawMode = JAM2;
- TekSelectText[n].LeftEdge = 0;
- TekSelectText[n].TopEdge = 1;
- TekSelectText[n].ITextFont = NULL;
- TekSelectText[n].NextText = NULL;
- }
- TekSelectItem[TekSelectMax - 1].NextItem = NULL;
-
- /* switch(t_on) {
- case 0:
- TekSelectItem[0].Flags |= CHECKED;
- break;
- case 1:
- TekSelectItem[1].Flags |= CHECKED;
- break;
- }
- */
-
- TekSelectItem[t_on].Flags |= CHECKED;
-
- TekSelectText[0].IText = (UBYTE *)" Off";
- TekSelectText[1].IText = (UBYTE *)" On";
- }
-
- /****************************************************************/
- /* The following function inits the Menu structure array with
- /* the tek menu items
- /****************************************************************/
-
- void
- InitTekMenu()
- {
- Menu[0].NextMenu = &tekmenu[0];
- tekmenu[0].NextMenu = &tekmenu[1];
- tekmenu[0].LeftEdge = 80;
- tekmenu[0].TopEdge = 0;
- tekmenu[0].Width = 85;
- tekmenu[0].Height = 10;
- tekmenu[0].Flags = MENUENABLED;
- tekmenu[0].MenuName = "Tek params"; /* text for menu-bar display */
- tekmenu[0].FirstItem = &TekItem[0]; /* pointer to first item in list */
-
- tekmenu[1].NextMenu = NULL;
- tekmenu[1].LeftEdge = 180;
- tekmenu[1].TopEdge = 0;
- tekmenu[1].Width = 60;
- tekmenu[1].Height = 10;
- tekmenu[1].Flags = MENUENABLED;
- tekmenu[1].MenuName = "Screen"; /* text for menu-bar display */
- tekmenu[1].FirstItem = &TekScreenItem[0]; /* pointer to first item in list */
-
- }
-
- void
- t_cmd_scale(n)
- char *n;
- {
- t_scale = atoi(n);
- }
-
- void
- t_cmd_depth(n)
- char *n;
- {
- if(t_depth != atoi(n)) {
- t_depth = atoi(n);
- if(Tek_screen_open == 1) {
- CloseTek();
- TekNewScreen.Depth = t_depth;
- OpenTek(Win->UserPort);
- }
- }
- }
-
- void
- t_cmd_on(n)
- char *n;
- {
- if(t_on != atoi(n)) {
- t_on = atoi(n);
- if(t_on == 0)
- CloseTek();
- else
- OpenTek(Win->UserPort);
- }
- }
-
- void
- t_cmd_interlace(n)
- char *n;
- {
- if(t_interlace != atoi(n)) {
- t_interlace = atoi(n);
- if(Tek_screen_open == 1) {
- CloseTek();
- if(t_interlace == 0)
- TekNewScreen.ViewModes |= ~INTERLACE;
- else
- TekNewScreen.ViewModes |= INTERLACE;
- OpenTek(Win->UserPort);
- }
- }
- }
-
- void
- t_cmd_font_size(n)
- char *n;
- {
- t_font_size = atoi(n);
- }
-