1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
C*HIDRIV -- PGPLOT HIDMP plotter driver
C+
SUBROUTINE HIDRIV (IFUNC, RBUF, NBUF, CHR, LCHR)
INTEGER IFUNC, NBUF, LCHR
REAL RBUF(*)
CHARACTER*(*) CHR
C
C PGPLOT driver for Houston Instruments HIDMP pen plotter.
C
C Version 1.0 - 1987 May 26 - T. J. Pearson.
C version 2.0 - 1992 Apr 7 - standard Fortran (TJP).
C-----------------------------------------------------------------------
CHARACTER*(*) DEVICE
CHARACTER*(*) DEFNAM
PARAMETER (DEVICE='HIDMP (Houston Instruments pen plotter)')
PARAMETER (DEFNAM='pgplot.hiplot')
CHARACTER*80 MSG
CHARACTER*64 INSTR
INTEGER IER, I0, J0, I1, J1, L, LASTI, LASTJ, UNIT
INTEGER GROPTX
C-----------------------------------------------------------------------
C
GOTO( 10, 20, 30, 40, 50, 60, 70, 80, 90,100,
1 110,120,130,140,150,160,170,180,190,200,
2 210,220,230), IFUNC
GOTO 900
C
C--- IFUNC = 1, Return device name.-------------------------------------
C
10 CHR = DEVICE
LCHR = LEN(DEVICE)
RETURN
C
C--- IFUNC = 2, Return physical min and max for plot device, and range
C of color indices.---------------------------------------
C
20 RBUF(1) = 0
RBUF(2) = 4799
RBUF(3) = 0
RBUF(4) = 7199
RBUF(5) = 1
RBUF(6) = 1
NBUF = 6
RETURN
C
C--- IFUNC = 3, Return device resolution. ------------------------------
C
30 RBUF(1) = 200.0
RBUF(2) = 200.0
RBUF(3) = 2
NBUF = 3
RETURN
C
C--- IFUNC = 4, Return misc device info. -------------------------------
C (This device is Hardcopy, No cursor, No dashed lines, No area fill,
C No thick lines)
C
40 CHR = 'HNNNNNNNNN'
LCHR = 10
RETURN
C
C--- IFUNC = 5, Return default file name. ------------------------------
C
50 CHR = DEFNAM
LCHR = LEN(DEFNAM)
RETURN
C
C--- IFUNC = 6, Return default physical size of plot. ------------------
C
60 RBUF(1) = 0
RBUF(2) = 2099
RBUF(3) = 0
RBUF(4) = 1599
NBUF = 4
RETURN
C
C--- IFUNC = 7, Return misc defaults. ----------------------------------
C
70 RBUF(1) = 3
NBUF = 1
RETURN
C
C--- IFUNC = 8, Select plot. -------------------------------------------
C
80 CONTINUE
RETURN
C
C--- IFUNC = 9, Open workstation. --------------------------------------
C
90 CONTINUE
CALL GRGLUN(UNIT)
NBUF = 2
RBUF(1) = UNIT
IER = GROPTX(UNIT, CHR(1:LCHR), DEFNAM, 1)
IF (IER.NE.0) THEN
MSG = 'Cannot open plot file: '//CHR(:LCHR)
CALL GRWARN(MSG)
RBUF(2) = 0
CALL GRFLUN(UNIT)
RETURN
ELSE
INQUIRE (UNIT=UNIT, NAME=CHR)
LCHR = LEN(CHR)
91 IF (CHR(LCHR:LCHR).EQ.' ') THEN
LCHR = LCHR-1
GOTO 91
END IF
RBUF(2) = 1
END IF
LASTI = -1
LASTJ = -1
WRITE (UNIT, '(A)') ';:H EC5 A '
RETURN
C
C--- IFUNC=10, Close workstation. --------------------------------------
C
100 CONTINUE
WRITE (UNIT, '(A)') 'H EL @ '
CLOSE (UNIT)
CALL GRFLUN(UNIT)
RETURN
C
C--- IFUNC=11, Begin picture. ------------------------------------------
C
110 CONTINUE
WRITE (UNIT, '(A)') 'EL '
WRITE (UNIT, '(A)') ';:H EC5 A '
RETURN
C
C--- IFUNC=12, Draw line. ----------------------------------------------
C
120 CONTINUE
I0 = NINT(RBUF(1))
J0 = NINT(RBUF(2))
I1 = NINT(RBUF(3))
J1 = NINT(RBUF(4))
121 CONTINUE
IF ( (I0.NE.LASTI) .OR. (J0.NE.LASTJ) ) THEN
CALL GRFAO('U #,# D #,# ', L, INSTR, I0, J0, I1, J1)
ELSE
CALL GRFAO('#,# ', L, INSTR, I1, J1, 0, 0)
END IF
WRITE (UNIT,'(A)') INSTR(1:L)
LASTI = I1
LASTJ = J1
RETURN
C
C--- IFUNC=13, Draw dot. -----------------------------------------------
C
130 CONTINUE
I1 = NINT(RBUF(1))
J1 = NINT(RBUF(2))
I0 = I1
J0 = J1
GOTO 121
C
C--- IFUNC=14, End picture. --------------------------------------------
C
140 CONTINUE
RETURN
C
C--- IFUNC=15, Select color index. -------------------------------------
C (Not implemented.)
C
150 CONTINUE
RETURN
C
C--- IFUNC=16, Flush buffer. -------------------------------------------
C (Null operation: buffering is not implemented.)
C
160 CONTINUE
RETURN
C
C--- IFUNC=17, Read cursor. --------------------------------------------
C (Not implemented: should not be called.)
C
170 GOTO 900
C
C--- IFUNC=18, Erase alpha screen. -------------------------------------
C (Null operation: there is no alpha screen.)
C
180 CONTINUE
RETURN
C
C--- IFUNC=19, Set line style. -----------------------------------------
C (Not implemented: should not be called.)
C
190 GOTO 900
C
C--- IFUNC=20, Polygon fill. -------------------------------------------
C (Not implemented: should not be called.)
C
200 GOTO 900
C
C--- IFUNC=21, Set color representation. -------------------------------
C (Not implemented)
C
210 CONTINUE
RETURN
C
C--- IFUNC=22, Set line width. -----------------------------------------
C (Not implemented: should not be called.)
C
220 GOTO 900
C
C--- IFUNC=23, Escape. -------------------------------------------------
C
230 CONTINUE
WRITE (UNIT, '(A)') CHR(:LCHR)
LASTI = -1
RETURN
C-----------------------------------------------------------------------
C Error: unimplemented function.
C
900 WRITE (MSG,'(I10)') IFUNC
CALL GRWARN('Unimplemented function in HI device driver: '//MSG)
NBUF = -1
RETURN
C-----------------------------------------------------------------------
END
|