This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdrawt.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:20:25  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.27  by  S.Giani
11 *-- Author :
12       SUBROUTINE GDRAWT(X,Y,CHTEXT,SIZE,ANGLE,LWIDTH,IOPT)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Draw text with software characters                       *
17 C.    *                                                                *
18 C.    *       In ITXATT (common GCDRAW) there is                       *
19 C.    *       a bit mask for the text attributes :                     *
20 C.    *                                                                *
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                      *
25 C.    *                                                                *
26 C.    *    ==>Called by : <USER>, <GXINT>, GDAHIT, GDARR, GDHEAD,      *
27 C.    *                   GDPART, GDPRTR, GDSCAL, GDSHOW, GDSPEC       *
28 C.    *       Authors : P.Zanarini ; S.Giani  *********                *
29 C.    *                                                                *
30 C.    ******************************************************************
31 C.
32 #include "geant321/gcbank.inc"
33 #include "geant321/gcdraw.inc"
34 #include "geant321/gcunit.inc"
35 #include "geant321/gcflag.inc"
36       CHARACTER*(*) CHTEXT
37       CHARACTER*1  CHOPT
38       DIMENSION AITXFO(2)
39 C.
40 C.    ------------------------------------------------------------------
41 C.
42       CALL IGQ('TXCI',AITXCO)
43       CALL IGQ('TXFP',AITXFO)
44       ALWIDT=LWIDTH
45       NCHAR=LNBLNK(CHTEXT)
46       IF (IDVIEW.EQ.0.OR.IDVIEW.EQ.-175) GO TO 40
47 C
48 C             Store text on view bank IDVIEW
49 C
50       JV=LQ(JDRAW-IDVIEW)
51       ITU=ITU+1
52 C
53    10 IF (ITU.LE.MAXTU) GO TO 20
54 C
55 C             Push text unit bank
56 C
57       JV = LQ(JV-3)
58       CALL MZPUSH(IXCONS,JV,0,MORTU,'I')
59       IF(IEOTRI.NE.0)GO TO 50
60       JV=LQ(JDRAW-IDVIEW)
61       MAXTU=MAXTU+MORTU
62       GO TO 10
63 C
64    20 IF ((ITS+6+NCHAR).LE.MAXTS) GO TO 30
65 C
66 C             Push text segment bank
67 C
68       JV = LQ(JV-6)
69       CALL MZPUSH(IXCONS,JV,0,MORTS,'I')
70       IF(IEOTRI.NE.0)GO TO 50
71       JV=LQ(JDRAW-IDVIEW)
72       MAXTS=MAXTS+MORTS
73       GO TO 20
74 C
75    30 JVTS=LQ(JV-6)+ITS+1
76       Q(JVTS)=X
77       Q(JVTS+1)=Y
78       Q(JVTS+2)=SIZE
79       Q(JVTS+3)=ANGLE
80 C
81 C             Bit 1- 3 = Text line width (LWIDTH)
82 C             Bit 4-24 = Text attribute
83 C
84       ISUM=0
85       ITXCOL=AITXCO
86       CALL MVBITS(ITXCOL,0,4,ITXATT,3)
87       IF(AITXFO(1).EQ.-6..AND.AITXFO(2).EQ.0.)THEN
88          ITXFON=6
89       ELSEIF(AITXFO(1).EQ.-6..AND.AITXFO(2).EQ.1.)THEN
90          ITXFON=7
91       ENDIF
92       CALL MVBITS(ITXFON,0,4,ITXATT,7)
93       CALL MVBITS(ITXATT,0,24,ISUM,0)
94       CALL MVBITS(LWIDTH,0,3,ISUM,0)
95       Q(JVTS+4)=ISUM
96 C
97       Q(JVTS+5)=IOPT
98       Q(JVTS+6)=NCHAR
99       CALL UCTOH(CHTEXT,IQ(JVTS+7),4,NCHAR)
100 C
101       Q(LQ(JV-3)+ITU)=ITS+1
102       ITS=ITS+7+NCHAR
103       GO TO 999
104 C
105 C             Draw text on screen
106 C
107    40 CONTINUE
108       IF (IOPT.EQ.-1) THEN
109          CHOPT='L'
110          ALFLAG=10.
111       ELSE IF (IOPT.EQ.0) THEN
112          CHOPT='C'
113          ALFLAG=20.
114       ELSE IF (IOPT.EQ.1) THEN
115          CHOPT='R'
116          ALFLAG=30.
117       ENDIF
118       IF(IDVIEW.EQ.-175)THEN
119          ITXCOL=IBITS(ITXATT,3,4)
120          AITXCO=ITXCOL
121          ITXFON=IBITS(ITXATT,7,4)
122          IF(ITXFON.EQ.6)THEN
123             ITXFON=-60
124          ELSEIF(ITXFON.EQ.7)THEN
125             ITXFON=-61
126          ENDIF
127          AITXFP=ITXFON
128          CALL IGSET('TXFP',AITXFP)
129       ENDIF
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)
137       CALL ITX(X,Y,CHTEXT)
138       GO TO 999
139 C
140    50 WRITE (CHMAIL,10000)
141       CALL GMAIL(0,0)
142 C
143 10000 FORMAT (' ERROR IN GDRAWT: MEMORY OVERFLOW IN PUSHING A BANK')
144   999 END