Jspice3
labeltxt.c
Go to the documentation of this file.
1 /***************************************************************************
2 SCED - Schematic Capture Editor
3 JSPICE3 adaptation of Spice3e2 - Copyright (c) Stephen R. Whiteley 1992
4 Copyright 1990 Regents of the University of California. All rights reserved.
5 Authors: 1981 Giles C. Billingsley (parts of KIC layout editor)
6  1992 Stephen R. Whiteley
7 ****************************************************************************/
8 
9 #include "spice.h"
10 #include "sced.h"
11 
12 #include "plotdev.h"
13 
14 #include <ctype.h>
15 
16 /* for text clipping */
17 static int Xl,Yl, Xu = 0x7fff, Yu = 0x7fff;
18 
19 #ifdef __STDC__
20 static int setcode(int);
21 static void xform_cell(unsigned short*,unsigned short*,int,int,int,int);
22 #else
23 static int setcode();
24 static void xform_cell();
25 #endif
26 
27 /* 8 X 16 character set */
28 #define FontW 8
29 #define FontH 16
30 static unsigned short label_font[] = {
31 
32 /* */ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
33 /* ! */ 0x0,0x0,0x18,0x3c,0x3c,0x3c,0x18,0x18,0x18,0x0,0x18,0x18,0x0,0x0,0x0,0x0,
34 /* " */ 0x0,0x66,0x66,0x66,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
35 /* # */ 0x0,0x0,0x0,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c,0x0,0x0,0x0,0x0,
36 /* $ */ 0x18,0x18,0x7c,0xc6,0xc2,0xc0,0x7c,0x6,0x6,0x86,0xc6,0x7c,0x18,0x18,0x0,0x0,
37 /* % */ 0x0,0x0,0x0,0x0,0xc2,0xc6,0xc,0x18,0x30,0x60,0xc6,0x86,0x0,0x0,0x0,0x0,
38 /* & */ 0x0,0x0,0x38,0x6c,0x6c,0x38,0x76,0xdc,0xcc,0xcc,0xcc,0x76,0x0,0x0,0x0,0x0,
39 /* ' */ 0x0,0x30,0x30,0x30,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
40 /* ( */ 0x0,0x0,0xc,0x18,0x30,0x30,0x30,0x30,0x30,0x30,0x18,0xc,0x0,0x0,0x0,0x0,
41 /* ) */ 0x0,0x0,0x30,0x18,0xc,0xc,0xc,0xc,0xc,0xc,0x18,0x30,0x0,0x0,0x0,0x0,
42 /* * */ 0x0,0x0,0x0,0x0,0x0,0x66,0x3c,0xff,0x3c,0x66,0x0,0x0,0x0,0x0,0x0,0x0,
43 /* + */ 0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x7e,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,
44 /* , */ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x18,0x30,0x0,0x0,0x0,
45 /* - */ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
46 /* . */ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,
47 /* / */ 0x0,0x0,0x0,0x0,0x2,0x6,0xc,0x18,0x30,0x60,0xc0,0x80,0x0,0x0,0x0,0x0,
48 /* 0 */ 0x0,0x0,0x7c,0xc6,0xc6,0xce,0xde,0xf6,0xe6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
49 /* 1 */ 0x0,0x0,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x0,0x0,0x0,0x0,
50 /* 2 */ 0x0,0x0,0x7c,0xc6,0x6,0xc,0x18,0x30,0x60,0xc0,0xc6,0xfe,0x0,0x0,0x0,0x0,
51 /* 3 */ 0x0,0x0,0x7c,0xc6,0x6,0x6,0x3c,0x6,0x6,0x6,0xc6,0x7c,0x0,0x0,0x0,0x0,
52 /* 4 */ 0x0,0x0,0xc,0x1c,0x3c,0x6c,0xcc,0xfe,0xc,0xc,0xc,0x1e,0x0,0x0,0x0,0x0,
53 /* 5 */ 0x0,0x0,0xfe,0xc0,0xc0,0xc0,0xfc,0x6,0x6,0x6,0xc6,0x7c,0x0,0x0,0x0,0x0,
54 /* 6 */ 0x0,0x0,0x38,0x60,0xc0,0xc0,0xfc,0xc6,0xc6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
55 /* 7 */ 0x0,0x0,0xfe,0xc6,0x6,0x6,0xc,0x18,0x30,0x30,0x30,0x30,0x0,0x0,0x0,0x0,
56 /* 8 */ 0x0,0x0,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
57 /* 9 */ 0x0,0x0,0x7c,0xc6,0xc6,0xc6,0x7e,0x6,0x6,0x6,0xc,0x78,0x0,0x0,0x0,0x0,
58 /* : */ 0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,
59 /* ; */ 0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x18,0x18,0x30,0x0,0x0,0x0,0x0,
60 /* < */ 0x0,0x0,0x0,0x6,0xc,0x18,0x30,0x60,0x30,0x18,0xc,0x6,0x0,0x0,0x0,0x0,
61 /* = */ 0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
62 /* > */ 0x0,0x0,0x0,0x60,0x30,0x18,0xc,0x6,0xc,0x18,0x30,0x60,0x0,0x0,0x0,0x0,
63 /* ? */ 0x0,0x0,0x7c,0xc6,0xc6,0xc,0x18,0x18,0x18,0x0,0x18,0x18,0x0,0x0,0x0,0x0,
64 /* @ */ 0x0,0x0,0x7c,0xc6,0xc6,0xc6,0xde,0xde,0xde,0xdc,0xc0,0x7c,0x0,0x0,0x0,0x0,
65 /* A */ 0x0,0x0,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x0,0x0,0x0,0x0,
66 /* B */ 0x0,0x0,0xfc,0x66,0x66,0x66,0x7c,0x66,0x66,0x66,0x66,0xfc,0x0,0x0,0x0,0x0,
67 /* C */ 0x0,0x0,0x3c,0x66,0xc2,0xc0,0xc0,0xc0,0xc0,0xc2,0x66,0x3c,0x0,0x0,0x0,0x0,
68 /* D */ 0x0,0x0,0xf8,0x6c,0x66,0x66,0x66,0x66,0x66,0x66,0x6c,0xf8,0x0,0x0,0x0,0x0,
69 /* E */ 0x0,0x0,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xfe,0x0,0x0,0x0,0x0,
70 /* F */ 0x0,0x0,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60,0xf0,0x0,0x0,0x0,0x0,
71 /* G */ 0x0,0x0,0x3c,0x66,0xc2,0xc0,0xc0,0xde,0xc6,0xc6,0x66,0x3a,0x0,0x0,0x0,0x0,
72 /* H */ 0x0,0x0,0xc6,0xc6,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0xc6,0x0,0x0,0x0,0x0,
73 /* I */ 0x0,0x0,0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x0,0x0,0x0,0x0,
74 /* J */ 0x0,0x0,0x1e,0xc,0xc,0xc,0xc,0xc,0xcc,0xcc,0xcc,0x78,0x0,0x0,0x0,0x0,
75 /* K */ 0x0,0x0,0xe6,0x66,0x66,0x6c,0x78,0x78,0x6c,0x66,0x66,0xe6,0x0,0x0,0x0,0x0,
76 /* L */ 0x0,0x0,0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x62,0x66,0xfe,0x0,0x0,0x0,0x0,
77 /* M */ 0x0,0x0,0xc6,0xee,0xfe,0xfe,0xd6,0xc6,0xc6,0xc6,0xc6,0xc6,0x0,0x0,0x0,0x0,
78 /* N */ 0x0,0x0,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6,0xc6,0x0,0x0,0x0,0x0,
79 /* O */ 0x0,0x0,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
80 /* P */ 0x0,0x0,0xfc,0x66,0x66,0x66,0x7c,0x60,0x60,0x60,0x60,0xf0,0x0,0x0,0x0,0x0,
81 /* Q */ 0x0,0x0,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xd6,0xde,0x7c,0xc,0xe,0x0,0x0,
82 /* R */ 0x0,0x0,0xfc,0x66,0x66,0x66,0x7c,0x6c,0x66,0x66,0x66,0xe6,0x0,0x0,0x0,0x0,
83 /* S */ 0x0,0x0,0x7c,0xc6,0xc6,0x60,0x38,0xc,0x6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
84 /* T */ 0x0,0x0,0x7e,0x7e,0x5a,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x0,0x0,0x0,0x0,
85 /* U */ 0x0,0x0,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
86 /* V */ 0x0,0x0,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x6c,0x38,0x10,0x0,0x0,0x0,0x0,
87 /* W */ 0x0,0x0,0xc6,0xc6,0xc6,0xc6,0xd6,0xd6,0xd6,0xfe,0xee,0x6c,0x0,0x0,0x0,0x0,
88 /* X */ 0x0,0x0,0xc6,0xc6,0x6c,0x7c,0x38,0x38,0x7c,0x6c,0xc6,0xc6,0x0,0x0,0x0,0x0,
89 /* Y */ 0x0,0x0,0x66,0x66,0x66,0x66,0x3c,0x18,0x18,0x18,0x18,0x3c,0x0,0x0,0x0,0x0,
90 /* Z */ 0x0,0x0,0xfe,0xc6,0x86,0xc,0x18,0x30,0x60,0xc2,0xc6,0xfe,0x0,0x0,0x0,0x0,
91 /* [ */ 0x0,0x0,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3c,0x0,0x0,0x0,0x0,
92 /* \ */ 0x0,0x0,0x0,0x80,0xc0,0xe0,0x70,0x38,0x1c,0xe,0x6,0x2,0x0,0x0,0x0,0x0,
93 /* ] */ 0x0,0x0,0x3c,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x3c,0x0,0x0,0x0,0x0,
94 /* ^ */ 0x10,0x38,0x6c,0xc6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
95 /* _ */ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,
96 /* ` */ 0x30,0x30,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
97 /* a */ 0x0,0x0,0x0,0x0,0x0,0x78,0xc,0x7c,0xcc,0xcc,0xcc,0x76,0x0,0x0,0x0,0x0,
98 /* b */ 0x0,0x0,0xe0,0x60,0x60,0x78,0x6c,0x66,0x66,0x66,0x66,0x7c,0x0,0x0,0x0,0x0,
99 /* c */ 0x0,0x0,0x0,0x0,0x0,0x7c,0xc6,0xc0,0xc0,0xc0,0xc6,0x7c,0x0,0x0,0x0,0x0,
100 /* d */ 0x0,0x0,0x1c,0xc,0xc,0x3c,0x6c,0xcc,0xcc,0xcc,0xcc,0x76,0x0,0x0,0x0,0x0,
101 /* e */ 0x0,0x0,0x0,0x0,0x0,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x0,0x0,0x0,0x0,
102 /* f */ 0x0,0x0,0x38,0x6c,0x64,0x60,0xf0,0x60,0x60,0x60,0x60,0xf0,0x0,0x0,0x0,0x0,
103 /* g */ 0x0,0x0,0x0,0x0,0x0,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0xc,0xcc,0x78,0x0,
104 /* h */ 0x0,0x0,0xe0,0x60,0x60,0x6c,0x76,0x66,0x66,0x66,0x66,0xe6,0x0,0x0,0x0,0x0,
105 /* i */ 0x0,0x0,0x18,0x18,0x0,0x38,0x18,0x18,0x18,0x18,0x18,0x3c,0x0,0x0,0x0,0x0,
106 /* j */ 0x0,0x0,0x6,0x6,0x0,0xe,0x6,0x6,0x6,0x6,0x6,0x6,0x66,0x66,0x3c,0x0,
107 /* k */ 0x0,0x0,0xe0,0x60,0x60,0x66,0x6c,0x78,0x78,0x6c,0x66,0xe6,0x0,0x0,0x0,0x0,
108 /* l */ 0x0,0x0,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x0,0x0,0x0,0x0,
109 /* m */ 0x0,0x0,0x0,0x0,0x0,0xec,0xfe,0xd6,0xd6,0xd6,0xd6,0xc6,0x0,0x0,0x0,0x0,
110 /* n */ 0x0,0x0,0x0,0x0,0x0,0xdc,0x66,0x66,0x66,0x66,0x66,0x66,0x0,0x0,0x0,0x0,
111 /* o */ 0x0,0x0,0x0,0x0,0x0,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x0,0x0,0x0,0x0,
112 /* p */ 0x0,0x0,0x0,0x0,0x0,0xdc,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0xf0,0x0,
113 /* q */ 0x0,0x0,0x0,0x0,0x0,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0xc,0xc,0x1e,0x0,
114 /* r */ 0x0,0x0,0x0,0x0,0x0,0xdc,0x76,0x66,0x60,0x60,0x60,0xf0,0x0,0x0,0x0,0x0,
115 /* s */ 0x0,0x0,0x0,0x0,0x0,0x7c,0xc6,0x60,0x38,0xc,0xc6,0x7c,0x0,0x0,0x0,0x0,
116 /* t */ 0x0,0x0,0x10,0x30,0x30,0xfc,0x30,0x30,0x30,0x30,0x36,0x1c,0x0,0x0,0x0,0x0,
117 /* u */ 0x0,0x0,0x0,0x0,0x0,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x0,0x0,0x0,0x0,
118 /* v */ 0x0,0x0,0x0,0x0,0x0,0x66,0x66,0x66,0x66,0x66,0x3c,0x18,0x0,0x0,0x0,0x0,
119 /* w */ 0x0,0x0,0x0,0x0,0x0,0xc6,0xc6,0xd6,0xd6,0xd6,0xfe,0x6c,0x0,0x0,0x0,0x0,
120 /* x */ 0x0,0x0,0x0,0x0,0x0,0xc6,0x6c,0x38,0x38,0x38,0x6c,0xc6,0x0,0x0,0x0,0x0,
121 /* y */ 0x0,0x0,0x0,0x0,0x0,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e,0x6,0xc,0xf8,0x0,
122 /* z */ 0x0,0x0,0x0,0x0,0x0,0xfe,0xcc,0x18,0x30,0x60,0xc6,0xfe,0x0,0x0,0x0,0x0,
123 /* { */ 0x0,0x0,0xe,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0xe,0x0,0x0,0x0,0x0,
124 /* | */ 0x0,0x0,0x18,0x18,0x18,0x18,0x0,0x18,0x18,0x18,0x18,0x18,0x0,0x0,0x0,0x0,
125 /* } */ 0x0,0x0,0x70,0x18,0x18,0x18,0xe,0x18,0x18,0x18,0x18,0x70,0x0,0x0,0x0,0x0,
126 /* ~ */ 0x0,0x0,0x76,0xdc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
127 };
128 
129 
130 void
131 SetScaledTextClip(xl,yl,xu,yu)
132 
133 /* set up a clipping window for text */
134 int xl,yl,xu,yu;
135 {
136  Xl = xl;
137  Yl = yl;
138  Xu = xu;
139  Yu = yu;
140 }
141 
142 
143 void
144 ScaledTextBB(string,wid,hei)
145 
146 char *string;
147 int *wid,*hei;
148 {
149  *wid = 0;
150  *hei = 0;
151  if (string == NULL) return;
152  *wid = strlen(string) * FontW;
153  *hei = FontH;
154 }
155 
156 
157 #define CharTab label_font
158 
159 int
160 ScaledText(text,x,y,degrees,scale)
161 
162 char *text;
163 int x, y, degrees, scale;
164 {
165  int i, ii, j, k, tx;
166  int xnow, ynow;
167  int fheight, fwidth;
168  unsigned short rotbuf[16], *ctab, mask;
169  unsigned short cbuf;
170  char *str0, *str1;
171 
172  if (scale < 1 || scale > 10) return (0);
173  if (text == NULL) return (0);
174 
175  if (!strcmp(dispdev->name,"wp")) {
176  /* use plain text for now */
177  DevText(text,x,y);
178  return (0);
179  }
180 
181  /* Hack! If degrees is >= 90, an angle is assumed.
182  * Otherwise, it is assumed to be an encoded transform.
183  */
184  if (degrees >= 90) degrees /= 90;
185 
186  if (!strcmp(dispdev->name,"postscript")) {
187  PS_ScaledText(text,x,y,degrees);
188  return (0);
189  }
190 
191  if (degrees & 1) {
192  fheight = FontW;
193  fwidth = FontH;
194  if (degrees & 2) {
195  if (!(degrees & 4))
196  y -= strlen(text)*fheight*scale;
197  if (degrees & 8)
198  x -= fwidth*scale;
199  }
200  else {
201  if (!(degrees & 8))
202  x -= fwidth*scale;
203  if (degrees & 4)
204  y -= strlen(text)*fheight*scale;
205  }
206  }
207  else {
208  fheight = FontH;
209  fwidth = FontW;
210  if (degrees & 2) {
211  if (!(degrees & 8))
212  x -= strlen(text)*fwidth*scale;
213  if (!(degrees & 4))
214  y -= fheight*scale;
215  }
216  else {
217  if (degrees & 8)
218  x -= strlen(text)*fwidth*scale;
219  if (degrees & 4)
220  y -= fheight*scale;
221  }
222  }
223  degrees = setcode(degrees);
224 
225  str0 = text;
226  str1 = text + strlen(text);
227  while (str0 != str1) {
228 
229  if (degrees & 8) {
230  if ((tx = (*--str1 & 0x7f) - ' ') < 0) tx = 0;
231  }
232  else
233  if ((tx = (*str0++ & 0x7f) - ' ') < 0) tx = 0;
234 
235  ctab = CharTab + tx*FontH;
236  xform_cell(rotbuf,ctab,fwidth,fheight,degrees,fwidth);
237  ctab = rotbuf + fheight - 1;
238 
239  ynow = y;
240  for (i = fheight; i; i--, ctab--) {
241  for (j = scale; j; j--) {
242  if (ynow >= Yl && ynow <= Yu) {
243  xnow = x;
244  for (mask = 0x8000,ii = fwidth; ii; mask >>= 1,ii--) {
245  for (k = scale; k; k--) {
246  if (xnow >= Xl && xnow <= Xu) {
247  if (*ctab & mask)
248  DevPixel(xnow,ynow);
249  }
250  xnow++;
251  }
252  }
253  }
254  else
255  x += fwidth*scale;
256  ynow++;
257  }
258  }
259  if (degrees & 4) {
260  y += fheight*scale;
261  continue;
262  }
263  x += fwidth*scale;
264  }
265  return (0);
266 }
267 
268 
269 static int
271 
272 int deg;
273 {
274  /*
275  * returned bit field:
276  * 0x8: load text backward
277  * 0x4: rotation
278  * 0x2: reverse y data
279  * 0x1: reverse x data
280  *
281  * Assumes input bit field:
282  * 0x8: mirror x
283  * 0x4: mirror y
284  * 0x3: 0-no rotation, 1-90, 2-180, 3-270
285  */
286 
287  int mx = 0,my = 0;
288  int rotn;
289  int xf = 0;
290 
291  rotn = deg & 3;
292  if (deg & 8) mx = 1;
293  if (deg & 4) my = 1;
294 
295  if ((mx && rotn == 0) || (!mx && rotn == 2) ||
296  (my && rotn == 1) || (!my && rotn == 3))
297  xf |= 8;
298  if (rotn & 1)
299  xf |= 4;
300  if ((my && (rotn == 0 || rotn == 1)) ||
301  (!my && (rotn == 2 || rotn == 3)))
302  xf |= 2;
303  if ((mx && (rotn == 0 || rotn == 3)) ||
304  (!mx && (rotn == 1 || rotn == 2)))
305  xf |= 1;
306  return (xf);
307 }
308 
309 
310 static void
311 xform_cell(out,in,w,h,code,shift)
312 
313 unsigned short *out,*in;
314 int w,h,code,shift;
315 {
316  int i, j, k, l;
317 
318  for (i = 0; i < h; i++) {
319  k = ((code & 2) ? h-i-1 : i);
320  if (code & 4) {
321  for (j = 0,out[i] = 0; j < w; j++) {
322  l = ((code & 1) ? (w-j-1) : j);
323  out[i] |= ((in[j] >> k) & 1) << l;
324  }
325  }
326  else {
327  if (code & 1)
328  for (j = 0,out[i] = 0; j < w; j++)
329  out[i] |= ((in[k] >> j) & 1) << (w-j-1);
330  else
331  out[i] = in[k];
332  }
333  }
334  if (shift)
335  for (i = 0,j = 16-shift; i < h; i++)
336  out[i] <<= j;
337 }
338 
static int Yu
Definition: labeltxt.c:17
int ScaledText(char *text, int x, int y, int degrees, int scale)
Definition: labeltxt.c:160
void SetScaledTextClip(int xl, int yl, int xu, int yu)
Definition: labeltxt.c:131
static complex ii
Definition: vectors.c:19
void DevText()
char * name
Definition: plotdev.h:60
DISPDEVICE * dispdev
Definition: display.c:112
#define FontW
Definition: labeltxt.c:28
Definition: cddefs.h:169
static unsigned short label_font[]
Definition: labeltxt.c:30
Definition: cddefs.h:312
#define CharTab
Definition: labeltxt.c:157
#define NULL
Definition: spdefs.h:121
static int Yl
Definition: labeltxt.c:17
void DevPixel()
static void xform_cell()
static int Xu
Definition: labeltxt.c:17
#define FontH
Definition: labeltxt.c:29
static int Xl
Definition: labeltxt.c:17
int PS_ScaledText()
void ScaledTextBB(char *string, int *wid, int *hei)
Definition: labeltxt.c:144
static int setcode()