File: g_pagetype.h

package info (click to toggle)
plotutils 2.6-15
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,040 kB
  • sloc: ansic: 68,670; sh: 20,086; cpp: 12,382; yacc: 2,588; makefile: 838; lex: 137
file content (161 lines) | stat: -rw-r--r-- 7,052 bytes parent folder | download | duplicates (7)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/* This file is part of the GNU plotutils package.  Copyright (C) 1995,
   1996, 1997, 1998, 1999, 2000, 2005, 2008, Free Software Foundation, Inc.

   The GNU plotutils package is free software.  You may 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, or (at your
   option) any later version.

   The GNU plotutils package 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 the GNU plotutils package; see the file COPYING.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin St., Fifth Floor,
   Boston, MA 02110-1301, USA. */

/* This header file is #include'd by g_pagetype.c.  It is a database rather
   than a true header file: it lists known page sizes and dimensions.

   Fields are:
   (1) name, (2) alternative name, (3) name used by Fig, 
   (4) whether metric, as opposed to imperial, units are associated
       with this page size.
   (5) width in inches,
   (6) height in inches,
   (7) the size of the viewport (a square) we place on the page.  

       (The viewport is positioned at the center of the page except when
       producing HP-GL[/2] output.  For HP-GL[/2], as opposed to HP-GL/2
       embedded in PCL5, we have no definite information about the location
       of the origin of the device coordinate system [we don't even know
       whether the device is plotting in portrait or landscape mode,
       though it's probably landscape mode].)

       Our convention: both in the pure-HP-GL[/2] case and in all other
       cases, the viewport is chosen to have a fixed size that's no larger
       than the smaller dimension of the plotting area used, for the
       specified page type, by AutoCAD.  AutoCAD presumably does a good job
       of selecting a plotting area (a rectangle) that will fit on a
       landscape-mode HP-GL[/2] page.

       In the HP-GL[/2] case we make no attempt at centering the viewport,
       though at least one of the two coordinates shouldn't be centered too
       badly.  The user can manually adjust the location of the viewport.
       
   (8,9) the origin of the device coordinate system, when HP-GL/2 is
       embedded in PCL5; relative to the lower left corner of page.  
       Source: the "PCL 5 Comparison Guide", from Hewlett-Packard.

       Note that when a PCL5 "dual context" portrait-mode device is
       switched to HP-GL/2 mode, the HP-GL/2 plotting is also in portrait
       mode.  I.e., on a PCL5 device doing HP-GL/2 emulation it's possible
       to set the portrait/landscape mode programmatically, unlike a pure
       HP-GL/2 device.

   (10) the plot length (of importance mostly for roll plotters, when
        pure HP-GL/2, rather than HP-GL/2 embedded in PCL5, is output).
	I've come up with values that I hope are appropriate.

   Explanatory comments:

   In general, the origin for the HP-GL[/2] coordinate system is not a
   corner of the printed page.  (This is an old convention, dating back to
   early pen plotter days.)  It is the lower left corner of the `hard-clip
   region', a proper subrectangle of the printed page.  The size and
   orientation of the hard-clip region differ from device to device.
   Fields #8, #9 below give the location of the origin in a PCL device
   supporting HP-GL/2.  Fields #8, #9 could equally well be defined as the
   x margin and y margin between the HP-GL/2 hard-clip region and the
   boundary of the page.  The HP-GL/2 hard-clip region is a proper
   subrectangle of the rectangular area of the page that is imageable from
   within PCL.

   In a pure HP-GL/2 device, there is no easy way to determine the origin.
   (In fact in early HP-GL plotters, unlike HP-GL/2 plotters, the lower
   left corner of the hard-clip region wasn't even the same as the default
   location of the so-called HP-GL `scaling point' P1.) */

#define PL_NUM_PAGESIZES 13

static const plPageData _pagedata[PL_NUM_PAGESIZES] =
{
  /* ANSI A, 8.5in x 11.0in */
  /* AutoCAD plotting area is 8.0x10.5;
     we choose viewport size 8.0in */
  { "a", "letter", "Letter", false, 
    8.5, 11.0, 8.0, 75.0/300, 150.0/300, 10.5 },

  /* ANSI B, 11.0in x 17.0in */
  /* AutoCAD plotting area is 10.0x16.0;
     we choose viewport size 10.0in */
  { "b", "tabloid", "B", false,
    11.0, 17.0, 10.0, 75.0/300, 150.0/300, 16.0 },

  /* ANSI C, 17.0in x 22.0in */
  /* AutoCAD plotting area is 16.0x21.0;
     we choose viewport size 16.0in */
  { "c", NULL, "C", false,
    17.0, 22.0, 16.0, 75.0/300, 150.0/300, 21.0 },

  /* ANSI D, 22.0in x 34.0in */
  /* AutoCAD plotting area is 21.0x33.0;
     we choose viewport size 20.0in */
  { "d", NULL, "D", false,
    22.0, 34.0, 20.0, 75.0/300, 150.0/300, 33.0 },

  /* ANSI E, 34.0in x 44.0in */
  /* AutoCAD plotting area is 33.0x43.0;
     we choose viewport size 32.0in */
  { "e", NULL, "E", false,
    34.0, 44.0, 32.0, 75.0/300, 150.0/300, 43.0 },

  /* legal, 8.5in x 14in; not an ANSI size */
  /* AutoCAD plotting area unknown; 
     we choose viewport size = 8.0in */
  { "legal", NULL, "Legal", false,
    8.5, 14.0, 8.0, 75.0/300, 150.0/300, 16.0 },

  /* ledger, 17in x 11in (rotated ANSI B); not an ANSI size ? */
  /* we use viewport size = 10.0in */
  { "ledger", NULL, "Ledger", false,
    17.0, 11.0, 10.0, 150.0/300, 75.0/300, 10.0 },

  /* ISO A4, 21.0cm x 29.7 cm = 8.27 x 11.69 */
  /* AutoCAD plotting area is 7.8x11.2; 
     we choose viewport size 7.8in=19.81cm [N.B. 7.87in = 20cm] */
  { "a4", NULL, "A4", true,
    8.27, 11.69, 7.8, 71.0/300, 150.0/300, 11.2 },

  /* ISO A3, 29.7cm x 42.0 cm  = 11.69 x 16.54 */
  /* AutoCAD plotting area is 10.7x15.6; 
     we choose viewport size 10.7in=27.18cm [N.B. 10.62in = 27cm] */
  { "a3", NULL, "A3", true,
    11.69, 16.54, 10.7, 71.0/300, 150.0/300, 15.6 },

  /* ISO A2, 42.0cm x 59.4 cm = 16.54 x 23.39 */
  /* AutoCAD plotting area is 15.6x22.4; 
     we choose viewport size 15.6in=39.62cm [N.B. 15.75in = 40cm] */
  { "a2", NULL, "A2", true,
    16.54, 23.39, 15.6, 71.0/300, 150.0/300, 22.4 },

  /* ISO A1, 59.4cm x 84.1 cm = 23.39 x 33.11 */
  /* AutoCAD plotting area is 22.4x32.2; 
     we choose viewport size 22.4in=56.90cm [N.B. 21.26in = 54cm] */
  { "a1", NULL, "A1", true,
    23.39, 33.11, 22.4, 71.0/300, 150.0/300, 32.2 },

  /* ISO A0, 84.1cm x 118.9 cm = 33.11 x 46.81 */
  /* AutoCAD plotting area is 32.2x45.9; 
     we choose viewport size 32.2in=81.79cm [N.B. 31.50in = 80cm] */
  { "a0", NULL, "A0", true,
    33.11, 46.81, 32.2, 71.0/300, 150.0/300, 45.9 },

  /* JIS B5, 18.2cm x 25.7 cm = 7.17 x 10.12 */
  /* AutoCAD plotting area is 6.67x9.62(?); 
     we choose viewport size 6.67in=16.94cm [N.B. 6.30in = 16cm] */
  { "b5", NULL, "B5", true,
    7.17, 10.12, 6.67, 71.0/300, 150.0/300, 9.62 }
};