beta-0.89.2
[luatex.git] / source / texk / kpathsea / magstep.h
blobeae08f6a35d684096b6bfa5a0e0e6a9bd54d6d8f
1 /* magstep.h: declaration for magstep fixing.
3 Copyright 1994, 2008, 2009 Karl Berry.
4 Copyright 1999, 2005 Olaf Weber.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with this library; if not, see <http://www.gnu.org/licenses/>. */
19 #ifndef KPATHSEA_MAGSTEP_H
20 #define KPATHSEA_MAGSTEP_H
22 #include <kpathsea/c-proto.h>
23 #include <kpathsea/types.h>
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
29 /* If DPI is close enough to some magstep of BDPI, return the true dpi
30 value, and the magstep found (or zero) in M_RET (if
31 non-null). ``Close enough'' means within one pixel.
33 M_RET is slightly encoded: the least significant bit is on for a
34 half-magstep, off otherwise. Thus, a returned M_RET of 1 means
35 \magstephalf, i.e., sqrt(1.2), i.e., 1.09544. Put another way,
36 return twice the number of magsteps.
38 In practice, this matters for magstephalf. Floating-point computation
39 with the fixed-point DVI representation leads to 328 (for BDPI ==
40 300); specifying `at 11pt' yields 330; the true \magstephalf is 329
41 (that's what you get if you run Metafont with mag:=magstep(.5)).
43 The time to call this is after you read the font spec from the DVI
44 file, but before you look up any files -- do the usual floating-point
45 computations, and then fix up the result. */
47 extern KPSEDLL unsigned kpathsea_magstep_fix (kpathsea kpse, unsigned dpi,
48 unsigned bdpi, int *m_ret);
50 #if defined (KPSE_COMPAT_API)
51 extern KPSEDLL unsigned kpse_magstep_fix (unsigned dpi, unsigned bdpi,
52 int *m_ret);
53 #endif
55 #ifdef __cplusplus
57 #endif
59 #endif /* not KPATHSEA_MAGSTEP_H */