home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 18.ddi / INCLUDE / FGRAPH.FD_ / FGRAPH.FD
Encoding:
Text File  |  1993-02-08  |  13.7 KB  |  373 lines

  1. C fgraph.fd - declare constants and functions for graphics library
  2. C
  3. C     Copyright (c) 1987-1993 Microsoft Corporation.  All rights reserved.
  4. C
  5. C Purpose:
  6. C     This file declares the graphics library functions and
  7. C     the constants that are used with them.
  8. C
  9. C
  10.  
  11. $NOTRUNCATE        ! required for some names to be significant
  12. $NOTSTRICT         ! uses structures which are non-standard conforming
  13.  
  14. C     User-visible declarations for FORTRAN Graphics Library
  15.  
  16. C     Structure for getvideoconfig() as visible to user
  17.     STRUCTURE/videoconfig/
  18.       INTEGER*2 numxpixels       ! number of pixels on X axis
  19.       INTEGER*2 numypixels       ! number of pixels on Y axis
  20.       INTEGER*2 numtextcols      ! number of text columns available
  21.       INTEGER*2 numtextrows      ! number of text rows available
  22.       INTEGER*2 numcolors        ! number of actual colors
  23.       INTEGER*2 bitsperpixel     ! number of bits per pixel
  24.       INTEGER*2 numvideopages    ! number of available video pages
  25.       INTEGER*2 mode             ! current video mode
  26.       INTEGER*2 adapter          ! active display adapter
  27.       INTEGER*2 monitor          ! active display monitor
  28.       INTEGER*2 memory           ! adapter video memory in K bytes
  29.     END STRUCTURE
  30.  
  31. C     Return value of getcurrentposition(), etc.
  32.     STRUCTURE/xycoord/
  33.       INTEGER*2 xcoord
  34.       INTEGER*2 ycoord
  35.     END STRUCTURE
  36.  
  37. C     Structure for text position
  38.     STRUCTURE/rccoord/
  39.       INTEGER*2 row
  40.       INTEGER*2 col
  41.     END STRUCTURE
  42.  
  43. C     ERROR HANDLING
  44.  
  45. C     Status info returned by grstatus()
  46.     INTEGER*2 $GRPARAMETERALTERED,$GRCLIPPED,$GRNOOUTPUT,$GROK,
  47.      +            $GRERROR,$GRMODENOTSUPPORTED,$GRNOTINPROPERMODE,
  48.      +            $GRINVALIDPARAMETER,$GRFONTFILENOTFOUND,
  49.      +            $GRINVALIDFONTFILE,$GRCORRUPTEDFONTFILE,
  50.      +            $GRINSUFFICIENTMEMORY,$GRINVALIDIMAGEBUFFER
  51. C     Successful
  52.     PARAMETER($GROK                  = 0)  ! success
  53. C     Warnings
  54.     PARAMETER($GRNOOUTPUT            = 1)  ! nothing drawn
  55.     PARAMETER($GRCLIPPED             = 2)  ! output was partially clipped
  56.     PARAMETER($GRPARAMETERALTERED    = 3)  ! input parameters adjusted
  57.     PARAMETER($GRTEXTNOTSUPPORTED     = 4)  ! SuperVGA text output may fail
  58. C     Errors
  59.     PARAMETER($GRERROR              = -1)  ! generic graphics error
  60.     PARAMETER($GRMODENOTSUPPORTED   = -2)  ! video mode not supported
  61.     PARAMETER($GRNOTINPROPERMODE    = -3)  ! not supported in current mode
  62.     PARAMETER($GRINVALIDPARAMETER   = -4)  ! bad parameter
  63.     PARAMETER($GRFONTFILENOTFOUND   = -5)  ! font file not found
  64.     PARAMETER($GRINVALIDFONTFILE    = -6)  ! not a font file
  65.     PARAMETER($GRCORRUPTEDFONTFILE  = -7)  ! inconsistent font file
  66.     PARAMETER($GRINSUFFICIENTMEMORY = -8)  ! out of memory
  67.     PARAMETER($GRINVALIDIMAGEBUFFER = -9)  ! bad image buffer detected
  68.  
  69. C     SETUP AND CONFIGURATION
  70.  
  71. C     Arguments to setvideomode()
  72.     INTEGER*2 $MAXRESMODE,$MAXCOLORMODE,$DEFAULTMODE,$TEXTBW40,
  73.      +            $TEXTC40,$TEXTBW80,$TEXTC80,$MRES4COLOR,$MRESNOCOLOR,
  74.      +            $HRESBW,$TEXTMONO,$HERCMONO,$MRES16COLOR,$HRES16COLOR,
  75.      +            $ERESNOCOLOR,$ERESCOLOR,$VRES2COLOR,$VRES16COLOR,
  76.      +            $MRES256COLOR,$ORESCOLOR,$SRES16COLOR,$SRES256COLOR,
  77.      +            $XRES16COLOR,$XRES256COLOR,$ZRES16COLOR,$ZRES256COLOR
  78.     PARAMETER($MAXRESMODE   =-3)    ! graphics mode with highest resolution
  79.     PARAMETER($MAXCOLORMODE =-2)    ! graphics mode with most colors
  80.     PARAMETER($DEFAULTMODE  =-1)    ! restore screen to original mode
  81.     PARAMETER($TEXTBW40      =0)    ! 40 x 25 text, 16 grey
  82.     PARAMETER($TEXTC40               =1)    ! 40 x 25 text, 16/8 color
  83.     PARAMETER($TEXTBW80      =2)    ! 80 x 25 text, 16 grey
  84.     PARAMETER($TEXTC80               =3)    ! 80 x 25 text, 16/8 color
  85.     PARAMETER($MRES4COLOR    =4)    ! 320 x 200, 4 color
  86.     PARAMETER($MRESNOCOLOR   =5)    ! 320 x 200, 4 grey
  87.     PARAMETER($HRESBW                =6)    ! 640 x 200, BW
  88.     PARAMETER($TEXTMONO      =7)    ! 80 x 25 text, BW
  89.     PARAMETER($HERCMONO      =8)    ! 720 x 348, BW for HGC
  90.     PARAMETER($MRES16COLOR   =13)   ! 320 x 200, 16 color
  91.     PARAMETER($HRES16COLOR   =14)   ! 640 x 200, 16 color
  92.     PARAMETER($ERESNOCOLOR   =15)   ! 640 x 350, BW
  93.     PARAMETER($ERESCOLOR     =16)   ! 640 x 350, 4 or 16 color
  94.     PARAMETER($VRES2COLOR    =17)   ! 640 x 480, BW
  95.     PARAMETER($VRES16COLOR   =18)   ! 640 x 480, 16 color
  96.     PARAMETER($MRES256COLOR  =19)   ! 320 x 200, 256 color
  97.     PARAMETER($ORESCOLOR     =64)   ! 640 x 400, 1 of 16 colors (Olivetti)
  98.  
  99. C     The following 8 modes require VESA SuperVGA BIOS extensions
  100.       PARAMETER($ORES256COLOR  =#0100)        ! 640 x 400, 256 color
  101.       PARAMETER($VRES256COLOR  =#0101)        ! 640 x 480, 256 color
  102.  
  103. C     WARNING: DO NOT attempt to set the following modes without ensuring
  104. C     that your monitor can safely handle that resolution.  Otherwise, you
  105. C     may risk damaging your display monitor!  Consult your owner's manual
  106. C     for details.
  107. C     Note: _MAXRESMODE and _MAXCOLORMODE never select SRES, XRES, or ZRES
  108. C     modes.
  109.  
  110. C     Requires NEC MultiSync 3D or equivalent, or better
  111.     PARAMETER($SRES16COLOR   =#0102)        ! 800 x 600, 16 color
  112.     PARAMETER($SRES256COLOR  =#0103)        ! 800 x 600, 256 color
  113.  
  114. C     Requires NEC MultiSync 4D or equivalent, or better
  115.     PARAMETER($XRES16COLOR   =#0104)        ! 1024 x 768, 16 color
  116.     PARAMETER($XRES256COLOR  =#0105)        ! 1024 x 768, 256 color
  117.  
  118. C     Requires NEC MultiSync 5D or equivalent, or better
  119.     PARAMETER($ZRES16COLOR   =#0106)        ! 1280 x 1024, 16 color
  120.     PARAMETER($ZRES256COLOR  =#0107)        ! 1280 x 1024, 256 color
  121.  
  122. C     VIDEOCONFIG adapter values
  123.  
  124. C     These constants can be used to determine the type of the active
  125. C     adapter, using either simple comparisons or the bitwise-AND operator.
  126.       INTEGER*2 $QUICKWIN, $MDPA,$CGA,$EGA,$MCGA,$VGA,$HGC,$OCGA,
  127.      +          $OEGA,$OVGA
  128.       PARAMETER($QUICKWIN =#0000)  ! QuickWin graphics
  129.     PARAMETER($MDPA     =#0001)  ! Monochrome Display Adapter (MDPA)
  130.     PARAMETER($CGA      =#0002)  ! Color Graphics Adapter     (CGA)
  131.     PARAMETER($EGA      =#0004)  ! Enhanced Graphics Adapter  (EGA)
  132.     PARAMETER($VGA      =#0008)  ! Video Graphics Array       (VGA)
  133.     PARAMETER($MCGA     =#0010)  ! MultiColor Graphics Array  (MCGA)
  134.     PARAMETER($HGC      =#0020)  ! Hercules Graphics Card     (HGC)
  135.     PARAMETER($OCGA     =#0042)  ! Olivetti Color Graphics Adapter (OCGA)
  136.     PARAMETER($OEGA     =#0044)  ! Olivetti Enhanced Graphics Adapter (OEGA)
  137.     PARAMETER($OVGA     =#0048)  ! Olivetti Video Graphics Array (OVGA)
  138.       PARAMETER($SVGA     =#0088)  ! Super VGA with VESA BIOS support (SVGA)
  139.  
  140. C     VIDEOCONFIG monitor values
  141.  
  142. C     These constants can be used to determine the type of monitor in
  143. C     use, using either simple comparisons or the bitwise-AND operator
  144.     INTEGER*2 $MONO,$COLOR,$ENHCOLOR,$ANALOGMONO,
  145.      +            $ANALOGCOLOR,$ANALOG
  146.     PARAMETER($MONO       =#0001)     ! Monochrome
  147.     PARAMETER($COLOR      =#0002)     ! Color (or Enhanced emulating color)
  148.     PARAMETER($ENHCOLOR   =#0004)     ! Enhanced Color
  149.     PARAMETER($ANALOGMONO =#0008)     ! Analog Monochrome only
  150.     PARAMETER($ANALOGCOLOR=#0010)     ! Analog Color only
  151.       PARAMETER($ANALOG     =#0018)     ! Analog Color + Analog Monochrome
  152.  
  153. C     COORDINATE SYSTEMS
  154.  
  155. C     OUTPUT ROUTINES
  156.  
  157. C     Control parameters for rectangle(), polygon(), ellipse(), and pie()
  158.     INTEGER*2 $GBORDER,$GFILLINTERIOR
  159.     PARAMETER($GBORDER       =2)      ! draw outline only
  160.     PARAMETER($GFILLINTERIOR =3)      ! fill using current fill mask
  161.  
  162. C     Parameters for clearscreen()
  163.     INTEGER*2 $GCLEARSCREEN,$GVIEWPORT,$GWINDOW
  164.     PARAMETER($GCLEARSCREEN  =0)
  165.     PARAMETER($GVIEWPORT     =1)
  166.     PARAMETER($GWINDOW       =2)
  167.  
  168. C     TEXT
  169.  
  170. C     Parameters for displaycursor()
  171.     INTEGER*2 $GCURSOROFF,$GCURSORON
  172.     PARAMETER($GCURSOROFF =0)
  173.     PARAMETER($GCURSORON  =1)
  174.  
  175. C     Parameters for wrapon()
  176.     INTEGER*2 $GWRAPOFF,$GWRAPON
  177.     PARAMETER($GWRAPOFF  =0)
  178.     PARAMETER($GWRAPON   =1)
  179.  
  180. C     Parameters for scrolltextwindow()
  181.     INTEGER*2 $GSCROLLUP,$GSCROLLDOWN
  182.     PARAMETER($GSCROLLUP   =1)
  183.     PARAMETER($GSCROLLDOWN =-1)
  184.  
  185. C     Request maximum number of rows in _settextrows() and _setvideomoderows()
  186.     INTEGER*2 $MAXTEXTROWS
  187.     PARAMETER($MAXTEXTROWS =-1)
  188.  
  189. C     "Action verbs" for putimage(), setwritemode()
  190.     INTEGER*2 $GPSET,$GPRESET,$GAND,$GOR,$GXOR
  191.     PARAMETER($GPSET         =3)
  192.     PARAMETER($GPRESET       =2)
  193.     PARAMETER($GAND          =1)
  194.     PARAMETER($GOR           =0)
  195.     PARAMETER($GXOR          =4)
  196.  
  197. C     Color values are used with setbkcolor in graphics modes and also by
  198. C     remappalette abd remapallpalette.  Also known as palette colors.
  199. C     Not to be confused with color indices (aka. color attributes).
  200.  
  201. C     Universal color values (all color modes):
  202.     INTEGER*4 $BLACK,$BLUE,$GREEN,$CYAN,$RED,$MAGENTA,$BROWN,
  203.      +            $WHITE,$GRAY,$LIGHTBLUE,$LIGHTGREEN,$LIGHTCYAN,
  204.      +            $LIGHTRED,$LIGHTMAGENTA,$YELLOW,$BRIGHTWHITE
  205.     PARAMETER($BLACK         =#000000)
  206.     PARAMETER($BLUE          =#2a0000)
  207.     PARAMETER($GREEN         =#002a00)
  208.     PARAMETER($CYAN          =#2a2a00)
  209.     PARAMETER($RED           =#00002a)
  210.     PARAMETER($MAGENTA       =#2a002a)
  211.     PARAMETER($BROWN         =#00152a)
  212.     PARAMETER($WHITE         =#2a2a2a)
  213.     PARAMETER($GRAY          =#151515)
  214.     PARAMETER($LIGHTBLUE     =#3F1515)
  215.     PARAMETER($LIGHTGREEN    =#153f15)
  216.     PARAMETER($LIGHTCYAN     =#3f3f15)
  217.     PARAMETER($LIGHTRED      =#15153f)
  218.     PARAMETER($LIGHTMAGENTA  =#3f153f)
  219.     PARAMETER($YELLOW        =#153f3f)
  220.     PARAMETER($BRIGHTWHITE   =#3f3f3f)
  221.  
  222. C     The following is obsolescent and defined only for backwards
  223. C     compatibility.
  224.     INTEGER*4 $LIGHTYELLOW
  225.     PARAMETER($LIGHTYELLOW   =#153f3f)
  226.  
  227. C     Mono mode F ($ERESNOCOLOR) color values:
  228.     INTEGER*4 $MODEFOFF,$MODEFOFFTOON,$MODEFOFFTOHI,$MODEFONTOOFF,
  229.      +            $MODEFON,$MODEFONTOHI,$MODEFHITOOFF,$MODEFHITOON,
  230.      +            $MODEFHI
  231.     PARAMETER($MODEFOFF      =0)
  232.     PARAMETER($MODEFOFFTOON  =1)
  233.     PARAMETER($MODEFOFFTOHI  =2)
  234.     PARAMETER($MODEFONTOOFF  =3)
  235.     PARAMETER($MODEFON       =4)
  236.     PARAMETER($MODEFONTOHI   =5)
  237.     PARAMETER($MODEFHITOOFF  =6)
  238.     PARAMETER($MODEFHITOON   =7)
  239.     PARAMETER($MODEFHI       =8)
  240.  
  241. C     Mono mode 7 ($TEXTMONO) color values:
  242.     INTEGER*4 $MODE7OFF,$MODE7ON,$MODE7HI
  243.     PARAMETER($MODE7OFF      =0)
  244.     PARAMETER($MODE7ON       =1)
  245.     PARAMETER($MODE7HI       =2)
  246.  
  247. C     External function declarations
  248.  
  249.     INTEGER*2 grstatus[EXTERN]
  250.     INTEGER*2 setvideomode[EXTERN]
  251.     INTEGER*2 setvideomoderows[EXTERN]
  252.     INTEGER*2 setactivepage[EXTERN]
  253.     INTEGER*2 setvisualpage[EXTERN]
  254.     INTEGER*2 getactivepage[EXTERN]
  255.     INTEGER*2 getvisualpage[EXTERN]
  256.     EXTERNAL getvideoconfig
  257.     EXTERNAL setvieworg
  258.     EXTERNAL getviewcoord
  259.     EXTERNAL getphyscoord
  260.     EXTERNAL setcliprgn
  261.     EXTERNAL setviewport
  262.     EXTERNAL clearscreen
  263.     EXTERNAL moveto
  264.     EXTERNAL getcurrentposition
  265.     INTEGER*2 lineto[EXTERN]
  266.     INTEGER*2 rectangle[EXTERN]
  267.     INTEGER*2 polygon[EXTERN]
  268.     INTEGER*2 ellipse[EXTERN]
  269.     INTEGER*2 arc[EXTERN]
  270.     INTEGER*2 pie[EXTERN]
  271.     INTEGER*2 getarcinfo[EXTERN]
  272.     INTEGER*2 setpixel[EXTERN]
  273.     INTEGER*2 getpixel[EXTERN]
  274.     INTEGER*2 floodfill[EXTERN]
  275.     INTEGER*2 setcolor[EXTERN]
  276.     INTEGER*2 getcolor[EXTERN]
  277.  
  278.     EXTERNAL setlinestyle
  279.     INTEGER*2 getlinestyle[EXTERN]
  280.     INTEGER*2 setwritemode[EXTERN]
  281.     INTEGER*2 getwritemode[EXTERN]
  282.     EXTERNAL setfillmask
  283.     EXTERNAL getfillmask
  284.     INTEGER*4 setbkcolor[EXTERN]
  285.     INTEGER*4 getbkcolor[EXTERN]
  286.     INTEGER*4 remappalette[EXTERN]
  287.     INTEGER*2 remapallpalette[EXTERN]
  288.     INTEGER*2 selectpalette[EXTERN]
  289.     INTEGER*2 settextrows[EXTERN]
  290.     EXTERNAL settextwindow
  291.     EXTERNAL gettextwindow
  292.     EXTERNAL scrolltextwindow
  293.     EXTERNAL outtext
  294.     INTEGER*2 wrapon[EXTERN]
  295.     INTEGER*2 displaycursor[EXTERN]
  296.     INTEGER*2 settextcursor[EXTERN]
  297.     INTEGER*2 gettextcursor[EXTERN]
  298.     EXTERNAL settextposition
  299.     EXTERNAL gettextposition
  300.     INTEGER*2 settextcolor[EXTERN]
  301.     INTEGER*2 gettextcolor[EXTERN]
  302.     EXTERNAL getimage
  303.     EXTERNAL putimage
  304.     INTEGER*4 imagesize[EXTERN]
  305.  
  306. C     External function declarations for QuickWin Graphics API's
  307.     INTEGER*2 INCHARQQ[EXTERN]
  308.     INTEGER*2 WGOPENQQ[EXTERN]
  309.     INTEGER*2 WGCLOSEQQ[EXTERN]
  310.     INTEGER*2 WGSETACTIVEQQ[EXTERN]
  311.     INTEGER*2 WGGETACTIVEQQ[EXTERN]
  312.  
  313. C     WINDOW COORDINATE SYSTEM
  314.  
  315. C     Structure for window coordinate pair
  316.     STRUCTURE/wxycoord/
  317.       DOUBLE PRECISION wx   ! window x coordinate
  318.       DOUBLE PRECISION wy   ! window y coordinate
  319.     END STRUCTURE
  320.  
  321.     INTEGER*2 setwindow[EXTERN]
  322.  
  323.     EXTERNAL getwindowcoord
  324.     EXTERNAL getviewcoord_w
  325.     EXTERNAL getcurrentposition_w
  326.  
  327. C     Window coordinate entry points for graphics output routines
  328.  
  329.     INTEGER*2 arc_w[EXTERN]
  330.     INTEGER*2 ellipse_w[EXTERN]
  331.     INTEGER*2 floodfill_w[EXTERN]
  332.     INTEGER*2 getpixel_w[EXTERN]
  333.     INTEGER*2 lineto_w[EXTERN]
  334.     EXTERNAL moveto_w
  335.     INTEGER*2 pie_w[EXTERN]
  336.     INTEGER*2 rectangle_w[EXTERN]
  337.     INTEGER*2 polygon_w[EXTERN]
  338.     INTEGER*2 setpixel_w[EXTERN]
  339.     EXTERNAL getimage_w
  340.     INTEGER*4 imagesize_w[EXTERN]
  341.     EXTERNAL putimage_w
  342.  
  343.     STRUCTURE/fontinfo/
  344.       INTEGER*2 type                ! b0 set = vector,clear = bit map
  345.       INTEGER*2 ascent      ! pix dist from top to baseline
  346.       INTEGER*2 pixwidth    ! character width in pixels, 0=prop
  347.       INTEGER*2 pixheight   ! character height in pixels
  348.       INTEGER*2 avgwidth    ! average character width in pixels
  349.       CHARACTER*81 filename   ! file name including path
  350.       CHARACTER*32 facename   ! font name
  351.     END STRUCTURE
  352.  
  353. C     Font parameters
  354.  
  355.     INTEGER*2 $NO_SPACE,$FIXED_SPACE,$PROP_SPACE
  356.     PARAMETER ($NO_SPACE    = 0)
  357.     PARAMETER ($FIXED_SPACE = 1)
  358.     PARAMETER ($PROP_SPACE  = 2)
  359.  
  360.     INTEGER*2 $NO_FONT_MAP,$VECTOR_MAP,$BIT_MAP
  361.     PARAMETER ($NO_FONT_MAP = 0)
  362.     PARAMETER ($VECTOR_MAP  = 1)
  363.     PARAMETER ($BIT_MAP     = 2)
  364.  
  365.     INTEGER*2 registerfonts[EXTERN]
  366.     EXTERNAL unregisterfonts
  367.     INTEGER*2 setfont[EXTERN]
  368.     INTEGER*2 getfontinfo[EXTERN]
  369.     EXTERNAL outgtext
  370.     INTEGER*2 getgtextextent[EXTERN]
  371.     EXTERNAL setgtextvector
  372.     EXTERNAL getgtextvector
  373.