2 /* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
3 Written by James Clark (jjc@jclark.com)
5 This file is part of groff.
7 groff is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
12 groff is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 You should have received a copy of the GNU General Public License along
18 with groff; see the file COPYING. If not, write to the Free Software
19 Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
29 vunits& operator+=(const vunits&);
30 vunits& operator-=(const vunits&);
31 friend inline vunits scale(vunits n, units x, units y); // scale n by x/y
32 friend inline vunits scale(vunits n, vunits x, vunits y);
33 friend inline vunits operator +(const vunits&, const vunits&);
34 friend inline vunits operator -(const vunits&, const vunits&);
35 friend inline vunits operator -(const vunits&);
36 friend inline int operator /(const vunits&, const vunits&);
37 friend inline vunits operator /(const vunits&, int);
38 friend inline vunits operator *(const vunits&, int);
39 friend inline vunits operator *(int, const vunits&);
40 friend inline int operator <(const vunits&, const vunits&);
41 friend inline int operator >(const vunits&, const vunits&);
42 friend inline int operator <=(const vunits&, const vunits&);
43 friend inline int operator >=(const vunits&, const vunits&);
44 friend inline int operator ==(const vunits&, const vunits&);
45 friend inline int operator !=(const vunits&, const vunits&);
58 hunits& operator+=(const hunits&);
59 hunits& operator-=(const hunits&);
60 friend inline hunits scale(hunits n, units x, units y); // scale n by x/y
61 friend inline hunits scale(hunits n, double x);
62 friend inline hunits operator +(const hunits&, const hunits&);
63 friend inline hunits operator -(const hunits&, const hunits&);
64 friend inline hunits operator -(const hunits&);
65 friend inline int operator /(const hunits&, const hunits&);
66 friend inline hunits operator /(const hunits&, int);
67 friend inline hunits operator *(const hunits&, int);
68 friend inline hunits operator *(int, const hunits&);
69 friend inline int operator <(const hunits&, const hunits&);
70 friend inline int operator >(const hunits&, const hunits&);
71 friend inline int operator <=(const hunits&, const hunits&);
72 friend inline int operator >=(const hunits&, const hunits&);
73 friend inline int operator ==(const hunits&, const hunits&);
74 friend inline int operator !=(const hunits&, const hunits&);
79 extern int get_vunits(vunits *, unsigned char si);
80 extern int get_hunits(hunits *, unsigned char si);
81 extern int get_vunits(vunits *, unsigned char si, vunits prev_value);
82 extern int get_hunits(hunits *, unsigned char si, hunits prev_value);
84 inline vunits:: vunits() : n(0)
88 inline units vunits::to_units()
93 inline int vunits::is_zero()
98 inline vunits operator +(const vunits & x, const vunits & y)
106 inline vunits operator -(const vunits & x, const vunits & y)
114 inline vunits operator -(const vunits & x)
121 inline int operator /(const vunits & x, const vunits & y)
126 inline vunits operator /(const vunits & x, int n)
134 inline vunits operator *(const vunits & x, int n)
142 inline vunits operator *(int n, const vunits & x)
150 inline int operator <(const vunits & x, const vunits & y)
155 inline int operator >(const vunits & x, const vunits & y)
160 inline int operator <=(const vunits & x, const vunits & y)
165 inline int operator >=(const vunits & x, const vunits & y)
170 inline int operator ==(const vunits & x, const vunits & y)
175 inline int operator !=(const vunits & x, const vunits & y)
181 inline vunits& vunits::operator+=(const vunits & x)
187 inline vunits& vunits::operator-=(const vunits & x)
193 inline hunits:: hunits() : n(0)
197 inline units hunits::to_units()
199 return n*hresolution;
202 inline int hunits::is_zero()
207 inline hunits operator +(const hunits & x, const hunits & y)
215 inline hunits operator -(const hunits & x, const hunits & y)
223 inline hunits operator -(const hunits & x)
231 inline int operator /(const hunits & x, const hunits & y)
236 inline hunits operator /(const hunits & x, int n)
244 inline hunits operator *(const hunits & x, int n)
252 inline hunits operator *(int n, const hunits & x)
260 inline int operator <(const hunits & x, const hunits & y)
265 inline int operator >(const hunits & x, const hunits & y)
270 inline int operator <=(const hunits & x, const hunits & y)
275 inline int operator >=(const hunits & x, const hunits & y)
280 inline int operator ==(const hunits & x, const hunits & y)
285 inline int operator !=(const hunits & x, const hunits & y)
291 inline hunits& hunits::operator+=(const hunits & x)
297 inline hunits& hunits::operator-=(const hunits & x)
303 inline hunits scale(hunits n, units x, units y)
306 r.n = scale(n.n, x, y);
310 inline vunits scale(vunits n, units x, units y)
313 r.n = scale(n.n, x, y);
317 inline vunits scale(vunits n, vunits x, vunits y)
320 r.n = scale(n.n, x.n, y.n);
324 inline hunits scale(hunits n, double x)
331 inline units scale(units n, double x)
336 inline units points_to_units(units n)
338 return scale(n, units_per_inch, 72);