Jspice3
proto.h File Reference

Go to the source code of this file.

Functions

int MFBInfo ()
 
void MFBConvertToHLS (int, int, int)
 
void SetCurrentMFB ()
 
int MFBSetLineStyle ()
 
int MFBSetFillPattern ()
 
int MFBSetChannelMask ()
 
int MFBSetReadMask ()
 
int MFBSetColor ()
 
int MFBSetTextMode ()
 
int MFBSetALUMode (int)
 
int MFBSetCursorColor ()
 
int MFBSetBlinker ()
 
int MFBSetRubberBanding ()
 
int MFBDefineColor ()
 
int MFBDefineFillPattern ()
 
int MFBDefineLineStyle ()
 
void MFBMoveTo ()
 
void MFBDrawLineTo ()
 
void MFBDrawPath ()
 
void MFBLine ()
 
void MFBBox ()
 
void MFBArc ()
 
void MFBCircle ()
 
void MFBFlash ()
 
void MFBPolygon ()
 
void MFBText ()
 
void MFBFlood ()
 
void MFBPixel ()
 
MFBPATHMFBArcPath ()
 
MFBPOLYGONMFBEllipse ()
 
int MFBScaleX ()
 
int MFBScaleY ()
 
int MFBDescaleX ()
 
int MFBDescaleY ()
 
void MFBSetViewport ()
 
void MFBSetWindow ()
 
void MFBNaiveBoxFill ()
 
void MFB_Y_Intercept ()
 
void MFB_X_Intercept ()
 
Bool MFBLineClip ()
 
void MFBPolygonClip ()
 
MFBPATHMFBClipArc ()
 
int MFBPutchar ()
 
int MFBPutstr ()
 
int MFBGetchar ()
 
int MFBUngetchar ()
 
int OldGetchar ()
 
int OldUngetchar ()
 
int MFBUpdate ()
 
int MFBFlushInput ()
 
void MFBAudio ()
 
MFBMFBOpen ()
 
int MFBInitialize ()
 
int MFBInitTTY ()
 
int MFBClose ()
 
int MFBHalt ()
 
int MFBPoint ()
 
char * MFBKeyboard ()
 
char * MFBError ()
 
void MFBMore ()
 
void MFBScroll ()
 
int MFBGetEnt ()
 
int MFBCheckForMCE ()
 
int MFBGetFlag ()
 
char * MFBGetStr ()
 
int MFBGetNum ()
 
int MFBDecode ()
 
int MFBGenCode ()
 

Function Documentation

void MFB_X_Intercept ( )
void MFB_Y_Intercept ( )
void MFBArc ( )
MFBPATH* MFBArcPath ( )
void MFBAudio ( )

Definition at line 265 of file mfbio.c.

266 {
267  /*
268  * Notes:
269  * Rings the Bell.
270  */
271  if(MFBFORMAT.audio == NULL || *MFBFORMAT.audio == 0) {
272  /* cntrl-g by default */
273  if(MFBCurrent->fileDesc == 1)
274  MFBPutchar( '\07' );
275  else
276  (void) putchar( '\07' );
277  }
278  else{
279  MFBGenCode(MFBFORMAT.audio);
280  }
281 }
#define MFBFORMAT
Definition: mfbio.c:79
MFBPutchar(char c)
Definition: mfbio.c:121
int fileDesc
Definition: mfb.h:276
#define NULL
Definition: spdefs.h:121
MFB * MFBCurrent
Definition: mfbopen.c:13
void MFBGenCode(char *PM)
Definition: mfbgnc.c:99
void MFBBox ( )
int MFBCheckForMCE ( )
void MFBCircle ( )
MFBPATH* MFBClipArc ( )
int MFBClose ( )

Definition at line 193 of file mfbopen.c.

195 {
196  int i;
197  struct ctext *cl;
198  char palette[16];
199 
200  if (pc.mfbMODE != 4)
201  MFBPointerClose();
202  MFBSetColor(0);
203  MFBFlood();
205  if (pc.video_mode < 4 || pc.video_mode == 7
206 #ifdef PARADISE
207  || (pc.video_mode < 0x58 && pc.video_mode > 0x53)
208 #endif
209  )
211 
212  if (Clist != NULL) {
213  /* have to reset some things for old graphics mode */
214  pc = *Clist->pc;
215  free(Clist->pc);
216  for (i = 0; i < 16; i++) palette[i] = (char) i;
217  vga_set_cpblock(palette);
218  if (pc.mfbMODE != 4)
219  MFBPointerInit();
220  cl = Clist;
221  Clist = Clist->next;
222  free(cl);
223  }
224  else
225  pc.mfbMODE = 0;
226 
227  return (MFBOK);
228 }
void load_font(int scanheight)
Definition: loadfont.c:11
Definition: mfbopen.c:18
#define MFBOK
Definition: mfb.h:491
struct ctext * next
Definition: mfbopen.c:20
static struct ctext * Clist
Definition: mfbopen.c:22
int mfbMODE
Definition: mfbp.h:41
int video_mode
Definition: mfbp.h:40
#define NULL
Definition: spdefs.h:121
void MFBPointerInit()
Definition: mfbcursr.c:440
struct mfbpc pc
Definition: mfbopen.c:14
void MFBPointerClose()
Definition: mfbcursr.c:481
int MFBSetColor()
void MFBFlood()
Definition: mfbflood.c:21
struct mfbpc * pc
Definition: mfbopen.c:19
static void reset_vmode()
void free()
void vga_set_cpblock()
int scan_height
Definition: mfbp.h:42
void MFBConvertToHLS ( int  ,
int  ,
int   
)

Definition at line 158 of file mfbbasic.c.

165 {
166  double rrr,ggg,bbb,rr,gg,bb,sum,dif,mx,mn,lit,intensity;
167  intensity = (double)MFBCurrent->maxIntensity;
168  /* RGB is normalized to 1000 */
169  rr = ((double) r)/1000.0;
170  gg = ((double) g)/1000.0;
171  bb = ((double) b)/1000.0;
172  mx = rr;
173  if(mx < gg) mx = gg;
174  if(mx < bb) mx = bb;
175  mn = rr;
176  if(mn > gg) mn = gg;
177  if(mn > bb) mn = bb;
178  sum = mx + mn; dif = mx - mn;
179  if(dif != 0.0){
180  rrr = (mx - rr)/dif; ggg = (mx - gg)/dif; bbb = (mx - bb)/dif;
181  }
182  /* lightness calculation */
183  lit = sum/2.0;
184  /* saturation calculation */
185  if(mx == mn) MFBCurrent->T = 0;
186  else if(lit <= .5) MFBCurrent->T = (int)(intensity * dif/sum);
187  else MFBCurrent->T = (int)((intensity * dif)/(2.0 - sum));
188  /* hue calculation */
189  if(MFBCurrent->T == 0) MFBCurrent->Y = 0;
190  else if(rr == mx) MFBCurrent->Y = (int)(60.0 * (2.0 + bbb - ggg));
191  else if(gg == mx) MFBCurrent->Y = (int)(60.0 * (4.0 + rrr - bbb));
192  else MFBCurrent->Y = (int)(60.0 * (6.0 + ggg - rrr));
193  MFBCurrent->Z = (int)(intensity * lit);
194 }
int maxIntensity
Definition: mfb.h:234
int T
Definition: mfb.h:222
int Y
Definition: mfb.h:222
int Z
Definition: mfb.h:222
MFB * MFBCurrent
Definition: mfbbasic.c:31
Definition: cddefs.h:162
Definition: cddefs.h:227
int MFBDecode ( )
int MFBDefineColor ( )
int MFBDefineFillPattern ( )
int MFBDefineLineStyle ( )
int MFBDescaleX ( )
int MFBDescaleY ( )
void MFBDrawLineTo ( )
void MFBDrawPath ( )
MFBPOLYGON* MFBEllipse ( )
char* MFBError ( )
void MFBFlash ( )
void MFBFlood ( )

Definition at line 21 of file mfbflood.c.

22 {
23  if (pc.mfbMODE & 2)
24  mode_2_flood();
25  else
26  mode_1_flood();
27 }
int mfbMODE
Definition: mfbp.h:41
static void mode_2_flood()
Definition: mfbflood.c:52
static void mode_1_flood()
Definition: mfbflood.c:31
struct mfbpc pc
Definition: mfbopen.c:14
int MFBFlushInput ( )

Definition at line 240 of file mfbio.c.

241 {
242 #if defined(HAVE_SGTTY_H) || defined(HAVE_TERMIO_H)
243  /*
244  * In the UNIX file system, all pending input is flushed whenever
245  * ioctl is called with the TIOCSETP option.
246  */
247 
248  /* the isatty() is necessary because user may be piping output */
249  if(isatty(MFBCurrent->fileDesc)){
250  if (iflush(MFBCurrent->fileDesc) < 0)
251  return(MFBBADOPT);
252  }
253 
254  if(MFBCurrent->fileDesc != 1 && isatty(1)){
255  if(iflush(1) < 0)
256  return(MFBBADOPT);
257  }
258 #endif
259  return(MFBOK);
260 }
#define MFBOK
Definition: mfb.h:491
int fileDesc
Definition: mfb.h:276
#define MFBBADOPT
Definition: mfb.h:510
MFB * MFBCurrent
Definition: mfbopen.c:13
int MFBGenCode ( )
int MFBGetchar ( )

Definition at line 259 of file mfbopen.c.

262 {
263  int k;
264 
265  k = (getch() & 0xff);
266  if (!k) k = 256 + getch();
267  return (k);
268 }
int MFBGetEnt ( )
int MFBGetFlag ( )
int MFBGetNum ( )
char* MFBGetStr ( )
int MFBHalt ( )

Definition at line 232 of file mfbopen.c.

234 {
235  if (Clist != NULL)
236  return (MFBBADDEV);
237  if (pc.mfbMODE != 4)
238  MFBPointerClose();
240  if (pc.video_mode < 4 || pc.video_mode == 7
241 #ifdef PARADISE
242  || (pc.video_mode < 0x58 && pc.video_mode > 0x53)
243 #endif
244  )
246 
247  return (MFBOK);
248 }
void load_font(int scanheight)
Definition: loadfont.c:11
#define MFBBADDEV
Definition: mfb.h:509
#define MFBOK
Definition: mfb.h:491
static struct ctext * Clist
Definition: mfbopen.c:22
int mfbMODE
Definition: mfbp.h:41
int video_mode
Definition: mfbp.h:40
#define NULL
Definition: spdefs.h:121
struct mfbpc pc
Definition: mfbopen.c:14
void MFBPointerClose()
Definition: mfbcursr.c:481
static void reset_vmode()
int scan_height
Definition: mfbp.h:42
int MFBInfo ( )
int MFBInitialize ( )

Definition at line 168 of file mfbopen.c.

170 {
171  char palette[16];
172  int i;
173 
174  if (Clist != NULL)
175  return (MFBBADDEV);
176  if (mfb_vmode == 6 || mfb_vmode == 9)
177  set_vmode(mfb_vmode,&pc.xsize,&pc.ysize,pc.mfbMODE==2 ? 256 : 16);
178  else
180 
181  if (pc.mfbMODE != 4)
182  MFBPointerInit();
183  for (i = 0; i < 16; i++) palette[i] = (char) i;
184  vga_set_cpblock(palette);
186  vga_set_cblock((char(*)[3])pc.colormap,0,16);
187  vga_get_cblock((char(*)[3])pc.colormap[16],16,240);
188  return (MFBOK);
189 }
#define MFBBADDEV
Definition: mfb.h:509
#define MFBOK
Definition: mfb.h:491
static struct ctext * Clist
Definition: mfbopen.c:22
int mfbMODE
Definition: mfbp.h:41
void vga_set_cblock()
int ysize
Definition: mfbp.h:54
void vga_get_cblock()
#define NULL
Definition: spdefs.h:121
void MFBPointerInit()
Definition: mfbcursr.c:440
static void set_vmode()
struct mfbpc pc
Definition: mfbopen.c:14
void set_default_colors()
Definition: mfbopen.c:372
int xsize
Definition: mfbp.h:53
static void reset_vmode()
unsigned char colormap[256][3]
Definition: mfbp.h:71
static int mfb_vmode
Definition: mfbopen.c:24
void vga_set_cpblock()
int MFBInitTTY ( )

Definition at line 653 of file mfbio.c.

654 {
655  /*
656  * Notes:
657  * Initialize TTY and save current state in MFB structure.
658  * Also,the output buffer is flushed.
659  */
660  long litout = 1;
661 
662  if(MFBCurrent->deviceType != TTY)
663  return(MFBBADTTY);
665  if(!MFBCurrent->ttyIsSet) {
666  if(*MFBCurrent->name == 0) { /* => stdout not in /dev */
667  return(MFBBADTTY);
668  }
669  /*
670  * Set keyboard tty options if necessary.
671  * We put the terminal in CBREAK so that any keyboard
672  * input will be echoed on the graphics display.
673  */
674 
675  /* the isatty() is necessary because user may be piping output */
676  if(MFBCurrent->fileDesc != 1 && isatty(1)){
677  /*
678  * Disable user messages by changing the fstats of stdin.
679  * Yes, this is necessary; the user may open his own terminal
680  * as the graphics device in which case user messages will
681  * still interrupt the graphics via stdio.
682  */
683  if(fstat(1,&MFBCurrent->oldstat.kybrdstat) < 0)
684  return(MFBBADOPT);
685  /* 0022 corresponds to write by group and others */
686  /* This is bad -- Wayne
687  if(chmod(ttyname(2),MFBCurrent->oldstat.kybrdstat.st_mode & ~0022)
688  < 0) return(MFBBADOPT);
689  */
690  if(ioget(1, &MFBCurrent->kybrdTtyb.oldttyb) < 0)
691  return(MFBBADOPT);
692  if(iogetl(1, &MFBCurrent->oldstat.kybrdttyw) < 0)
693  return(MFBBADOPT);
695 
696  iosetmfb_flags(MFBCurrent->kybrdTtyb.newttyb);
697 #ifdef notdef
698  MFBCurrent->kybrdTtyb.newttyb.sg_erase = 8; /* ctrl-h */
699  MFBCurrent->kybrdTtyb.newttyb.sg_kill = 24; /* ctrl-x */
700 #endif
701  if(ioset(1, &MFBCurrent->kybrdTtyb.newttyb) < 0)
702  return(MFBBADOPT);
703  }
704  /*
705  * Set graphics device tty options
706  */
707 
708  /* the isatty() is necessary because user may be piping output */
709  if(isatty(MFBCurrent->fileDesc)){
710  /* Disable user messages */
711  if(stat(MFBCurrent->name,&MFBCurrent->oldstat.graphstat) < 0)
712  return(MFBBADOPT);
713  /* 0022 corresponds to write by group and others */
714  /*
715  if(chmod(MFBCurrent->name,
716  MFBCurrent->oldstat.graphstat.st_mode & ~0022) < 0)
717  return(MFBBADOPT);
718  */
719  if(ioget(MFBCurrent->fileDesc, &MFBCurrent->graphTtyb.oldttyb) < 0)
720  return(MFBBADOPT);
721  if(iogetl(MFBCurrent->fileDesc, &MFBCurrent->oldstat.graphttyw) < 0)
722  return(MFBBADOPT);
723 
725  iosetmfb_flags(MFBCurrent->graphTtyb.newttyb);
726 #ifdef notdef
727  /* Speed should not be messed with */
728  if(MFBCurrent->fileDesc != 1){
729  if(MFBCurrent->graphTtyb.newttyb.sg_ispeed < B1200)
730  MFBCurrent->graphTtyb.newttyb.sg_ispeed = B9600;
731  if(MFBCurrent->graphTtyb.newttyb.sg_ospeed < B1200)
732  MFBCurrent->graphTtyb.newttyb.sg_ospeed = B9600;
733  }
734 #endif
735  if(MFBCurrent->litout){
736  if (iolitout(MFBCurrent->fileDesc,
738  return(MFBBADOPT);
739  }
740  if(MFBCurrent->raw)
741  iosetraw(MFBCurrent->graphTtyb.newttyb);
742 #ifdef notdef
743  /* XXX No one should be doing this */
744  MFBCurrent->graphTtyb.newttyb.sg_erase = 8; /* ctrl-h */
745  MFBCurrent->graphTtyb.newttyb.sg_kill = 24; /* ctrl-x */
746 #endif
747  if(ioset(MFBCurrent->fileDesc, &MFBCurrent->graphTtyb.newttyb) < 0)
748  return(MFBBADOPT);
749  }
757  }
758  else{
761  }
762  MFBCurrent->ttyIsSet = true;
763  }
764  return(MFBOK);
765 }
int OldGetchar()
Definition: mfbio.c:189
struct stat graphstat
Definition: mfb.h:135
Bool keyboardBool
Definition: mfb.h:322
int(* outstr)()
Definition: mfb.h:300
MFBSAVETTYB kybrdTtyb
Definition: mfb.h:366
int kybrdttyw
Definition: mfb.h:134
int graphttyw
Definition: mfb.h:133
int MFBGetchar()
Definition: mfbio.c:158
int numTtyBuffer
Definition: mfb.h:277
#define MFBOK
Definition: mfb.h:491
int(* kybrd_ungetchar)()
Definition: mfb.h:298
int newttyb
Definition: mfb.h:125
MFBPutstr(char *c, int n)
Definition: mfbio.c:135
MFBPutchar(char c)
Definition: mfbio.c:121
char * name
Definition: mfb.h:291
int MFBUngetchar()
Definition: mfbio.c:182
Bool litout
Definition: mfb.h:349
MFBSAVESTAT oldstat
Definition: mfb.h:369
int fileDesc
Definition: mfb.h:276
MFBSAVETTYB graphTtyb
Definition: mfb.h:363
int(* kybrd_getchar)()
Definition: mfb.h:296
#define MFBBADOPT
Definition: mfb.h:510
int oldttyb
Definition: mfb.h:125
MFB * MFBCurrent
Definition: mfbopen.c:13
int(* dsply_ungetchar)()
Definition: mfb.h:297
Bool ttyIsSet
Definition: mfb.h:351
#define TTY
Definition: mfb.h:37
char deviceType
Definition: mfb.h:375
Bool raw
Definition: mfb.h:350
#define MFBBADTTY
Definition: mfb.h:497
int(* dsply_getchar)()
Definition: mfb.h:295
int OldUngetchar()
Definition: mfbio.c:212
struct stat kybrdstat
Definition: mfb.h:136
int(* outchar)()
Definition: mfb.h:299
char* MFBKeyboard ( )
void MFBLine ( )
Bool MFBLineClip ( )
void MFBMore ( )
void MFBMoveTo ( )
void MFBNaiveBoxFill ( )
MFB* MFBOpen ( )
void MFBPixel ( )
int MFBPoint ( )
void MFBPolygon ( )
void MFBPolygonClip ( )
int MFBPutchar ( )
int MFBPutstr ( )
int MFBScaleX ( )
int MFBScaleY ( )
void MFBScroll ( )
int MFBSetALUMode ( int  )

Definition at line 23 of file mfbalu.c.

26 {
27  switch (mode) {
28  case MFBALUJAM:
29  pc.alumode = 0x3;
30  break;
31  case MFBALUOR:
32  pc.alumode = 0x1003;
33  break;
34  case MFBALUNOR:
35  pc.alumode = 0x3;
36  break;
37  case MFBALUEOR:
38  pc.alumode = 0x1803;
39  break;
40  case MFBALUAND:
41  pc.alumode = 0x803;
42  break;
43  default:
44  return (MFBBADALU);
45  }
46  return (MFBOK);
47 }
#define MFBALUEOR
Definition: mfb.h:448
#define MFBOK
Definition: mfb.h:491
#define MFBALUJAM
Definition: mfb.h:445
#define MFBALUNOR
Definition: mfb.h:447
#define MFBBADALU
Definition: mfb.h:516
int alumode
Definition: mfbp.h:56
#define MFBALUOR
Definition: mfb.h:446
struct mfbpc pc
Definition: mfbopen.c:14
int MFBSetBlinker ( )
int MFBSetChannelMask ( )
int MFBSetColor ( )
int MFBSetCursorColor ( )
int MFBSetFillPattern ( )
int MFBSetLineStyle ( )
int MFBSetReadMask ( )
int MFBSetRubberBanding ( )
int MFBSetTextMode ( )
void MFBSetViewport ( )
void MFBSetWindow ( )
void MFBText ( )
int MFBUngetchar ( )

Definition at line 182 of file mfbio.c.

183 {
184  MFBsaveflg++;
185 }
static int MFBsaveflg
Definition: mfbio.c:76
int MFBUpdate ( )

Definition at line 252 of file mfbopen.c.

253 {
254  return (MFBOK);
255 }
#define MFBOK
Definition: mfb.h:491
int OldGetchar ( )

Definition at line 189 of file mfbio.c.

190 {
191  /*
192  * Notes:
193  * If the graphics display does not have a keyboard, mfb
194  * will use the standard getchar routine to acquire input
195  * from the user's terminal.
196  */
197  static char c;
198  if( Oldsaveflg != 0 )
199  Oldsaveflg = 0;
200  else{
201 #ifdef vms
202  c = dev_getchar();
203 #else
204  c = getchar();
205 #endif
206  }
207  return( c );
208 }
static double c
Definition: vectors.c:16
static int Oldsaveflg
Definition: mfbio.c:77
int OldUngetchar ( )

Definition at line 212 of file mfbio.c.

213 {
214  Oldsaveflg++;
215 }
static int Oldsaveflg
Definition: mfbio.c:77
void SetCurrentMFB ( )