home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!dtix!darwin.sura.net!Sirius.dfn.de!math.fu-berlin.de!pbinfo2!uni-paderborn.de!klin
- From: klin@uni-paderborn.de (Peter Klingebiel)
- Newsgroups: comp.windows.x.apps
- Subject: Plotter Widgets V6.0
- Keywords: plotter, widgets
- Message-ID: <1992Aug18.141437.2765@uni-paderborn.de>
- Date: 18 Aug 92 14:14:37 GMT
- Sender: news@uni-paderborn.de (News Uni-Paderborn)
- Organization: Uni-GH Paderborn, Germany
- Lines: 335
- Nntp-Posting-Host: pcs7
-
-
- Announcement of the AthenaTools Plotter Widget Set Version 6.0
-
- After distribution of plotter v6-beta I did some bug fixes and added a lot
- of new features to the plotter widgets. They seem to run stable on X11R4
- and X11R5 with Xaw and Xm. For changes from V6-beta to V6.0 see below.
-
- N.B. If there is anyone in U.S. who receives the plotter widgets, please
- put them to export.lcs.edu. Thanks.
-
- ------------------------------------------------------------------------------
-
- The initial version of the AthenaTools Plotter Widget Set, known as V4, as far
- as I know, was written by David Flanagan, Chris Craig, and Kambiz Soroushian
- at M.I.T. in 1990. In 1991 Gregory Bond re-wrote important parts of this code
- and called his version V5-beta. His version works fine for more business-like
- graphs, but unfortunately, there was dropped out a lot of stuff needed for
- scientific graphs.
-
- This version V6.0 is based on Gregory Bond's version V5-beta. I added some
- stuff for scientific graphs, i.e. log axes, free scalable axes, XY-lineplots
- and some more, and re-added plotter callbacks from V4, e.g. to request the
- current pointer position, or to cut off a rectangle from the plotting area for
- zooming-in. Version V6.0 has a log of bugs fixed and a log of improvements
- against V6-beta. Additionally I did some other changes/extensions, besides
-
- - Origin and frame lines for axes.
- - Subgrid lines on subtic positions.
- - Line plots in different line types (lines, points, lines+points,
- impulses, lines+impulses, steps, bars), line styles (solid, dotted,
- dashed, dot-dashed) and marker types for data points.
- - Legend at the right or left hand side of the plot.
- - Optional drawing to a pixmap instead of a window.
- - Drag and slide callback for zooming.
- - Legend select callback for selecting lines.
- - Layout callback for aligning axis positions when using
- multiple plotters in one application.
- - ... and much more ...
-
- I called this version V6.0 because I plan and I have to add some other
- features to the plotter widgets in the future (i.e. polar axes, a new
- plotter form widget, ...).
-
- Some ideas, hints and algorithms I got from gnuplot V3.0 written by
- Colin Kelley and Thomas Williams.
-
- The plotter widgets need X11R4 or X11R5 to get compiled.
- I couldn't compile on AIX 3.1 and X11R3.
-
- You can ftp the plotter widgets from the Paderborner FTP-Server:
-
- ftp@uni-paderborn.de (131.234.2.32)
- Login: ftp
- Passwd: e-mail-address
- Directory: /unix/tools
-
- Files: plotter.v60.tar.Z (contains all the sources including manual
- pages, demo programs and some documentation.
- You need groff and the me-macros to
- format the documentation!)
- plotter.afm.tar.Z (contains font metric files which are needed
- for the plotters PostScript output.
- Many TeX distributions contain these files)
-
- The subdirectories and their contents are:
-
- At contains the source of the plotter widget set and
- the include files
-
- man contains the manual pages of the plotter widgets
-
- motif contains a motif demo of the plotter. The file Plot.c
- contains all interesting code for programming and
- using the plotter widget set
-
- athena contains demos using the athena widget set. All
- files contain interesting code for programming and
- using the plotter widget set
-
- doc contains some documentation from version V5
- and this version V6-beta.
-
- Installation:
-
- - Edit and change At/Imakefile and create the library libAt.a
- - Edit and change motif/Imakefile and/or athena/Imakefile
- to create the test programs or check and edit the files
- Makefile.simple if you are missing imake
-
- - Install the include files and the library from the At subdirectory
- - Install the postscript metric fonts from the afm subdirectory
- - Install the manual pages from subdirectory man
-
- Bugs and misfits:
-
- - Many features are not yet well tested at this point in time!
- - Known bugs are i.e. in the linear XY axis code!
-
- What's to do:
-
- o A plotter form widget for aligning multiple plotters
- (axis positions, legends, titles, PS output, ...)
- o Polar axes
- o Contour and Error plot widgets
- o Color PostScript output (I'm working on)
- o More and better Motif support or Motif wrappers (???)
-
- Extensions, bug reports, patches, hints and so on are *very* welcome.
-
- Paderborn, Mon Aug 17 16:03:26 1992
-
- Peter Klingebiel
- Universitaet-Gesamthochschule Paderborn
- FB10 - Automatisierungstechnik
- Paderborn GERMANY
- klin@iat.uni-paderborn.de
-
- ------------------------------------------------------------------------------
-
- CHANGES
-
- ------------------------------------------------------------------------------
-
- Changes from version 6-beta to version 6.0
-
- ------------------------------------------------------------------------------
-
-
- o Patchlevel 1
-
- - klin, Sun Jul 19 09:39:15 1992
-
- patchlevel.h added
-
- Plotter.h, Plotter.c
-
- Added the global function AtPlotterGetLegendWidth() to get the maximal
- legend width from within application programs to give the possibility
- that the legends of multiple plotters are of the same width.
-
- RecalcLegend() changed: returns True if legend width OR heigth changed.
- RedrawLegend() always calls RecalcLegend() and calculates the correct
- legend_y value.
-
- XYAxis.c
-
- Stop infinite loop in calculation of linear tic interval using a simple
- counter in procedure LinAxisRange(). This is a workaround only! The
- linear axis core should be rewritten.
-
- - klin, Wed Jul 22 09:32:26 1992
-
- AxisCore.c
-
- Ken Rempe (ken@caesar.uucp) reported a bug in the setvalues procedure
- when changing the axis label and sent a bug fix.
-
- - klin, Fri Jul 24 15:06:19 1992
-
- PlotterPS.c
-
- Fixed a bug in PostScript code for star marker.
-
- o Patchlevel 2
-
- - klin, Mon Jul 27 14:14:32 1992
-
- Plotter.h PlotterP.h Plotter.c PlotterPS.c
-
- Added the new resource XtNlegendLeft (legend_left) which defaults
- to False. Setting this resource to True causes the plotter to
- display the legend on the left hand side of the plotting area.
-
- Added the new resource XtNautoRedisplay (auto_redisplay) which
- defaults to True. Setting this resource to False causes the plotter
- to avoid redisplaying after changes. When then this resource is set
- to True the new full state is displayed. This may be useful to
- avoid unnecessary flickering when changing multiple values or to do
- not visible changes, i.e. when writing PostScript output with
- different line styles instead of colors.
-
- Added the new resource XtNuseCursor (use_cursors) which defaults
- to True. If this resource is set then the plotter will use
- different cursors when in click or drag callback.
-
- Added the new callback XtNbusyCallback. Procedures of the
- busy callback list are called when the plotter starts redisplay
- with callback data from type AtBusyCallbackData and the item
- busy set to True. When the plotter finished the redisplay process
- this item will be set to False.
-
- Added the new resource XtNusePixmap (use_pixmap) which defaults
- to False. If this resource is set the plotter draws to a pixmap
- instead to a window. This helps avoid flickering when data often
- change, but uses more memory, especially on color terminals.
- To implement this feature, the draw procedure of all of the plotters
- child widgets (axes and plots) and the AtText code had to be
- changed.
-
- Increased the valid plotting area in callbacks some pixels.
-
- AtPlotterGeneratePostscript() generates a core dump when the
- plotter widget is not realized. Bug reported by Gustaf Neumann
- at 92/07/27 (neumann@dec4.wu-wien.ac.at, neumann@awiwuw11.bitnet).
-
- AxisCore.h AxisCoreP.h AxisCore.c
-
- Added the public function AtAxisGetNumberWidth() which can be
- used by applications to get the current number width of an axis.
- Added the resource XtNnumberWidth (default_number_width) which
- defaults to 0. This resource can be used to set the number width
- to a default value, i.e. to align the axes of multiple plotters
- in one application after the maximal number width of the axes
- are requested using AtAxisGetNumberWidth().
-
- XY*.[ch]
-
- Shorter names for procedures
-
- XYLinePlot.c
-
- When drawing impulse plots in PostScript the first impulse was missing.
- Bug in DrawPS() fixed.
-
- Added the new line types AtPlotSTEPS and AtPlotBARS.
-
- XYAxis.c
-
- Register axis transform converter in the new class initialize
- procedure ClassInitialize(). Reported by Gustaf Neumann at 92/07/27.
-
- Text.c
-
- When destroying an NIL AtText object AtTextDestroy() generates
- a core dump. Fixed and reported by Gustaf Neumann at 92/07/27
-
- o patchlevel 3
-
- - klin, Sun Aug 2 18:25:42 1992
-
- XYAxis.c
-
- Accept initial min/max values set with XtNmin/XtNmax in Initialize().
-
- Plotter.h PlotterP.h Plotter.c
-
- Added the layout callback (layout_callback) which defaults to NULL
- and is called when the plotter is in layout. Client data of this
- callback of the new type AtAxisPositions contain the positions of
- the X and Y axes and may be changed by applications or other plotters
- to align the axes of multiple plotters in one application.
- The additional function AtPlotterGetAxisPositions() may be used to get
- the current axis positions, the procedure AtPlotterSetAxisPosition()
- may be used to set aligned positions. A better way to do such axis
- alignment would be to create a new plotter form widget which holds
- and manages his child plotters and exempts the user from doing this.
-
- Added the new resource XtNtitleHeight (default_title_height) which
- defaults to 0. This resource may be used to set a default height
- for the title text, for i.e. aligning multiple plotters. The real
- height of the title string can be requested with the new function
- AtPlotterGetTitleHeight().
-
- Internal callback EnterLeave() when entering or leaving the plotter
- window added. This callback is called when entering or leaving the
- plotter window to set appropiate cursors, i.e. when procs in the
- motion callback list are defined.
-
- Cursor resources XtNxxxCursor (xxx_cursor) added.
-
- Method query_geometry in QueryGeometry() added.
-
- FontFamily.h
-
- Defined all font resource names and classes within FontFamily.h.
- Include FontFamily.h in all modules which use this stuff.
-
- ------------------------------------------------------------------------------
-
- Changes to version 6.0
-
- ------------------------------------------------------------------------------
-
- o patchlevel 4
-
- - klin, Wed Aug 12 07:33:12 1992
-
- AxisCoreP.h
-
- Bug in type of default_number_width fixed. Patch by Gustaf Neumann
- at 92/08/11 (neumann@dec4.wu-wien.ac.at, neumann@awiwuw11.bitnet).
-
- XYPlot.h XYPlotP.h XYPlot.c
-
- Added the new resources XtNxOffset (x_offset) and XtNyOffset
- (y_offset) and all needed stuff for resources and set values.
- These may be useful for displaying plot with free setable offsets
- in X and/or Y direction.
-
- - klin, Sat Aug 15 10:27:55 1992
-
- *.h *.c Imakefile Makefile.simple
-
- All X stuff should go to X directories as pointed out by Sullivan Beck
- (beck@qtp.ufl.edu). Therefore changed <At/...> to <X11/At/...>.
-
- *.man
-
- All needed updates for version 6.0
-
- FontFamilyP.h SPlot.c PlotterP.h
-
- Some typo fixes. Reported by S. Beck (beck@qtp.ufl.edu).
-
- PlotterPS.c AxisCore.c BarPlot.c LinePlot.c XYLinePlot.c
-
- Minor changes in PostScript output. Use the PS builtin transformation
- functions to avoid unexpected results in line thickness, especially
- when drawing thin lines.
-
- Plotter.h PlotterP.h Plotter.c PlotterPS.c
-
- Added resources XtNslideCallback and XtNslideCursor and all needed
- stuff for this callback. When i.e. for zooming a rectangle is
- defined on the plotting area (using the drag callback) this
- callback my be useful for sliding the drag rectangle over the
- plotting area.
- Added resources XtNselectCallback and XtNselectCursor and all needed
- stuff for this callback. This is useful for selecting plots from
- within the plotter's legend, i.e. for further changes to this plot.
- Added busy callback in PostScript output routines.
- Added reason item to callback data structs.
- Some more minor changes in callbacks.
-
- ------------------------------------------------------------------------------
-