File: twips.c

package info (click to toggle)
wv 1.2.9-9
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 5,284 kB
  • sloc: ansic: 31,044; sh: 11,660; xml: 1,677; makefile: 20
file content (93 lines) | stat: -rw-r--r-- 2,236 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* wvWare
 * Copyright (C) Caolan McNamara, Dom Lachowicz, and others
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdlib.h>
#include <stdio.h>
#include "wv.h"

/* 
basically the definition of a twip is that there
are 1440 twips per inch, now for html we need this
figure in pixels, so we have to take some screen
resolution as a standard to work from.

if we were to take hozitontal twips and a 1280 pixel
wide screen then there are
1440 twips per 75 pixels

if we were to take vertical twips and a 1024 pixel
high screen then there are
1440 twips per 75 pixels
*/

#define TWIPS_PER_INCH 1440
#if 0
#define PIXELS_PER_H_INCH 75
#define PIXELS_PER_V_INCH 75
#else
#define PIXELS_PER_H_INCH 100
#define PIXELS_PER_V_INCH 100
#endif

static S16 pperhi = PIXELS_PER_H_INCH;
static S16 ppervi = PIXELS_PER_V_INCH;

void
wvSetPixelsPerInch (S16 hpixels, S16 vpixels)
{
    pperhi = hpixels;
    ppervi = vpixels;
}


float
wvTwipsToHPixels (S16 twips)
{
    float ret = ((float) (pperhi * twips)) / TWIPS_PER_INCH;
    wvTrace (("ret is %f\n", ret));
    return (ret);
}

float
wvTwipsToVPixels (S16 twips)
{
    float ret = ((float) (ppervi * twips)) / TWIPS_PER_INCH;
    wvTrace (("ret is %f\n", ret));
    return (ret);
}

float
wvTwipsToMM (S16 twips)
{
    float ret;
    ret = ((float) twips) / TWIPS_PER_INCH;
    ret = ret * (float) 25.0;
    return (ret);
}

/* [A twip ] is one-twentieth of a point size*/
float
wvPointsToMM (S16 points)
{
    return (wvTwipsToMM ((S16) (points * 20)));
}