5 * Revision 1.1.1.1 1995/10/24 10:20:25 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.27 by S.Giani
12 SUBROUTINE GDRAWT(X,Y,CHTEXT,SIZE,ANGLE,LWIDTH,IOPT)
14 C. ******************************************************************
16 C. * Draw text with software characters *
18 C. * In ITXATT (common GCDRAW) there is *
19 C. * a bit mask for the text attributes : *
21 C. * Bit 1- 3 = Text line width (LWIDTH) *
22 C. * Bit 4- 7 = Text color *
23 C. * Bit 8-11 = Text font *
24 C. * Bit 12-24 = Reserved for future use *
26 C. * ==>Called by : <USER>, <GXINT>, GDAHIT, GDARR, GDHEAD, *
27 C. * GDPART, GDPRTR, GDSCAL, GDSHOW, GDSPEC *
28 C. * Authors : P.Zanarini ; S.Giani ********* *
30 C. ******************************************************************
32 #include "geant321/gcbank.inc"
33 #include "geant321/gcdraw.inc"
34 #include "geant321/gcunit.inc"
35 #include "geant321/gcflag.inc"
40 C. ------------------------------------------------------------------
42 CALL IGQ('TXCI',AITXCO)
43 CALL IGQ('TXFP',AITXFO)
46 IF (IDVIEW.EQ.0.OR.IDVIEW.EQ.-175) GO TO 40
48 C Store text on view bank IDVIEW
53 10 IF (ITU.LE.MAXTU) GO TO 20
58 CALL MZPUSH(IXCONS,JV,0,MORTU,'I')
59 IF(IEOTRI.NE.0)GO TO 50
64 20 IF ((ITS+6+NCHAR).LE.MAXTS) GO TO 30
66 C Push text segment bank
69 CALL MZPUSH(IXCONS,JV,0,MORTS,'I')
70 IF(IEOTRI.NE.0)GO TO 50
75 30 JVTS=LQ(JV-6)+ITS+1
81 C Bit 1- 3 = Text line width (LWIDTH)
82 C Bit 4-24 = Text attribute
86 CALL MVBITS(ITXCOL,0,4,ITXATT,3)
87 IF(AITXFO(1).EQ.-6..AND.AITXFO(2).EQ.0.)THEN
89 ELSEIF(AITXFO(1).EQ.-6..AND.AITXFO(2).EQ.1.)THEN
92 CALL MVBITS(ITXFON,0,4,ITXATT,7)
93 CALL MVBITS(ITXATT,0,24,ISUM,0)
94 CALL MVBITS(LWIDTH,0,3,ISUM,0)
99 CALL UCTOH(CHTEXT,IQ(JVTS+7),4,NCHAR)
101 Q(LQ(JV-3)+ITU)=ITS+1
105 C Draw text on screen
111 ELSE IF (IOPT.EQ.0) THEN
114 ELSE IF (IOPT.EQ.1) THEN
118 IF(IDVIEW.EQ.-175)THEN
119 ITXCOL=IBITS(ITXATT,3,4)
121 ITXFON=IBITS(ITXATT,7,4)
124 ELSEIF(ITXFON.EQ.7)THEN
128 CALL IGSET('TXFP',AITXFP)
130 IF(ALWIDT.GT.1.)ALWIDT=ALWIDT*3.
131 *** CALL IGTEXT(X,Y,CHTEXT,SIZE,ANGLE,CHOPT)
132 CALL IGSET('TXAL',ALFLAG)
133 CALL IGSET('TANG',ANGLE)
134 CALL IGSET('TXCI',AITXCO)
135 CALL IGSET('CHHE',SIZE)
136 CALL IGSET('LWID',ALWIDT)
140 50 WRITE (CHMAIL,10000)
143 10000 FORMAT (' ERROR IN GDRAWT: MEMORY OVERFLOW IN PUSHING A BANK')