1 /* -- translated by f2c (version 20100827).
2 You must link the resulting object file with libf2c:
3 on Microsoft Windows system, link with libf2c.lib;
4 on Linux or Unix systems, link with .../path/to/libf2c.a -lm
5 or, if you install libf2c.a in a standard place, with -lf2c -lm
6 -- in that order, at the end of the command line, as in
7 cc *.o -lf2c -lm
8 Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
9
10 http://www.netlib.org/f2c/libf2c.zip
11 */
12
13 #include "libtinyf2c.h"
14
15 /* Table of constant values */
16
17 static integer c__1 = 1;
18 static integer c__2 = 2;
19 static logical c_true = TRUE_;
20 static logical c_false = FALSE_;
21
22 /* ----------------------------------------------------------------------- */
23 /* UXPLBL : PLOT LABELS */
24 /* ----------------------------------------------------------------------- */
25 /* Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved. */
26 /* ----------------------------------------------------------------------- */
uxplbl_(char * cside,integer * islct,real * ux,char * ch,integer * nc,integer * n,ftnlen cside_len,ftnlen ch_len)27 /* Subroutine */ int uxplbl_(char *cside, integer *islct, real *ux, char *ch,
28 integer *nc, integer *n, ftnlen cside_len, ftnlen ch_len)
29 {
30 /* System generated locals */
31 address a__1[2];
32 integer i__1[2], i__2;
33 char ch__1[6], ch__2[7];
34
35 /* Builtin functions */
36 integer s_wsfi(icilist *), do_fio(integer *, char *, ftnlen), e_wsfi(void)
37 ;
38 /* Subroutine */ int s_cat(char *, char **, integer *, integer *, ftnlen);
39 integer i_sign(integer *, integer *);
40
41 /* Local variables */
42 static integer i__, ic;
43 static real pad, rlc;
44 static integer lcw;
45 static real wxch, wych, uxmn, uymn, posy, uxmx, uymx;
46 static integer iflag, icent, ncmax, index;
47 static char cslct[1];
48 static integer irota, jrota;
49 static real roffx;
50 static logical lbtwn;
51 static real roffz, rsize, rbtwn;
52 extern logical lchreq_(char *, char *, ftnlen, ftnlen);
53 extern /* Subroutine */ int msgdmp_(char *, char *, char *, ftnlen,
54 ftnlen, ftnlen), uxplba_(real *, char *, integer *, integer *,
55 real *, real *, real *, integer *, integer *, integer *, ftnlen),
56 uxplbb_(real *, char *, integer *, integer *, real *, real *,
57 real *, integer *, integer *, integer *, real *, logical *,
58 logical *, ftnlen);
59 extern logical luxchk_(char *, ftnlen);
60 extern /* Subroutine */ int sgqwnd_(real *, real *, real *, real *),
61 uziget_(char *, integer *, ftnlen), uzlget_(char *, logical *,
62 ftnlen), uzrget_(char *, real *, ftnlen), uzrset_(char *, real *,
63 ftnlen), szqtxw_(char *, integer *, real *, real *, ftnlen);
64
65 /* Fortran I/O blocks */
66 static icilist io___2 = { 0, cslct, 0, "(I1)", 1, 1 };
67
68
69 /* Parameter adjustments */
70 ch -= ch_len;
71 --ux;
72
73 /* Function Body */
74 if (! luxchk_(cside, (ftnlen)1)) {
75 msgdmp_("E", "UXPLBL", "SIDE PARAMETER IS INVALID.", (ftnlen)1, (
76 ftnlen)6, (ftnlen)26);
77 }
78 if (! (0 <= *islct && *islct <= 2)) {
79 msgdmp_("E", "UXPLBL", "'ISLCT' IS INVALID.", (ftnlen)1, (ftnlen)6, (
80 ftnlen)19);
81 }
82 if (*nc <= 0) {
83 msgdmp_("E", "UXPLBL", "CHARACTER LENGTH IS LESS THAN OR EQUAL TO ZE"
84 "RO.", (ftnlen)1, (ftnlen)6, (ftnlen)47);
85 }
86 if (*n <= 0) {
87 msgdmp_("E", "UXPLBL", "NUMBER OF POINTS IS INVALID.", (ftnlen)1, (
88 ftnlen)6, (ftnlen)28);
89 }
90 s_wsfi(&io___2);
91 do_fio(&c__1, (char *)&(*islct), (ftnlen)sizeof(integer));
92 e_wsfi();
93 /* Writing concatenation */
94 i__1[0] = 5, a__1[0] = "ROFFX";
95 i__1[1] = 1, a__1[1] = cside;
96 s_cat(ch__1, a__1, i__1, &c__2, (ftnlen)6);
97 uzrget_(ch__1, &roffx, (ftnlen)6);
98 /* Writing concatenation */
99 i__1[0] = 6, a__1[0] = "RSIZEL";
100 i__1[1] = 1, a__1[1] = cslct;
101 s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)7);
102 uzrget_(ch__2, &rsize, (ftnlen)7);
103 /* Writing concatenation */
104 i__1[0] = 6, a__1[0] = "ICENTX";
105 i__1[1] = 1, a__1[1] = cside;
106 s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)7);
107 uziget_(ch__2, &icent, (ftnlen)7);
108 /* Writing concatenation */
109 i__1[0] = 6, a__1[0] = "IROTLX";
110 i__1[1] = 1, a__1[1] = cside;
111 s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)7);
112 uziget_(ch__2, &irota, (ftnlen)7);
113 /* Writing concatenation */
114 i__1[0] = 6, a__1[0] = "INDEXL";
115 i__1[1] = 1, a__1[1] = cslct;
116 s_cat(ch__2, a__1, i__1, &c__2, (ftnlen)7);
117 uziget_(ch__2, &index, (ftnlen)7);
118 uzrget_("PAD1", &pad, (ftnlen)4);
119 uzlget_("LBTWN", &lbtwn, (ftnlen)5);
120 if (lbtwn) {
121 uzrget_("RBTWN", &rbtwn, (ftnlen)5);
122 ncmax = *n - 1;
123 } else {
124 ncmax = *n;
125 }
126 if (! lchreq_(cside, "U", (ftnlen)1, (ftnlen)1)) {
127 sgqwnd_(&uxmn, &uxmx, &uymn, &uymx);
128 if (lchreq_(cside, "B", (ftnlen)1, (ftnlen)1)) {
129 posy = uymn;
130 iflag = -1;
131 } else {
132 posy = uymx;
133 iflag = 1;
134 }
135 } else {
136 uzrget_("UYUSER", &posy, (ftnlen)6);
137 uziget_("IFLAG", &iflag, (ftnlen)5);
138 iflag = i_sign(&c__1, &iflag);
139 }
140 jrota = (irota + 2) % 4 - 2;
141 if (jrota == -2) {
142 jrota = 0;
143 }
144 rlc = 1.f;
145 i__2 = ncmax;
146 for (i__ = 1; i__ <= i__2; ++i__) {
147 szqtxw_(ch + i__ * ch_len, &lcw, &wxch, &wych, ch_len);
148 if (jrota == 0 && wych > rlc) {
149 rlc = wych;
150 } else if (jrota != 0 && wxch > rlc) {
151 rlc = wxch;
152 }
153 /* L10: */
154 }
155 ic = jrota * icent * iflag;
156 roffz = roffx + rsize * (pad + rlc * (ic + 1) * .5f) * iflag;
157 roffx += rsize * (pad + rlc) * iflag;
158 if (lbtwn) {
159 uxplbb_(&ux[1], ch + ch_len, nc, n, &posy, &roffz, &rsize, &irota, &
160 icent, &index, &rbtwn, &c_true, &c_false, ch_len);
161 } else {
162 uxplba_(&ux[1], ch + ch_len, nc, n, &posy, &roffz, &rsize, &irota, &
163 icent, &index, ch_len);
164 }
165 /* Writing concatenation */
166 i__1[0] = 5, a__1[0] = "ROFFX";
167 i__1[1] = 1, a__1[1] = cside;
168 s_cat(ch__1, a__1, i__1, &c__2, (ftnlen)6);
169 uzrset_(ch__1, &roffx, (ftnlen)6);
170 return 0;
171 } /* uxplbl_ */
172
173