home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d2xx
/
d267
/
diglib.lha
/
Diglib
/
diglib.zoo
/
diglib
/
SKELTN.FTN
< prev
next >
Wrap
Text File
|
1989-06-20
|
9KB
|
316 lines
SUBROUTINE GD????(IFXN,XA,YA)
DIMENSION XA(8), YA(3)
C
C SKELETON DIGLIB GRAPHICS DEVICE DRIVER
C
C-----------------------------------------------------------------------
C
C ARGUMENTS:
C
INPUT
IFXN * TYPE: INTEGER CONSTANT OR VARIABLE.
* THE GRAPHICS FUNCTION TO PERFORM:
1 ==> INITIALIZE THE GRAPHICS DEVICE TO PREPARE IT
FOR GRAPHICS (AND ON MULTI-USER SYSTEMS, TAKE
EXCLUSIVE CONTROL OF THE DEVICE.)
2 ==> OBTAIN A FRESH PLOTTING SURFACE ON THE
GRAPHICS DEVICE.
3 ==> MOVE TO A NEW POSITION (X,Y), WHERE THE UNITS
OF BOTH X AND Y ARE IN CENTIMETERS.
4 ==> DRAW A LINE TO THE POSITION (X,Y), WHERE THE
UNITS OF X AND Y ARE IN CENTIMETERS.
5 ==> TRANSMIT ANY BUFFERED GRAPHICS COMMANDS THAT
HAVE NOT YET BEEN TRANSMITTED TO THE
GRAPHICS DEVICE.
6 ==> RELEASE CONTROL OF THE GRAPHICS DEVICE.
7 ==> RETURN TO THE CALLER THE DEVICE
CHARACTERISTICS OF THIS DEVICE.
8 ==> SET THE CURRENT DRAWING COLOR.
9 ==> PERFORM A GRAPHICS INPUT WITH PICK CHARACTER
OPERATION, RETURNING THE USER SELECTED
LOCATION (X,Y) WITH X AND Y SPECIFIED IN
CENTIMETERS.
10 ==> SET THE VISUAL COLOR ASSOCIATED WITH A
SPECIFIED COLOR NUMBER TO THE RGB VALUE
PROVIDED.
11 ==> SET THE VISUAL COLOR ASSOCIATED WITH A
SPECIFIED COLOR NUMBER TO THE HLS VALUE
PROVIDED.
1024+N==> DRAW FILLED POLYGON HAVING N SIDES.
XA * TYPE: REAL ARRAY.
* DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
1 ==> XA(1) IS RT-11 CHANNAL NUMBER ON WHICH
TO PERFORM I/O, OR RSX-11M LOGICAL UNIT
NUMBER ON WHICH TO PERFORM I/O.
XA(2) --> XA(7) UNUSED.
2 ==> XA(1) --> XA(7) UNUSED.
3 ==> XA(1) IS THE X COORDINATE IN CM. FOR THE
MOVE OPERATION.
XA(2) --> XA(7) UNUSED.
4 ==> XA(1) IS THE X COORDINATE IN CM. FOR THE
DRAW OPERATION.
XA(2) --> XA(7) UNUSED.
5 ==> XA(1) --> XA(7) UNUSED.
6 ==> XA(1) --> XA(7) UNUSED.
7 ==> XA(1) --> XA(7) UNUSED.
8 ==> XA(1) IS COLOR FOR SUBSEQUENT LINES.
XA(2) --> XA(7) UNUSED.
9 ==> XA(1) --> XA(7) UNUSED.
10 ==> XA(1) IS THE COLOR TO DEFINE.
11 ==> XA(1) IS THE COLOR TO DEFINE.
12 ==> XA(1) --> XA(7) UNUSED.
1024+N ==> XA(1) --> XA(N) X VERTICES OF POLYGON.
YA * TYPE: REAL ARRAY
* DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
1 ==> YA(1) IS THE ERROR FLAG FOR DEVICE SELECTION:
0 ==> NO ERRORS
>0 ==> ERROR (DEVICE SPECIFIC)
YA(2) --> YA(3) UNUSED.
2 ==> YA(1) --> YA(3) UNUSED.
3 ==> YA(1) IS THE Y COORDINATE IN CM. FOR THE
MOVE OPERATION.
YA(2) --> YA(3) UNUSED.
4 ==> YA(1) IS THE Y COORDINATE IN CM. FOR THE
DRAW OPERATION.
YA(2) --> YA(3) UNUSED.
5 ==> YA(1) --> YA(3) UNUSED.
6 ==> YA(1) --> YA(3) UNUSED.
7 ==> YA(1) --> YA(3) UNUSED.
8 ==> YA(1) --> YA(3) UNUSED.
9 ==> YA(1) --> YA(3) UNUSED.
10 ==> YA(1) IS % RED COMPONENT OF COLOR.
YA(2) IS % GREEN COMPONENT OF COLOR.
YA(3) IS % BLUE COMPONENT OF COLOR.
11 ==> YA(1) IS THE HUE (0-360).
YA(2) IS THE LIGHTNESS (0-100).
YA(3) IS THE SATURATION (0-100).
12 ==> YA(1) --> YA(3) UNUSED.
1024+N ==> YA(1) --> YA(N) Y VERTICES OF POLYGON.
OUTPUT
XA * TYPE: REAL ARRAY.
* DEPENDANT OF THE GRAPHICS FUNCTION GIVEN BY "IFXN".
1 ==> XA(1) --> XA(7) UNUSED.
2 ==> XA(1) --> XA(7) UNUSED.
3 ==> XA(1) --> XA(7) UNUSED.
4 ==> XA(1) --> XA(7) UNUSED.
5 ==> XA(1) --> XA(7) UNUSED.
6 ==> XA(1) --> XA(7) UNUSED.
7 ==> XA(1) --> XA(7) ARE SET TO THIS DEVICES
CHARACTERISTIC WORDS:
XA(1) = DEVICE ID. (A UNIQUE DEVICE NUMBER
OBTAINED FROM HAL BRAND X26312.
XA(2) = X AXIS LENGTH OF THIS DEVICE IN CM.
XA(3) = Y AXIS LENGTH IN CM.
XA(4) = X AXIS RESOLUTION IN GRAPHICS UNITS
(GU) PER CENTIMETER.
XA(5) = Y AXIS RESOLUTION IN GU/CM.
XA(6) = NUMBER OF AVAILABLE FOREGROUND
COLORS ON THIS DEVICE.
XA(7) = DEVICE CHARACTERISTICS BITS.
THE SUM OF:
0 IF STROKE (PLOTTER) DEVICE.
1 IF RASTER DEVICE.
2 IF DVST (STORAGE TUBE)
3 PRINTER/PLOTTER
4 IF DRAWING IN THE BACKGROUND
COLOR (COLOR 0) IS AVAILABLE.
8 IF DEVICE IS A HARDCOPY DEVICE.
16 IF DEVICE IS A SHAREABLE
DEVICE.
32 DEVICE'S COLORS ARE HLS
SELECTABLE.
64 DEVICE'S COLORS ARE RGB
SELECTABLE.
128 GRAPHICS INPUT WITH "PICK
CHARACTER" IS AVAILABLE.
256 DEVICE DRAWS FILLED POLYGONS.
512 DEVICE REQUIRES CONVEX
POLYGONS.
1024 GRAPHICS INPUT WITH BUTTONS
IS AVAILABLE.
XA(8) = 1 + THE NUMBER OF SCAN LINES TO SKIP
WHILE DOING A SOFTWARE POLYGON FILL.
THIS VALUE IS USED TO TAKE ACCOUNT
OF THE FACT THAT PLOTTERS HAVE PENS
THAT ARE TYPICALLY MANY TIMES
THICKER THAN THE PLOTTER STEP SIZE.
THIS PARAMETER SHOULD BE ONE FOR
ALL RASTER DEVICES. NOTE: FOR
BACKWARDS COMPATIBILITY, THIS
VALUE IS DEFAULTED TO ONE, SO ANY
DRIVER THAT RETURNS ON THE FIRST 7
ARRAY ELEMENTS WILL GET THIS VALUE
SET TO 1.
8 ==> XA(1) = PICK CHARACTER FROM GRAPHICS DEVICE
OR FROM TERMINAL.
XA(2) = X COORDINATE SELECTED IN CM.
XA(3) = Y COORDINATE SELECTED IN CM.
XA(4) --> XA(7) UNUSED.
9 ==> XA(1) --> XA(7) UNUSED.
10 ==> XA(1) --> XA(7) UNUSED.
11 ==> XA(1) --> XA(7) UNUSED.
12 ==> XA(1) = BUTTON BITS FROM GRAPHICS DEVICE
XA(2) = X COORDINATE SELECTED IN CM.
XA(3) = Y COORDINATE SELECTED IN CM.
XA(4) --> XA(7) UNUSED.
1024+N ==> XA(1) --> XA(N) UNUSED.
.END LITERAL
C---------------------------------------------------------------------------
C
DIMENSION DCHAR(8)
C
C MAKE NICE NAMES FOR THE DEVICES RESOLUTION IN X AND Y
C ("XGUPCM" IS X GRAPHICS UNITS PER CENTIMETER)
C
EQUIVALENCE (DCHAR(4),XGUPCM), (DCHAR(5),YGUPCM)
DATA DCHAR /?,?,?,?,?,?,?,?/
C
C FIRST VERIFY WE GOT A GRAPHICS FUNCTION WE CAN HANDLE
C
IF (IFXN .LE. 0 .OR. IFXN .GT. 11) RETURN
C
C NOW DISPATCH TO THE PROPER CODE TO HANDLE THAT FUNCTION
C
GO TO (100,200,300,400,500,600,700,800,900,1000,1100) IFXN
C
C *********************
C INITIALIZE THE DEVICE
C *********************
C
100 CONTINUE
LUN = XA(1) !RSX-11M
ICHAN = XA(1) !RT-11 USING RT-11 DRIVER
.
.
.
RETURN
C
C **************************
C GET FRESH PLOTTING SURFACE
C **************************
C
200 CONTINUE
.
.
.
RETURN
C
C ****
C MOVE
C ****
C
300 CONTINUE
IX = XGUPCM*XA(1)+0.5 !CONVERT CM. TO GRAPHICS UNITS ROUNDED
IY = YGUPCM*YA(1)+0.5
.
.
.
RETURN
C
C ****
C DRAW
C ****
C
400 CONTINUE
IX = XGUPCM*XA(1)+0.5 !CONVERT CM. TO GRAPHICS UNITS ROUNDED
IY = YGUPCM*YA(1)+0.5
.
.
.
RETURN
C
C *****************************
C FLUSH GRAPHICS COMMAND BUFFER
C *****************************
C
500 CONTINUE
.
.
.
RETURN
C
C ******************
C RELEASE THE DEVICE
C ******************
C
600 CONTINUE
.
.
.
RETURN
C
C *****************************
C RETURN DEVICE CHARACTERISTICS
C *****************************
C
700 CONTINUE
DO 720 I=1,8
XA(I) = DCHAR(I)
720 CONTINUE
RETURN
C
C ****************************
C SELECT CURRENT DRAWING COLOR
C ****************************
C
800 CONTINUE
ICOLOR = XA(1)
.
.
.
RETURN
C
C **********************
C PERFORM GRAPHICS INPUT
C **********************
C
900 CONTINUE
.
.
.
XA(1) = ICHAR !PICK CHARACTER
XA(2) = FLOAT(IX)/XGUPCM !X IN CENTIMETERS.
XA(3) = FLOAT(IY)/YGUPCM !Y IN CM.
RETURN
C
C **********************
C DEFINE COLOR USING RGB
C **********************
C
1000 CONTINUE
ICOLOR = XA(1)
C
C ASSUME 8 BIT DACS ON ALL THREE COLOR GUNS WHERE:
C 0 ==> NO INTENSITY
C 255 ==> FULL INTENSITY
C
IRED = 2.55*YA(1) + 0.5
IGREEN = 2.55*YA(2) + 0.5
IBLUE = 2.55*YA(3) + 0.5
.
.
.
RETURN
C
C ************************
C DEFINE A COLOR USING HLS
C ************************
C
1100 CONTINUE
ICOLOR = XA(1)
IHUE = YA(1)
ILIGHT = YA(2)
ISATR = YA(3)
.
.
.
RETURN
END
NESD2$