C
C fgraph.fi - declare constants and functions for graphics library
C
C     Copyright (c) 1987-1993 Microsoft Corporation.  All rights reserved.
C
C Purpose:
C     This file declares the graphics library functions and
C     the manifest constants that are used with them.
C

$NOTRUNCATE
$NOTSTRICT

C     User-visible declarations for FORTRAN Graphics Library

	INTERFACE TO FUNCTION arc(x1,y1,x2,y2,x3,y3,x4,y4)
	INTEGER*2 arc[FAR,C,ALIAS:"__arc"],x1,y1,x2,y2,x3,y3,x4,y4
	END

	INTERFACE TO FUNCTION arc_w(wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4)
	INTEGER*2 arc_w[FAR,C,ALIAS:"__arc_w"]
	DOUBLE PRECISION wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4
	END

	INTERFACE TO FUNCTION getarcinfo(lpstart,lpend,lppaint)
	INTEGER*2 getarcinfo[FAR,C,ALIAS:"__getarcinfo"]
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/lpstart[FAR,REFERENCE]
	RECORD/xycoord/lpend[FAR,REFERENCE]
	RECORD/xycoord/lppaint[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + clearscreen[FAR,C,ALIAS:"__clearscreen"](area)
	INTEGER*2 area
	END

	INTERFACE TO FUNCTION displaycursor(toggle)
	INTEGER*2 displaycursor[FAR,C,ALIAS:"__displaycursor"],toggle
	END

	INTERFACE TO FUNCTION ellipse(control,x1,y1,x2,y2)
	INTEGER*2 ellipse[FAR,C,ALIAS:"__ellipse"],control,x1,y1,x2,y2
	END

	INTERFACE TO FUNCTION ellipse_w(control,wx1,wy1,wx2,wy2)
	INTEGER*2 ellipse_w[FAR,C,ALIAS:"__ellipse_w"],control
	DOUBLE PRECISION wx1,wy1,wx2,wy2
	END

	INTERFACE TO FUNCTION floodfill(x,y,boundary)
	INTEGER*2 floodfill[FAR,C,ALIAS:"__floodfill"],x,y,boundary
	END

	INTERFACE TO FUNCTION floodfill_w(wx1,wy1,boundary)
	INTEGER*2 floodfill_w[FAR,C,ALIAS:"__floodfill_w"],boundary
	DOUBLE PRECISION wx1,wy1
	END

	INTERFACE TO FUNCTION getactivepage()
	INTEGER*2 getactivepage[FAR,C,ALIAS:"__getactivepage"]
	END

	INTERFACE TO FUNCTION getbkcolor()
	INTEGER*4 getbkcolor[FAR,C,ALIAS:"__getbkcolor"]
	END

	INTERFACE TO FUNCTION getcolor()
	INTEGER*2 getcolor[FAR,C,ALIAS:"__getcolor"]
	END

	INTERFACE TO SUBROUTINE
     + getcurrentposition[FAR,C,ALIAS:"__f_getcurrentposition"](s)
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE 
     + getcurrentposition_w[FAR,C,ALIAS:"__f_getcurrentposition_wxy"](s)
	STRUCTURE/wxycoord/
	  DOUBLE PRECISION wx
	  DOUBLE PRECISION wy
	END STRUCTURE
	RECORD/wxycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + getfillmask[FAR,C,ALIAS:"__getfillmask"](mask)
	INTEGER*1 mask[FAR,REFERENCE](8)
	END

	INTERFACE TO SUBROUTINE
     + getimage[FAR,C,ALIAS:"__getimage"](x1,y1,x2,y2,image)
	INTEGER*2 x1,y1,x2,y2
	INTEGER*1 image[FAR,REFERENCE](*)
	END

	INTERFACE TO SUBROUTINE
     + getimage_w[FAR,C,ALIAS:"__getimage_w"](wx1,wy1,wx2,wy2,image)
	DOUBLE PRECISION wx1,wy1,wx2,wy2
	INTEGER*1 image[FAR,REFERENCE](*)
	END

	INTERFACE TO FUNCTION getlinestyle()
	INTEGER*2 getlinestyle[FAR,C,ALIAS:"__getlinestyle"]
	END

	INTERFACE TO SUBROUTINE
     + getphyscoord[FAR,C,ALIAS:"__f_getphyscoord"](x,y,s)
	INTEGER*2 x,y
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION getpixel(x,y)
	INTEGER*2 getpixel[FAR,C,ALIAS:"__getpixel"],x,y
	END

	INTERFACE TO FUNCTION getpixel_w(wx,wy)
	INTEGER*2 getpixel_w[FAR,C,ALIAS:"__getpixel_w"]
	DOUBLE PRECISION wx,wy
	END

	INTERFACE TO FUNCTION gettextcolor()
	INTEGER*2 gettextcolor[FAR,C,ALIAS:"__gettextcolor"]
	END

	INTERFACE TO FUNCTION gettextcursor()
	INTEGER*2 gettextcursor[FAR,C,ALIAS:"__gettextcursor"]
	END

	INTERFACE TO SUBROUTINE
     + gettextposition[FAR,C,ALIAS:"__f_gettextposition"](s)
	STRUCTURE/rccoord/
	  INTEGER*2 row
	  INTEGER*2 col
	END STRUCTURE
	RECORD/rccoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + gettextwindow[FAR,C,ALIAS:"__gettextwindow"](r1,c1,r2,c2)
	INTEGER*2 r1[FAR,REFERENCE],c1[FAR,REFERENCE]
	INTEGER*2 r2[FAR,REFERENCE],c2[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + getvideoconfig[FAR,C,ALIAS:"__getvideoconfig"](s)
	STRUCTURE/videoconfig/
	  INTEGER*2 numxpixels       ! number of pixels on X axis
	  INTEGER*2 numypixels       ! number of pixels on Y axis
	  INTEGER*2 numtextcols      ! number of text columns available
	  INTEGER*2 numtextrows      ! number of text rows available
	  INTEGER*2 numcolors        ! number of actual colors
	  INTEGER*2 bitsperpixel     ! number of bits per pixel
	  INTEGER*2 numvideopages    ! number of available video pages
	  INTEGER*2 mode             ! current video mode
	  INTEGER*2 adapter          ! active display adapter
	  INTEGER*2 monitor          ! active display monitor
	  INTEGER*2 memory           ! adapter video memory in K bytes
	END STRUCTURE
	RECORD/videoconfig/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + getviewcoord[FAR,C,ALIAS:"__f_getviewcoord"](x,y,s)
	INTEGER*2 x,y
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + getviewcoord_w[FAR,C,ALIAS:"__f_getviewcoord_w"](wx,wy,s)
	DOUBLE PRECISION wx,wy
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION getvisualpage()
	INTEGER*2 getvisualpage[FAR,C,ALIAS:"__getvisualpage"]
	END

	INTERFACE TO SUBROUTINE
     + getwindowcoord[FAR,C,ALIAS:"__f_getwindowcoord"](x,y,s)
	INTEGER*2 x,y
	STRUCTURE/wxycoord/
	  DOUBLE PRECISION wx
	  DOUBLE PRECISION wy
	END STRUCTURE
	RECORD/wxycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION getwritemode()
	INTEGER*2 getwritemode[FAR,C,ALIAS:"__getwritemode"]
	END

	INTERFACE TO FUNCTION grstatus()
	INTEGER*2 grstatus[FAR,C,ALIAS:"__grstatus"]
	END

	INTERFACE TO FUNCTION imagesize(x1,y1,x2,y2)
	INTEGER*4 imagesize[FAR,C,ALIAS:"__imagesize"]
	INTEGER*2 x1,y1,x2,y2
	END

	INTERFACE TO FUNCTION imagesize_w(wx1,wy1,wx2,wy2)
	INTEGER*4 imagesize_w[FAR,C,ALIAS:"__imagesize_w"]
	DOUBLE PRECISION wx1,wy1,wx2,wy2
	END

	INTERFACE TO FUNCTION lineto(x,y)
	INTEGER*2 lineto[FAR,C,ALIAS:"__lineto"],x,y
	END

	INTERFACE TO FUNCTION lineto_w(wx,wy)
	INTEGER*2 lineto_w[FAR,C,ALIAS:"__lineto_w"]
	DOUBLE PRECISION wx,wy
	END

	INTERFACE TO SUBROUTINE
     + moveto[FAR,C,ALIAS:"__f_moveto"](x,y,s)
	INTEGER*2 x,y
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + moveto_w[FAR,C,ALIAS:"__f_moveto_w"](wx,wy,s)
	DOUBLE PRECISION wx,wy
	STRUCTURE/wxycoord/
	  DOUBLE PRECISION wx
	  DOUBLE PRECISION wy
	END STRUCTURE
	RECORD/wxycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + outtext[FAR,C,ALIAS:"__f_outtext"](text)
	CHARACTER*(*) text[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION pie(i,x1,y1,x2,y2,x3,y3,x4,y4)
	INTEGER*2 pie[FAR,C,ALIAS:"__pie"],i,x1,y1,x2,y2,x3,y3,x4,y4
	END

	INTERFACE TO FUNCTION pie_w(i,wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4)
	INTEGER*2 pie_w[FAR,C,ALIAS:"__pie_w"],i
	DOUBLE PRECISION wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4
	END

	INTERFACE TO FUNCTION polygon(control,lppoints,cpoints)
	INTEGER*2 polygon[FAR,C,ALIAS:"__polygon"],control,cpoints
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/lppoints[FAR,REFERENCE](*)
	END

	INTERFACE TO FUNCTION polygon_w(control,lppoints,cpoints)
	INTEGER*2 polygon_w[FAR,C,ALIAS:"__polygon_w"],control,cpoints
	STRUCTURE/wxycoord/
	  DOUBLE PRECISION wx
	  DOUBLE PRECISION wy
	END STRUCTURE
	RECORD/wxycoord/lppoints[FAR,REFERENCE](*)
	END

	INTERFACE TO SUBROUTINE
     + putimage[FAR,C,ALIAS:"__putimage"](x,y,image,action)
	INTEGER*2 x,y,action
	INTEGER*1 image[FAR,REFERENCE](*)
	END

	INTERFACE TO SUBROUTINE
     + putimage_w[FAR,C,ALIAS:"__putimage_w"](wx,wy,image,action)
	DOUBLE PRECISION wx,wy
	INTEGER*1 image[FAR,REFERENCE](*)
	INTEGER*2 action
	END

	INTERFACE TO FUNCTION rectangle(control,x1,y1,x2,y2)
	INTEGER*2 rectangle[FAR,C,ALIAS:"__rectangle"]
	INTEGER*2 control,x1,y1,x2,y2
	END

	INTERFACE TO FUNCTION rectangle_w(control,wx1,wy1,wx2,wy2)
	INTEGER*2 rectangle_w[FAR,C,ALIAS:"__rectangle_w"],control
	DOUBLE PRECISION wx1,wy1,wx2,wy2
	END

	INTERFACE TO FUNCTION remappalette(index,color)
	INTEGER*4 remappalette[FAR,C,ALIAS:"__remappalette"],color
	INTEGER*2 index
	END

	INTERFACE TO FUNCTION remapallpalette(colors)
	INTEGER*2 remapallpalette[FAR,C,ALIAS:"__remapallpalette"]
	INTEGER*4 colors[FAR,REFERENCE](*)
	END

	INTERFACE TO SUBROUTINE
     + scrolltextwindow[FAR,C,ALIAS:"__scrolltextwindow"](rows)
	INTEGER*2 rows
	END

	INTERFACE TO FUNCTION selectpalette(number)
	INTEGER*2 selectpalette[FAR,C,ALIAS:"__selectpalette"],number
	END

	INTERFACE TO FUNCTION setactivepage(page)
	INTEGER*2 setactivepage[FAR,C,ALIAS:"__setactivepage"],page
	END

	INTERFACE TO FUNCTION setbkcolor(color)
	INTEGER*4 setbkcolor[FAR,C,ALIAS:"__setbkcolor"],color
	END

	INTERFACE TO SUBROUTINE
     + setcliprgn[FAR,C,ALIAS:"__setcliprgn"](x1,y1,x2,y2)
	INTEGER*2 x1,y1,x2,y2
	END

	INTERFACE TO FUNCTION setcolor(color)
	INTEGER*2 setcolor[FAR,C,ALIAS:"__setcolor"]
	INTEGER*2 color
	END

	INTERFACE TO SUBROUTINE
     + setfillmask[FAR,C,ALIAS:"__setfillmask"](mask)
	INTEGER*1 mask[FAR,REFERENCE](8)
	END

	INTERFACE TO SUBROUTINE
     + setlinestyle[FAR,C,ALIAS:"__setlinestyle"](mask)
	INTEGER*2 mask
	END

	INTERFACE TO FUNCTION setpixel(x,y)
	INTEGER*2 setpixel[FAR,C,ALIAS:"__setpixel"],x,y
	END

	INTERFACE TO FUNCTION setpixel_w(wx,wy)
	INTEGER*2 setpixel_w[FAR,C,ALIAS:"__setpixel_w"]
	DOUBLE PRECISION wx,wy
	END

	INTERFACE TO FUNCTION settextcolor(index)
	INTEGER*2 settextcolor[FAR,C,ALIAS:"__settextcolor"],index
	END

	INTERFACE TO FUNCTION settextcursor(attr)
	INTEGER*2 settextcursor[FAR,C,ALIAS:"__settextcursor"],attr
	END

	INTERFACE TO SUBROUTINE
     + settextposition[FAR,C,ALIAS:"__f_settextposition"](row,col,s)
	INTEGER*2 row,col
	STRUCTURE/rccoord/
	  INTEGER*2 row
	  INTEGER*2 col
	END STRUCTURE
	RECORD/rccoord/s[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION settextrows(rows)
	INTEGER*2 settextrows[FAR,C,ALIAS:"__settextrows"],rows
	END

	INTERFACE TO SUBROUTINE
     + settextwindow[FAR,C,ALIAS:"__settextwindow"](r1,c1,r2,c2)
	INTEGER*2 r1,c1,r2,c2
	END

	INTERFACE TO FUNCTION setvideomode(mode)
	INTEGER*2 setvideomode[FAR,C,ALIAS:"__setvideomode"],mode
	END

	INTERFACE TO FUNCTION setvideomoderows(mode,rows)
	INTEGER*2 setvideomoderows[FAR,C,ALIAS:"__setvideomoderows"]
	INTEGER*2 mode,rows
	END

	INTERFACE TO SUBROUTINE
     + setvieworg[FAR,C,ALIAS:"__f_setvieworg"](x,y,s)
	INTEGER*2 x,y
	STRUCTURE/xycoord/
	  INTEGER*2 xcoord
	  INTEGER*2 ycoord
	END STRUCTURE
	RECORD/xycoord/s[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + setviewport[FAR,C,ALIAS:"__setviewport"](x1,y1,x2,y2)
	INTEGER*2 x1,y1,x2,y2
	END

	INTERFACE TO FUNCTION setvisualpage(page)
	INTEGER*2 setvisualpage[FAR,C,ALIAS:"__setvisualpage"],page
	END

	INTERFACE TO FUNCTION setwindow(finvert,wx1,wy1,wx2,wy2)
	INTEGER*2 setwindow[FAR,C,ALIAS:"__setwindow"]
	LOGICAL*2 finvert
	DOUBLE PRECISION wx1,wy1,wx2,wy2
	END

	INTERFACE TO FUNCTION setwritemode(wmode)
	INTEGER*2 setwritemode[FAR,C,ALIAS:"__setwritemode"],wmode
	END

	INTERFACE TO FUNCTION wrapon(option)
	INTEGER*2 wrapon[FAR,C,ALIAS:"__wrapon"],option
	END

C     FONTS

	INTERFACE TO FUNCTION getfontinfo(fi)
	INTEGER*2 getfontinfo[FAR,C,ALIAS:"__f_getfontinfo"]
	STRUCTURE/fontinfo/
	  INTEGER*2 type                ! b0 set = vector,clear = bit map
	  INTEGER*2 ascent      ! pix dist from top to baseline
	  INTEGER*2 pixwidth    ! character width in pixels, 0=prop
	  INTEGER*2 pixheight   ! character height in pixels
	  INTEGER*2 avgwidth    ! average character width in pixels
	  CHARACTER*81 filename   ! file name including path
	  CHARACTER*32 facename   ! font name
	END STRUCTURE
	RECORD/fontinfo/fi[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION getgtextextent(text)
	INTEGER*2 getgtextextent[FAR,C,ALIAS:"__f_getgtextextent"]
	CHARACTER*(*) text[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + getgtextvector[FAR,C,ALIAS:"__f_getgtextvector"](x,y)
	INTEGER*2 x[FAR,REFERENCE],y[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + outgtext[FAR,C,ALIAS:"__f_outgtext"](text)
	CHARACTER*(*) text[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION registerfonts(filename)
	INTEGER*2 registerfonts[FAR,C,ALIAS:"__f_registerfonts"]
	CHARACTER*(*) filename[FAR,REFERENCE]
	END

	INTERFACE TO FUNCTION setfont(options)
	INTEGER*2 setfont[FAR,C,ALIAS:"__f_setfont"]
	CHARACTER*(*) options[FAR,REFERENCE]
	END

	INTERFACE TO SUBROUTINE
     + setgtextvector[FAR,C,ALIAS:"__setgtextvector"](x,y)
	INTEGER*2 x,y
	END

	INTERFACE TO SUBROUTINE
     + unregisterfonts[FAR,C,ALIAS:"__unregisterfonts"]()
	END

C     QuickWin Graphics API's
	
	INTERFACE TO FUNCTION INCHARQQ()
	INTEGER*2 INCHARQQ[FAR,C,ALIAS:"__inchar"]
	END

	INTERFACE TO FUNCTION WGOPENQQ(name)
	INTEGER*2 WGOPENQQ[FAR,C,ALIAS:"__wgopen"]
	CHARACTER*(*) name[REFERENCE]
	END

	INTERFACE TO FUNCTION WGCLOSEQQ(handle)
	INTEGER*2 WGCLOSEQQ[FAR,C,ALIAS:"__wgclose"], handle
	END

	INTERFACE TO FUNCTION WGSETACTIVEQQ(handle)
	INTEGER*2 WGSETACTIVEQQ[FAR,C,ALIAS:"__wgsetactive"], handle
	END
	
	INTERFACE TO FUNCTION WGGETACTIVEQQ()
	INTEGER*2 WGGETACTIVEQQ[FAR,C,ALIAS:"__wggetactive"]
	END