File: COMPAT

package info (click to toggle)
plotutils 2.4.1-15
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 11,072 kB
  • ctags: 6,952
  • sloc: ansic: 76,305; cpp: 12,402; sh: 8,475; yacc: 2,604; makefile: 894; lex: 144
file content (306 lines) | stat: -rw-r--r-- 14,518 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
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
These are some release notes that deal with new features and backward
compatibility of the plotutils package, on both the user and programmer
levels.

Release 2.4.1, dated 7/2000
---------------------------

The `--page-size' option supported by the command-line graphics utilities
has been extended, to allow precise specification of viewport size and
location in the output, e.g., on a printed page.  For example,
`--page-size=letter,xsize=5in,ysize=3in,xorigin=1in,yorigin=2in' is now a
possible command-line option.  Previously, only `xoffset' and `yoffset'
fields were supported.

You can get some interesting visual effects by setting xsize or ysize to a
negative value.  For example,

echo 0 0 1 1 2 0 | graph -Tps --page-size letter,xsize=-8in,ysize=8in

will write to standard output a Postscript graph for a letter-size page.
The graph will be drawn into a viewport that has the same size as usual
(8in x 8in), but it will be reflected from left to right.

The ability to specify a custom viewport size should be useful when
producing SVG or WebCGM graphics for Web pages.  When producing SVG or
WebCGM output, only the xsize,ysize fields are meaningful; xorigin,
yorigin, xoffset, and yoffset are ignored.

The syntax of the libplot Plotter parameter `PAGESIZE' has been similarly
extended.

Libplot version number is now 4.1.

Release 2.4, dated 6/2000
-------------------------

SVG output is now supported.  SVG is a new XML-based vector graphics format
being developed by the W3 Consortium.

The command-line plotting utilities now support `-T svg --bg-color none'
and `-T cgm --bg-color none' options, to turn off the background (which by
default is white) in SVG and WebCGM output.  This is useful when generating
graphics files for use in Web pages.  Similarly, in libplot, SVG and CGM
Plotters now allow the parameter `BG_COLOR' to equal "none".

PNG output is now supported.  A PNG driver will be installed in libplot,
and made available to the command-line plotting utilities, if libpng and
libz are found at installation time.  The version number of libpng must be
0.95 or larger (libpng 0.95 was released in March 1997).

If the PNG driver is included, you must now include the additional options
`-lpng -lz' when compiling and linking a program with libplot or
libplotter.  `configure' now supports a `--without-libpng' option to
disable PNG support.

ReGIS output is now supported, for display on older graphics terminals like
the VT340 (color), the VT330 (monochrome), and emulators.  The ReGIS driver
contains a blemish: paths that extend beyond the boundary of a ReGIS
display are never filled, even if filling is requested, because they need
to be clipped against the boundary, and the required clipping code hasn't
yet been written.

Colors may now be specified, both on the command line and when using the
libplot API, by their 24-bit RGB representation, expressed as six
hexadecimal digits.  For example, "#ffffff" is equivalent to "white".

The command-line plotting utilities now support an `--emulate-color yes'
option, and all Plotters now support a corresponding parameter,
"EMULATE_COLOR".  If emulation is performed, all colors in the output will
be replaced by grayscale approximations.  This is particularly useful when
producing PCL 5 output to be printed on a monochrome PCL 5 device, such as
a monochrome LaserJet.  Many monochrome PCL 5 devices, on their own, do a
poor job of emulating color (they print every nonwhite solid color as
black).

libplot now supports compound paths, i.e. paths that are made up of
multiple simple paths, so long as the simple paths do not intersect each
other (they are allowed to intersect themselves).  You draw each simple
path of a compound path in the usual way, but you end each one by calling
endsubpath().  The compound path is terminated and drawn by calling
endpath().  Just as when traditional non-compound paths are drawn, the call
to endpath() can usually be omitted.

So the libplot API has been expanded to include endsubpath(), and
orientation() too.  orientation() specifies the direction in which
circles/ellipses/boxes are traversed.  (Specifying this, for any
circle/ellipse/box that is a subpath of a compound path, affects the
filling of the compound path by determining which points are `inside' or
`outside'.)

Handling of device-resident HP vector fonts ("stick fonts"), when drawing
text strings in HP-GL/2 output, has been improved.  Previously, no account
was taken of device-resident font kerning.  That's appropriate when
producing PCL 5 output for a LaserJet with an HP-GL/2 emulation module,
since LaserJets don't do sophisticated kerning of stick fonts, even when
they support them.  But any full-featured HP-GL/2 plotter can do kerning of
variable-width stick fonts.  So when producing HP-GL/2 output, we now take
that into account when computing the width of text strings.  This affects
the positioning of text strings on an output page.

The StickANK and ArcANK HP vector fonts, which provide JIS ASCII and
half-width Katakana, are now available when producing HP-GL/2 output.

The miter limit (for line joins) which is placed in any HP-GL/2 or PCL 5
output file is now always rounded to the closest integer, downward.  That's
because at least one HP-GL/2 pen plotter (the HP 7550B, which was HP's
first) had buggy firmware that couldn't parse a non-integer miter limit.

When HPGL_VERSION is set to 1 or 1.5, the filling of solid regions now uses
cross-hatching, instead of the filling with a single pen color that used to
be used.  This occurs whenever the fill color is not one of the defined pen
colors.  The algorithm employed, for emulating shading by cross-hatching,
is the one used by HP's HP-GL/2 pen plotters.

A new function, fsetmatrix(), has been added to the libplot/libplotter API,
as an alternative to space().  It sets the transformation matrix from user
coordinates to NDC (normalized device coordinates).  In NDC space, the
graphics display, i.e. viewport, has corners (0,0), (1,0), (1,1), (0,1).
space() and/or fsetmatrix() no longer need to be called at the beginning of
each page of graphics.

The alabel() function in the libplot/libplotter API now accepts a new
vertical positioning option, `C', to request alignment of a text string's
cap line with the present vertical position.

Color drawing on X displays has been speeded up.  If the X display uses a
truecolor `visual', pixel value computations are performed in libplot
itself, rather than in the X server.  This removes the need to call
XAllocColor() whenever a new pen color or fill color is selected (which
used to require a round-trip to the server, slowing things down).  Also, a
Plotter parameter `XDRAWABLE_VISUAL' has been added.  It should be set by
the programmer if a non-default colormap is used.  libplot can determine
from it whether or not the visual is of the truecolor class.

Libplot version number is now 4.0.

Release 2.3, dated 10/1999
--------------------------

CGM output is now supported.  By default, a CGM Plotter emits
binary-encoded version-3 CGM format, conforming to the WebCGM profile.
(For information on WebCGM, see http://www.cgmopen.org .)  The CGM format
version number may be reduced by setting the libplot parameter (or
environment variable) CGM_MAX_VERSION.  Irrespective of version, a
human-readable CGM file, i.e., one encoded as clear text, may be produced
by setting CGM_ENCODING to "clear_text".  Clear text CGM files are valid
CGM files, though technically they don't conform to the WebCGM profile
(a WebCGM file is meant to be binary).

The package is now based on libplot version 3.0, which has new thread-safe
C and C++ APIs, i.e. APIs which (1) maintain no global state, and (2) are
pthread-aware.  The names of all new thread-safe libplot functions end in
"_r", for `reentrant' or `revised'.  Each of them takes a pointer to an
opaque plPlotter object as its first argument.

There are new functions in both libplot and libplotter for creating and
manipulating PlotterParams objects, which store Plotter parameters.
Parameters are copied from such an object when the Plotter class is
instantiated.

The old C and C++ API's are still supported, though deprecated.  So you can
still use pl_newpl() and pl_openpl(), etc., instead of pl_newpl_r() and
pl_openpl_r(), etc.

A new API function, pl_pentype_r(), has been added.  If its argument is 0,
stroking of paths, as opposed to filling, will be turned off.  So `edgeless
polygons' can now be drawn.

Fig and PCL Plotters now position their viewports (i.e. "graphics displays")
in the center of their pages, like PS Plotters.  So the PCL_XOFFSET and
PCL_YOFFSET parameters have been removed, and PCL_ROTATE too.  Similarly,
HPGL_XOFFSET and HPGL_YOFFSET parameters have been removed, even though tbe
viewport position for HP-GL Plotters has not changed.

Shifting of the viewport on the page, for PCL, HP-GL, Fig, and PS Plotters,
is now accomplished through the PAGESIZE parameter.  E.g., its value could
be "letter,xoffset=1in,yoffset=-2cm" or "a4,yoffset=12mm".

A new parameter, ROTATION, has been introduced; it applies to PCL, HP-GL,
Fig, and PS Plotters.  It defines rotation of the viewport on the page,
which is not the same as what the HPGL_ROTATE parameter, previously
introduced for HPGL Plotters, defines.  Values of ROTATION can be "no",
"yes", "0", "90", "180", "270".

A new scan-conversion library, called libxmi, is optionally built and
installed, together with documentation.  It contains the scan-conversion
code that is used by libplot's GIF and PNM drivers, which is based on the
X11 sample server code.  libxmi is also distributed independently.  The
libxmi version number is 1.1.

Release 2.2, dated 3/1999
-------------------------

Massive expansion of the C API, with new drivers, and introduction of
libplotter (C++ class library).  Backward compatibility of the C API
maintained, except that all functions now begin with "pl_".  Header file
"plotcompat.h", if needed, will redefine old function names as new function
names.  Libplot version number is now 2.0.

outfile() function, always more or less deprecated, now declared
obsolescent.  No longer documented.

Release 2.1.6
-------------

AI driver added, but libplot API unchanged.  Libplot version number is now
1.6.

Support in plot.h header file for old names for endpath() and filltype(),
which began in plotutils-2.0 (see below), finally dropped.

Release 2.1.5
-------------

PCL 5 driver added.  Kerning of device-resident `HP stick fonts' accessible
to the HP-GL driver, when HPGL_VERSION=1.5, also added.  Libplot API
unchanged, but libplot version number is now 1.5.


Release 2.1.2, 2.1.3, 2.1.4
---------------------------

No additions to libplot API, but the semantics of closepl() vs. deletepl()
have finally changed (programmers were warned about this in the texinfo
documentation).  The libplot version number is now 1.2 (upped to 1.3 for
release 2.1.3 and 1.4 for 2.1.4).

Plotter output, for non-realtime plotting, is now guaranteed to be emitted
only when deletepl() is called.  I.e., graphic output is not necessarily
written to the output stream after each page is closed.  In practice, this
affects only Postscript output.  Emitting PS only after the final page of a
multi-page graphics file is closed enables the PS to conform to the DSC
(Postscript Document Structuring Conventions).  

Support for many new stick fonts added (mostly available only if using 
`-T hpgl', with HPGL_VERSION=1.5.  `Stick fonts' are HP's device-resident 
vector fonts.

If using `-T hpgl' with HPGL_VERSION=1, circles and rectangles aligned 
with the coordinate axes can now be filled.

Names of many Hershey fonts changed, but old names continue to work.


Release 2.1.1
-------------

No additions to libplot API, though libplot was improved in various ways.
The libplot version number is now 1.1.

Release 2.1
-----------

No incompatibilities with plotutils release 2.0.  But many new command-line
options added to user-level utilities, and the libplot API was expanded by
the addition of bgcolor() and bgcolorname().  The libplot version number is
now 1.0.

Release 2.0
-----------

In release 2.0 the idea of separate variants of the `graph', `plot', and
`tek2plot' programs for each display device was finally done away with.
There is now only a single instance of each program.  The display device is
specified by the `-T' option.

The merging of the device-specific variants was made possible by the
merging of the device-specific variants of the libplot library on which
they were based.  There is now only a single library, which is structured
in an object-oriented way.  There are new functions, newpl(), selectpl(),
openpl(), which allow the creation of an arbitrarily large number of
`Plotter' objects simultaneously.  Each Plotter produces output for one
display device.

On startup of libplot, a single default Plotter is created and selected,
namely one that produces GNU metafile format.  This is for backward
compatibility: it allows programs written for earlier versions of GNU
libplot, and even Unix libplot, to link with it and run as expected.  If
you prefer a different default Plotter type, you should select it at
installation time.  For example, including -DDEFAULT_PLOTTER_TYPE=\"ps\"
in your CFLAGS option will cause the default Plotter to produce
Postscript output instead.

The libplot API changed in release 2.0 in a few other ways.

1. falabel() was dropped from the API, and alabel() no longer returns a
value related to the width of the text string that it renders.  If you need
to get the width of a text string, use flabelwidth() or labelwidth().

2. The semantics of the arc() primitive have changed.  It now draws an arc
that may be clockwise as well as counterclockwise, but is restricted to
have opening angle no more than 180 degrees.  Also, it moves the graphics
cursor position to the endpoint of the arc.

3. The box() primitive now moves the graphics cursor to the midpoint of the
box, rather than to the second-specified vertex.

4. endpoly() has been renamed endpath(), and fill() has been renamed
filltype().  These last changes are temporarily supported by the plot.h
include file.

As of release 2.0 of the package, libplot has its own, independent,
versioning system.  The version of libplot distributed with release 2.0 is
numbered 0.0.  Beginning with version 0.0, libplot is installed both as a
static library and as a shared library (a DLL), on machines that support
shared libraries.