]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gdraw/gdrawt.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdrawt.F
CommitLineData
fe4da5cc 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)
13C.
14C. ******************************************************************
15C. * *
16C. * Draw text with software characters *
17C. * *
18C. * In ITXATT (common GCDRAW) there is *
19C. * a bit mask for the text attributes : *
20C. * *
21C. * Bit 1- 3 = Text line width (LWIDTH) *
22C. * Bit 4- 7 = Text color *
23C. * Bit 8-11 = Text font *
24C. * Bit 12-24 = Reserved for future use *
25C. * *
26C. * ==>Called by : <USER>, <GXINT>, GDAHIT, GDARR, GDHEAD, *
27C. * GDPART, GDPRTR, GDSCAL, GDSHOW, GDSPEC *
28C. * Authors : P.Zanarini ; S.Giani ********* *
29C. * *
30C. ******************************************************************
31C.
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)
39C.
40C. ------------------------------------------------------------------
41C.
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
47C
48C Store text on view bank IDVIEW
49C
50 JV=LQ(JDRAW-IDVIEW)
51 ITU=ITU+1
52C
53 10 IF (ITU.LE.MAXTU) GO TO 20
54C
55C Push text unit bank
56C
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
63C
64 20 IF ((ITS+6+NCHAR).LE.MAXTS) GO TO 30
65C
66C Push text segment bank
67C
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
74C
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
80C
81C Bit 1- 3 = Text line width (LWIDTH)
82C Bit 4-24 = Text attribute
83C
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
96C
97 Q(JVTS+5)=IOPT
98 Q(JVTS+6)=NCHAR
99 CALL UCTOH(CHTEXT,IQ(JVTS+7),4,NCHAR)
100C
101 Q(LQ(JV-3)+ITU)=ITS+1
102 ITS=ITS+7+NCHAR
103 GO TO 999
104C
105C Draw text on screen
106C
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
139C
140 50 WRITE (CHMAIL,10000)
141 CALL GMAIL(0,0)
142C
14310000 FORMAT (' ERROR IN GDRAWT: MEMORY OVERFLOW IN PUSHING A BANK')
144 999 END