home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsp / pgplot / SYS_ARC / f77 / NUDriver < prev    next >
Encoding:
Text File  |  1994-02-24  |  6.8 KB  |  261 lines

  1. C*NUDRIV -- PGPLOT Null device driver
  2. C+
  3.       SUBROUTINE NUDRIV (IFUNC, RBUF, NBUF, CHR, LCHR)
  4.       INTEGER IFUNC, NBUF, LCHR
  5.       REAL    RBUF(*)
  6.       CHARACTER*(*) CHR
  7. C
  8. C PGPLOT driver for Null device (no graphical output)
  9. C
  10. C Version 1.0  - 1987 May 26 - T. J. Pearson.
  11. C Version 1.1  - 1988 Mar 23 - add rectangle fill.
  12. C Version 1.2  - 1992 Sep  3 - add line-of-pixels.
  13. C Version 1.3  - 1992 Sep 21 - add markers.
  14. C Version 1.4  - 1993 Apr 22 - add optional debugging.
  15. C
  16. C Supported device: The ``null'' device can be used to suppress
  17. C all graphic output from a program.  If environment variable
  18. C PGPLOT_DEBUG is defined, some debugging information is
  19. C reported on standard output.
  20. C
  21. C Device type code: /NULL.
  22. C
  23. C Default device name: None (the device name, if specified, is 
  24. C ignored).
  25. C
  26. C Default view surface dimensions: Undefined (The device pretends to
  27. C be a hardcopy device with 1000 pixels/inch and a view surface 8in 
  28. C high by 10.5in wide.)
  29. C
  30. C Resolution: Undefined.
  31. C
  32. C Color capability: Color indices 0--255 are accepted.
  33. C
  34. C Input capability: None.
  35. C
  36. C File format: None.
  37. C
  38. C Obtaining hardcopy: Not possible.
  39. C-----------------------------------------------------------------------
  40.       CHARACTER*(*) DEVICE
  41.       PARAMETER (DEVICE='NULL  (Null device, no output)')
  42.       INTEGER NOPCOD
  43.       PARAMETER (NOPCOD=28)
  44.       CHARACTER*10 MSG
  45.       CHARACTER*23 TEXT
  46.       INTEGER COUNT(NOPCOD), I, STATE, L
  47.       LOGICAL DEBUG
  48.       SAVE COUNT, STATE, DEBUG
  49.       DATA STATE/-1/
  50.       DATA COUNT/NOPCOD*0/
  51.       DATA DEBUG/.FALSE./
  52. C
  53.       IF (STATE.EQ.-1) THEN
  54.            CALL GRGENV('DEBUG', TEXT, L)
  55.            DEBUG = L.GT.0
  56.            STATE = 0
  57.       END IF
  58. C
  59.       IF (IFUNC.LT.1 .OR. IFUNC.GT.NOPCOD) GOTO 900
  60.       COUNT(IFUNC) = COUNT(IFUNC) + 1
  61.       GOTO( 10, 20, 30, 40, 50, 60, 70, 80, 90,100,
  62.      1     110,120,130,140,150,160,170,180,190,200,
  63.      2     210,220,230,240,250,260,270,280), IFUNC
  64.   900 WRITE (MSG, '(I10)') IFUNC
  65.       CALL GRWARN('Unimplemented function in NULL device driver: '//MSG)
  66.       NBUF = -1
  67.       RETURN
  68. C
  69. C--- IFUNC = 1, Return device name.-------------------------------------
  70. C
  71.    10 CHR = DEVICE
  72.       LCHR = LEN(DEVICE)
  73.       RETURN
  74. C
  75. C--- IFUNC = 2, Return physical min and max for plot device, and range
  76. C               of color indices.---------------------------------------
  77. C
  78.    20 RBUF(1) = 0
  79.       RBUF(2) = 10499
  80.       RBUF(3) = 0
  81.       RBUF(4) = 7999
  82.       RBUF(5) = 0
  83.       RBUF(6) = 255
  84.       NBUF = 6
  85.       RETURN
  86. C
  87. C--- IFUNC = 3, Return device resolution. ------------------------------
  88. C
  89.    30 RBUF(1) = 1000.0
  90.       RBUF(2) = 1000.0
  91.       RBUF(3) = 1
  92.       NBUF = 3
  93.       RETURN
  94. C
  95. C--- IFUNC = 4, Return misc device info. -------------------------------
  96. C    (This device is Hardcopy, No cursor, Dashed lines, Area fill, Thick
  97. C    lines, Rectangle fill, Pixel, , , Markers)
  98. C
  99.    40 CHR = 'HNDATRPNNM'
  100.       LCHR = 10
  101.       RETURN
  102. C
  103. C--- IFUNC = 5, Return default file name. ------------------------------
  104. C
  105.    50 CHR = 'NL:'
  106.       LCHR = 3
  107.       RETURN
  108. C
  109. C--- IFUNC = 6, Return default physical size of plot. ------------------
  110. C
  111.    60 RBUF(1) = 0
  112.       RBUF(2) = 10499
  113.       RBUF(3) = 0
  114.       RBUF(4) = 7999
  115.       NBUF = 4
  116.       RETURN
  117. C
  118. C--- IFUNC = 7, Return misc defaults. ----------------------------------
  119. C
  120.    70 RBUF(1) = 1
  121.       NBUF = 1
  122.       RETURN
  123. C
  124. C--- IFUNC = 8, Select plot. -------------------------------------------
  125. C
  126.    80 CONTINUE
  127.       RETURN
  128. C
  129. C--- IFUNC = 9, Open workstation. --------------------------------------
  130. C
  131.    90 CONTINUE
  132.       IF (STATE.NE.0) CALL GRWARN('++ Driver in wrong state')
  133.       STATE = 1
  134.       IF (DEBUG) CALL GRWARN ('09 Open workstation')
  135.       RBUF(1) = 0
  136.       RBUF(2) = 1
  137.       NBUF = 2
  138.       RETURN
  139. C
  140. C--- IFUNC=10, Close workstation. --------------------------------------
  141. C
  142.   100 CONTINUE
  143.       IF (STATE.NE.1) CALL GRWARN('++ Driver in wrong state')
  144.       STATE = 0
  145.       IF (DEBUG) THEN 
  146.           CALL GRWARN('10 Close workstation')
  147.           CALL GRWARN('Device driver calls:')
  148.           DO 101 I=1,NOPCOD
  149.               WRITE (TEXT,'(3X,2I10)') I, COUNT(I)
  150.               CALL GRWARN(TEXT)
  151.   101     CONTINUE
  152.       END IF
  153.       RETURN
  154. C
  155. C--- IFUNC=11, Begin picture. ------------------------------------------
  156. C
  157.   110 CONTINUE
  158.       IF (STATE.NE.1) CALL GRWARN('++ Driver in wrong state')
  159.       STATE = 2
  160.       IF (DEBUG) CALL GRWARN('11   Begin picture')
  161.       RETURN
  162. C
  163. C--- IFUNC=12, Draw line. ----------------------------------------------
  164. C
  165.   120 CONTINUE
  166.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  167.       RETURN
  168. C
  169. C--- IFUNC=13, Draw dot. -----------------------------------------------
  170. C
  171.   130 CONTINUE
  172.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  173.       RETURN
  174. C
  175. C--- IFUNC=14, End picture. --------------------------------------------
  176. C
  177.   140 CONTINUE
  178.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  179.       STATE = 1
  180.       IF (DEBUG) CALL GRWARN('14   End picture')
  181.       RETURN
  182. C
  183. C--- IFUNC=15, Select color index. -------------------------------------
  184. C
  185.   150 CONTINUE
  186.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  187.       RETURN
  188. C
  189. C--- IFUNC=16, Flush buffer. -------------------------------------------
  190. C
  191.   160 CONTINUE
  192.       RETURN
  193. C
  194. C--- IFUNC=17, Read cursor. --------------------------------------------
  195. C    (Not implemented: should not be called.)
  196. C
  197.   170 GOTO 900
  198. C
  199. C--- IFUNC=18, Erase alpha screen. -------------------------------------
  200. C
  201.   180 CONTINUE
  202.       RETURN
  203. C
  204. C--- IFUNC=19, Set line style. -----------------------------------------
  205. C
  206.   190 CONTINUE
  207.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  208.       RETURN
  209. C
  210. C--- IFUNC=20, Polygon fill. -------------------------------------------
  211. C
  212.   200 CONTINUE
  213.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  214.       RETURN
  215. C
  216. C--- IFUNC=21, Set color representation. -------------------------------
  217. C
  218.   210 CONTINUE
  219.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  220.       RETURN
  221. C
  222. C--- IFUNC=22, Set line width. -----------------------------------------
  223. C
  224.   220 CONTINUE
  225.       IF (STATE.NE.2) CALL GRWARN('++ Driver in wrong state')
  226.       RETURN
  227. C
  228. C--- IFUNC=23, Escape. -------------------------------------------------
  229. C
  230.   230 CONTINUE
  231.       RETURN
  232. C
  233. C--- IFUNC=24, Rectangle fill. -----------------------------------------
  234. C
  235.   240 CONTINUE
  236.       RETURN
  237. C
  238. C--- IFUNC=25, Not implemented -----------------------------------------
  239. C
  240.   250 CONTINUE
  241.       RETURN
  242. C
  243. C--- IFUNC=26, Line of pixels ------------------------------------------
  244. C
  245.   260 CONTINUE
  246.       RETURN
  247. C
  248. C--- IFUNC=27, Not implemented -----------------------------------------
  249. C
  250.   270 CONTINUE
  251.       RETURN
  252. C
  253. C--- IFUNC=28, Draw marker ---------------------------------------------
  254. C
  255.   280 CONTINUE
  256. C     WRITE (*,'(1X,A,I4,1X,3F10.1)') 'MARKER', NINT(RBUF(1)), RBUF(2),
  257. C    1      RBUF(3), RBUF(4)
  258.       RETURN
  259. C-----------------------------------------------------------------------
  260.       END
  261.