home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff267.lzh / Diglib / diglib.zoo / diglib / SKELTN.FTN < prev    next >
Text File  |  1989-06-20  |  9KB  |  316 lines

  1.  
  2.     SUBROUTINE GD????(IFXN,XA,YA)
  3.     DIMENSION XA(8), YA(3)
  4. C
  5. C    SKELETON DIGLIB GRAPHICS DEVICE DRIVER
  6. C
  7. C-----------------------------------------------------------------------
  8. C
  9. C ARGUMENTS:
  10. C
  11.    INPUT
  12.  
  13.     IFXN        * TYPE: INTEGER CONSTANT OR VARIABLE.
  14.             * THE GRAPHICS FUNCTION TO PERFORM:
  15.                 1 ==> INITIALIZE THE GRAPHICS DEVICE TO PREPARE IT
  16.                    FOR GRAPHICS (AND ON MULTI-USER SYSTEMS, TAKE
  17.                    EXCLUSIVE CONTROL OF THE DEVICE.)
  18.                 2 ==> OBTAIN A FRESH PLOTTING SURFACE ON THE
  19.                    GRAPHICS DEVICE.
  20.                 3 ==> MOVE TO A NEW POSITION (X,Y), WHERE THE UNITS
  21.                    OF BOTH X AND Y ARE IN CENTIMETERS.
  22.                 4 ==> DRAW A LINE TO THE POSITION (X,Y), WHERE THE
  23.                    UNITS OF X AND Y ARE IN CENTIMETERS.
  24.                 5 ==> TRANSMIT ANY BUFFERED GRAPHICS COMMANDS THAT
  25.                    HAVE NOT YET BEEN TRANSMITTED TO THE
  26.                    GRAPHICS DEVICE.
  27.                 6 ==> RELEASE CONTROL OF THE GRAPHICS DEVICE.
  28.                 7 ==> RETURN TO THE CALLER THE DEVICE
  29.                    CHARACTERISTICS OF THIS DEVICE.
  30.                 8 ==> SET THE CURRENT DRAWING COLOR.
  31.                 9 ==> PERFORM A GRAPHICS INPUT WITH PICK CHARACTER
  32.                    OPERATION, RETURNING THE USER SELECTED
  33.                    LOCATION (X,Y) WITH X AND Y SPECIFIED IN
  34.                    CENTIMETERS.
  35.                10 ==> SET THE VISUAL COLOR ASSOCIATED WITH A
  36.                    SPECIFIED COLOR NUMBER TO THE RGB VALUE
  37.                    PROVIDED.
  38.                11 ==> SET THE VISUAL COLOR ASSOCIATED WITH A
  39.                    SPECIFIED COLOR NUMBER TO THE HLS VALUE
  40.                    PROVIDED.
  41.             1024+N==> DRAW FILLED POLYGON HAVING N SIDES.
  42.  
  43.     XA        * TYPE: REAL ARRAY.
  44.             * DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
  45.                 1 ==> XA(1) IS RT-11 CHANNAL NUMBER ON WHICH
  46.                    TO PERFORM I/O, OR RSX-11M LOGICAL UNIT
  47.                    NUMBER ON WHICH TO PERFORM I/O.
  48.                   XA(2) --> XA(7) UNUSED.
  49.                 2 ==> XA(1) --> XA(7) UNUSED.
  50.                 3 ==> XA(1) IS THE X COORDINATE IN CM. FOR THE
  51.                    MOVE OPERATION.
  52.                   XA(2) --> XA(7) UNUSED.
  53.                 4 ==> XA(1) IS THE X COORDINATE IN CM. FOR THE
  54.                    DRAW OPERATION.
  55.                   XA(2) --> XA(7) UNUSED.
  56.                 5 ==> XA(1) --> XA(7) UNUSED.
  57.                 6 ==> XA(1) --> XA(7) UNUSED.
  58.                 7 ==> XA(1) --> XA(7) UNUSED.
  59.                 8 ==> XA(1) IS COLOR FOR SUBSEQUENT LINES.
  60.                   XA(2) --> XA(7) UNUSED.
  61.                 9 ==> XA(1) --> XA(7) UNUSED.
  62.                10 ==> XA(1) IS THE COLOR TO DEFINE.
  63.                11 ==> XA(1) IS THE COLOR TO DEFINE.
  64.                12 ==> XA(1) --> XA(7) UNUSED.
  65.                1024+N ==> XA(1) --> XA(N) X VERTICES OF POLYGON.
  66.  
  67.     YA        * TYPE: REAL ARRAY
  68.             * DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
  69.                 1 ==> YA(1) IS THE ERROR FLAG FOR DEVICE SELECTION:
  70.                      0 ==> NO ERRORS
  71.                     >0 ==> ERROR (DEVICE SPECIFIC)
  72.                   YA(2) --> YA(3) UNUSED.
  73.                 2 ==> YA(1) --> YA(3) UNUSED.
  74.                 3 ==> YA(1) IS THE Y COORDINATE IN CM. FOR THE
  75.                    MOVE OPERATION.
  76.                   YA(2) --> YA(3) UNUSED.
  77.                 4 ==> YA(1) IS THE Y COORDINATE IN CM. FOR THE
  78.                    DRAW OPERATION.
  79.                   YA(2) --> YA(3) UNUSED.
  80.                 5 ==> YA(1) --> YA(3) UNUSED.
  81.                 6 ==> YA(1) --> YA(3) UNUSED.
  82.                 7 ==> YA(1) --> YA(3) UNUSED.
  83.                 8 ==> YA(1) --> YA(3) UNUSED.
  84.                 9 ==> YA(1) --> YA(3) UNUSED.
  85.                10 ==> YA(1) IS % RED COMPONENT OF COLOR.
  86.                   YA(2) IS % GREEN COMPONENT OF COLOR.
  87.                   YA(3) IS % BLUE COMPONENT OF COLOR.
  88.                11 ==> YA(1) IS THE HUE (0-360).
  89.                   YA(2) IS THE LIGHTNESS (0-100).
  90.                   YA(3) IS THE SATURATION (0-100).
  91.                12 ==> YA(1) --> YA(3) UNUSED.
  92.                1024+N ==> YA(1) --> YA(N) Y VERTICES OF POLYGON.
  93.  
  94.    OUTPUT
  95.  
  96.     XA        * TYPE: REAL ARRAY.
  97.             * DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
  98.                 1 ==> XA(1) --> XA(7) UNUSED.
  99.                 2 ==> XA(1) --> XA(7) UNUSED.
  100.                 3 ==> XA(1) --> XA(7) UNUSED.
  101.                 4 ==> XA(1) --> XA(7) UNUSED.
  102.                 5 ==> XA(1) --> XA(7) UNUSED.
  103.                 6 ==> XA(1) --> XA(7) UNUSED.
  104.                 7 ==> XA(1) --> XA(7) ARE SET TO THIS DEVICES
  105.                    CHARACTERISTIC WORDS:
  106.                    XA(1) = DEVICE ID. (A UNIQUE DEVICE NUMBER
  107.                        OBTAINED FROM HAL BRAND X26312.
  108.                    XA(2) = X AXIS LENGTH OF THIS DEVICE IN CM.
  109.                    XA(3) = Y AXIS LENGTH IN CM.
  110.                    XA(4) = X AXIS RESOLUTION IN GRAPHICS UNITS
  111.                        (GU) PER CENTIMETER.
  112.                    XA(5) = Y AXIS RESOLUTION IN GU/CM.
  113.                    XA(6) = NUMBER OF AVAILABLE FOREGROUND
  114.                        COLORS ON THIS DEVICE.
  115.                    XA(7) = DEVICE CHARACTERISTICS BITS.
  116.                        THE SUM OF:
  117.                           0 IF STROKE (PLOTTER) DEVICE.
  118.                           1 IF RASTER DEVICE.
  119.                           2 IF DVST (STORAGE TUBE)
  120.                           3 PRINTER/PLOTTER
  121.                           4 IF DRAWING IN THE BACKGROUND
  122.                          COLOR (COLOR 0) IS AVAILABLE.
  123.                           8    IF DEVICE IS A HARDCOPY DEVICE.
  124.                          16    IF DEVICE IS A SHAREABLE
  125.                          DEVICE.
  126.                          32    DEVICE'S COLORS ARE HLS
  127.                          SELECTABLE.
  128.                          64    DEVICE'S COLORS ARE RGB
  129.                          SELECTABLE.
  130.                         128    GRAPHICS INPUT WITH "PICK
  131.                          CHARACTER" IS AVAILABLE.
  132.                         256 DEVICE DRAWS FILLED POLYGONS.
  133.                         512 DEVICE REQUIRES CONVEX
  134.                          POLYGONS.
  135.                        1024    GRAPHICS INPUT WITH BUTTONS
  136.                          IS AVAILABLE.
  137.                   XA(8) = 1 + THE NUMBER OF SCAN LINES TO SKIP
  138.                        WHILE DOING A SOFTWARE POLYGON FILL.
  139.                        THIS VALUE IS USED TO TAKE ACCOUNT
  140.                        OF THE FACT THAT PLOTTERS HAVE PENS
  141.                        THAT ARE TYPICALLY MANY TIMES
  142.                        THICKER THAN THE PLOTTER STEP SIZE.
  143.                        THIS PARAMETER SHOULD BE ONE FOR
  144.                        ALL RASTER DEVICES.   NOTE: FOR
  145.                        BACKWARDS COMPATIBILITY,  THIS
  146.                        VALUE IS DEFAULTED TO ONE, SO ANY
  147.                        DRIVER THAT RETURNS ON THE FIRST 7
  148.                        ARRAY ELEMENTS WILL GET THIS VALUE
  149.                        SET TO 1.
  150.                 8 ==> XA(1) = PICK CHARACTER FROM GRAPHICS DEVICE
  151.                        OR FROM TERMINAL.
  152.                   XA(2) = X COORDINATE SELECTED IN CM.
  153.                   XA(3) = Y COORDINATE SELECTED IN CM.
  154.                   XA(4) --> XA(7) UNUSED.
  155.                 9 ==> XA(1) --> XA(7) UNUSED.
  156.                10 ==> XA(1) --> XA(7) UNUSED.
  157.                11 ==> XA(1) --> XA(7) UNUSED.
  158.                12 ==> XA(1) = BUTTON BITS FROM GRAPHICS DEVICE
  159.                   XA(2) = X COORDINATE SELECTED IN CM.
  160.                   XA(3) = Y COORDINATE SELECTED IN CM.
  161.                   XA(4) --> XA(7) UNUSED.
  162.                1024+N ==> XA(1) --> XA(N) UNUSED.
  163. .END LITERAL
  164.  
  165. C---------------------------------------------------------------------------
  166. C
  167.     DIMENSION DCHAR(8)
  168. C
  169. C    MAKE NICE NAMES FOR THE DEVICES RESOLUTION IN X AND Y
  170. C     ("XGUPCM" IS X GRAPHICS UNITS PER CENTIMETER)
  171. C
  172.     EQUIVALENCE (DCHAR(4),XGUPCM), (DCHAR(5),YGUPCM)
  173.     DATA DCHAR /?,?,?,?,?,?,?,?/
  174. C
  175. C    FIRST VERIFY WE GOT A GRAPHICS FUNCTION WE CAN HANDLE
  176. C
  177.     IF (IFXN .LE. 0 .OR. IFXN .GT. 11) RETURN
  178. C
  179. C    NOW DISPATCH TO THE PROPER CODE TO HANDLE THAT FUNCTION
  180. C
  181.     GO TO (100,200,300,400,500,600,700,800,900,1000,1100) IFXN
  182. C
  183. C    *********************
  184. C    INITIALIZE THE DEVICE
  185. C    *********************
  186. C
  187. 100    CONTINUE
  188.     LUN = XA(1)    !RSX-11M
  189.     ICHAN = XA(1)    !RT-11 USING RT-11 DRIVER
  190.     .
  191.     .
  192.     .
  193.     RETURN
  194. C
  195. C    **************************
  196. C    GET FRESH PLOTTING SURFACE
  197. C    **************************
  198. C
  199. 200    CONTINUE
  200.     .
  201.     .
  202.     .
  203.     RETURN
  204. C
  205. C    ****
  206. C    MOVE
  207. C    ****
  208. C
  209. 300    CONTINUE
  210.     IX = XGUPCM*XA(1)+0.5    !CONVERT CM. TO GRAPHICS UNITS ROUNDED
  211.     IY = YGUPCM*YA(1)+0.5
  212.     .
  213.     .
  214.     .
  215.     RETURN
  216. C
  217. C    ****
  218. C    DRAW
  219. C    ****
  220. C
  221. 400    CONTINUE
  222.     IX = XGUPCM*XA(1)+0.5    !CONVERT CM. TO GRAPHICS UNITS ROUNDED
  223.     IY = YGUPCM*YA(1)+0.5
  224.     .
  225.     .
  226.     .
  227.     RETURN
  228. C
  229. C    *****************************
  230. C    FLUSH GRAPHICS COMMAND BUFFER
  231. C    *****************************
  232. C
  233. 500    CONTINUE
  234.     .
  235.     .
  236.     .
  237.     RETURN
  238. C
  239. C    ******************
  240. C    RELEASE THE DEVICE
  241. C    ******************
  242. C
  243. 600    CONTINUE
  244.     .
  245.     .
  246.     .
  247.     RETURN
  248. C
  249. C    *****************************
  250. C    RETURN DEVICE CHARACTERISTICS
  251. C    *****************************
  252. C
  253. 700    CONTINUE
  254.     DO 720 I=1,8
  255.     XA(I) = DCHAR(I)
  256. 720    CONTINUE
  257.     RETURN
  258. C
  259. C    ****************************
  260. C    SELECT CURRENT DRAWING COLOR
  261. C    ****************************
  262. C
  263. 800    CONTINUE
  264.     ICOLOR = XA(1)
  265.     .
  266.     .
  267.     .
  268.     RETURN
  269. C
  270. C    **********************
  271. C    PERFORM GRAPHICS INPUT
  272. C    **********************
  273. C
  274. 900    CONTINUE
  275.     .
  276.     .
  277.     .
  278.     XA(1) = ICHAR    !PICK CHARACTER
  279.     XA(2) = FLOAT(IX)/XGUPCM    !X IN CENTIMETERS.
  280.     XA(3) = FLOAT(IY)/YGUPCM    !Y IN CM.
  281.     RETURN
  282. C
  283. C    **********************
  284. C    DEFINE COLOR USING RGB
  285. C    **********************
  286. C
  287. 1000    CONTINUE
  288.     ICOLOR = XA(1)
  289. C
  290. C    ASSUME 8 BIT DACS ON ALL THREE COLOR GUNS WHERE:
  291. C       0 ==> NO INTENSITY
  292. C     255 ==> FULL INTENSITY
  293. C
  294.     IRED = 2.55*YA(1) + 0.5
  295.     IGREEN = 2.55*YA(2) + 0.5
  296.     IBLUE = 2.55*YA(3) + 0.5
  297.     .
  298.     .
  299.     .
  300.     RETURN
  301. C
  302. C    ************************
  303. C    DEFINE A COLOR USING HLS
  304. C    ************************
  305. C
  306. 1100    CONTINUE
  307.     ICOLOR = XA(1)
  308.     IHUE = YA(1)
  309.     ILIGHT = YA(2)
  310.     ISATR = YA(3)
  311.     .
  312.     .
  313.     .
  314.     RETURN
  315.     END
  316. NESD2$