File: twips.c

package info (click to toggle)
wv 1.0.2-0.1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,428 kB
  • ctags: 6,733
  • sloc: ansic: 59,221; sh: 9,998; xml: 1,677; makefile: 36
file content (73 lines) | stat: -rw-r--r-- 1,440 bytes parent folder | download | duplicates (3)
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
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#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)));
}