1 #include "hpscat.h"
2 #include "paper.h"
3 #include <string.h>
4 #include <stdlib.h>
5 
6 #define MIN(a,b)  ( ((a) > (b)) ? (b) : (a) )
7 #define MAX(a,b)  ( ((a) < (b)) ? (b) : (a) )
8 
9 /* names and  dimensions(width and height) of paper types defined in paper.h
10    unit is in standard Postscript point(1 PS point = 1/72 inch.
11   */
12 
13 PAPERSIZE  papersize[user+1]= { {"a3",842,1190}, {"a4",595,842}, {"a5",420,595},
14                         {"b4",729,1032},{"b5",516,729},
15                         {"letter",612,792},{"10x14",720,1008},
16                         {"legal",612,1008},{"executive",540,720},
17                         {"folio",612,936},{"quarto",610,780},
18                         {"statement",396,612},{"ledger",1224,792},
19                         {"tabloid",792,1224}, {"c5",459,649},
20                         {"user",0,0} };
21 
22 
23 
24 /* symbol and conversion factor to standard PS point(1 PS point = 1/72 inch)
25    of length units defined in paper.h */
26 UNITDEF unit[null+1]={ {"mm",2.835}, {"cm",28.35},{"in",72.0},
27                         {"pt",1.0},{"",1.0} };
28 
29 int s_width;
30 int l_width,l_height,l_lm1,l_lm2,l_bm,l_tm;
31 int l3_width,l3_height,l3_lm1,l3_lm2,l3_lm3,l3_bm,l3_tm;
32 int p_width,p_height,p_lm,p_bm,p_tm;
33 int p2_width,p2_height,p2_lm1,p2_lm2,p2_bm,p2_tm;
34 
35 
36 
37 
a2point(char * token)38 int a2point(char *token)
39 {
40 
41    char *a;
42    int  n = strlen(token);
43 
44    UNIT i;
45 
46    for ( i = milimeter ; i< null; i++)
47        if ( !strcmp(token+(strlen(token)- strlen(unit[i].sym)), unit[i].sym)){
48           n -= strlen(unit[i].sym);
49           break;
50        }
51 
52    a = (char *) malloc( n + 1);
53    strncpy (a,token, n);
54    a[n]='\0';
55    return (int) ( (float) atof( a ) * unit[i].ratio ) ;
56 }
57 
setmargin()58 void setmargin()
59 {
60 
61 
62 /*
63   l_lm1   =  (int) (papersize[paper].height * LLM1_ratio);
64   l_width = (int) (papersize[paper].height * LW_ratio);
65   l_lm2   = l_lm1 + l_width;
66 */
67 
68   l_lm1   =  MAX ( (int) (papersize[paper].height * LLM1_ratio), min_lm);
69   l_width = ( papersize[paper].height - l_lm1 * 2 ) / 2 ;
70   l_lm2   = l_lm1 + l_width;
71 
72 /* See hpscat.h for HOR_SCALE_FAC */
73 
74   l_lm1 = (int) (l_lm1 * 1.0 / HOR_SCALE_FAC);
75   l_width = (int) (l_width * 1.0 / HOR_SCALE_FAC);
76   l_lm2  = (int) ( l_lm2 * 1.0 / HOR_SCALE_FAC);
77 
78 
79   l_bm    = MAX ( (int) (papersize[paper].width * LBM_ratio), min_bm) ;
80   l_bm = (int) (l_bm -  ((noheader && notitle) * HEAD_height  +
81                    nofooter * FOOT_height) / 2. / 1.3 );
82   l_height = papersize[paper].width - (int) (l_bm * ( 1. + TMBM_ratio)+0.5) ;
83   l_tm    = l_bm + l_height;
84 
85 
86 /*
87   l_bm    = (int) (papersize[paper].width * LBM_ratio);
88   l_height = (int) (papersize[paper].width * LH_ratio) ;
89   l_tm    = l_bm + l_height;
90 */
91 
92 
93 
94   l3_width = (int) (l_width * 2.0/3.0);
95   l3_height = l_height;
96 
97   l3_lm1 = l_lm1;
98   l3_lm2 = l3_lm1 + l3_width;
99   l3_lm3 = l3_lm2 + l3_width;
100   l3_bm  = l_bm;
101   l3_tm  = l_tm;
102 
103   p_lm = MAX( (int) (papersize[paper].width * PLM_ratio), min_lm);
104   p_width = papersize[paper].width  - p_lm * 2;
105   p_lm = (int) (p_lm * 1.0 / HOR_SCALE_FAC);
106   p_width = (int) (p_width * 1.0 / HOR_SCALE_FAC);
107 
108 /*
109   p_width = (int) (papersize[paper].width * PW_ratio);
110   p_lm = (int) (papersize[paper].width * PLM_ratio);
111 */
112 
113   p_bm    = MAX( (int) (papersize[paper].height * PBM_ratio), min_bm) ;
114   p_bm = p_bm -  ((noheader && notitle) * HEAD_height
115                  + nofooter * FOOT_height) / 2;
116   p_height = papersize[paper].height - (int) (p_bm * ( 1. + TMBM_ratio)+ 0.5) ;
117   p_tm    = p_height + p_bm;
118 
119 /*
120   p_height = (int) (papersize[paper].height * PH_ratio);
121   p_bm = (int) (papersize[paper].height * PBM_ratio);
122   p_tm = p_bm + p_height;
123 */
124 
125   p2_width = (int) (p_width/2.0);
126   p2_height = p_height;
127 
128   p2_lm1 = p_lm;
129   p2_lm2 = p2_lm1+p2_width;
130   p2_bm = p_bm;
131   p2_tm = p_tm;
132 
133 }
134