home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / windows / x / apps / 793 < prev    next >
Encoding:
Internet Message Format  |  1992-08-18  |  12.4 KB

  1. Path: sparky!uunet!dtix!darwin.sura.net!Sirius.dfn.de!math.fu-berlin.de!pbinfo2!uni-paderborn.de!klin
  2. From: klin@uni-paderborn.de (Peter Klingebiel)
  3. Newsgroups: comp.windows.x.apps
  4. Subject: Plotter Widgets V6.0
  5. Keywords: plotter, widgets
  6. Message-ID: <1992Aug18.141437.2765@uni-paderborn.de>
  7. Date: 18 Aug 92 14:14:37 GMT
  8. Sender: news@uni-paderborn.de (News Uni-Paderborn)
  9. Organization: Uni-GH Paderborn, Germany
  10. Lines: 335
  11. Nntp-Posting-Host: pcs7
  12.  
  13.  
  14.       Announcement of the AthenaTools Plotter Widget Set Version 6.0
  15.  
  16. After distribution of plotter v6-beta I did some bug fixes and added a lot
  17. of new features to the plotter widgets. They seem to run stable on X11R4
  18. and X11R5 with Xaw and Xm. For changes from V6-beta to V6.0 see below.
  19.  
  20. N.B. If there is anyone in U.S. who receives the plotter widgets, please
  21. put them to export.lcs.edu. Thanks.
  22.  
  23. ------------------------------------------------------------------------------
  24.  
  25. The initial version of the AthenaTools Plotter Widget Set, known as V4, as far
  26. as I know, was written by David Flanagan, Chris Craig, and Kambiz Soroushian
  27. at M.I.T.  in 1990. In 1991 Gregory Bond re-wrote important parts of this code
  28. and called his version V5-beta. His version works fine for more business-like
  29. graphs, but unfortunately, there was dropped out a lot of stuff needed for
  30. scientific graphs.
  31.  
  32. This version V6.0 is based on Gregory Bond's version V5-beta. I added some
  33. stuff for scientific graphs, i.e. log axes, free scalable axes, XY-lineplots
  34. and some more, and re-added plotter callbacks from V4, e.g. to request the
  35. current pointer position, or to cut off a rectangle from the plotting area for
  36. zooming-in. Version V6.0 has a log of bugs fixed and a log of improvements
  37. against V6-beta. Additionally I did some other changes/extensions, besides
  38.  
  39.     -   Origin and frame lines for axes.
  40.     -   Subgrid lines on subtic positions.
  41.     -   Line plots in different line types (lines, points, lines+points,
  42.     impulses, lines+impulses, steps, bars), line styles (solid, dotted,
  43.     dashed, dot-dashed) and marker types for data points.
  44.     -   Legend at the right or left hand side of the plot.
  45.     -   Optional drawing to a pixmap instead of a window.
  46.     -   Drag and slide callback for zooming.
  47.     -   Legend select callback for selecting lines.
  48.     -   Layout callback for aligning axis positions when using
  49.     multiple plotters in one application.
  50.     -   ... and much more ...
  51.  
  52. I called this version V6.0 because I plan and I have to add some other
  53. features to the plotter widgets in the future (i.e. polar axes, a new
  54. plotter form widget, ...).
  55.  
  56. Some ideas, hints and algorithms I got from gnuplot V3.0 written by
  57. Colin Kelley and Thomas Williams.
  58.  
  59. The plotter widgets need X11R4 or X11R5 to get compiled.
  60. I couldn't compile on AIX 3.1 and X11R3.
  61.  
  62. You can ftp the plotter widgets from the Paderborner FTP-Server:
  63.  
  64.     ftp@uni-paderborn.de (131.234.2.32)
  65.     Login:     ftp
  66.     Passwd:    e-mail-address
  67.     Directory: /unix/tools
  68.  
  69.     Files:  plotter.v60.tar.Z (contains all the sources including manual
  70.                   pages, demo programs and some documentation.
  71.                   You need groff and the me-macros to
  72.                   format the documentation!)
  73.         plotter.afm.tar.Z (contains font metric files which are needed
  74.                   for the plotters PostScript output.
  75.                   Many TeX distributions contain these files)
  76.  
  77. The subdirectories and their contents are:
  78.  
  79.     At      contains the source of the plotter widget set and
  80.         the include files
  81.  
  82.     man     contains the manual pages of the plotter widgets
  83.  
  84.     motif   contains a motif demo of the plotter. The file Plot.c
  85.         contains all interesting code for programming and
  86.         using the plotter widget set
  87.  
  88.     athena  contains demos using the athena widget set. All
  89.         files contain interesting code for programming and
  90.         using the plotter widget set
  91.  
  92.     doc     contains some documentation from version V5
  93.         and this version V6-beta.
  94.  
  95. Installation:
  96.  
  97.     -   Edit and change At/Imakefile and create the library libAt.a
  98.     -   Edit and change motif/Imakefile and/or athena/Imakefile
  99.     to create the test programs or check and edit the files
  100.     Makefile.simple if you are missing imake
  101.  
  102.     -   Install the include files and the library from the At subdirectory
  103.     -   Install the postscript metric fonts from the afm subdirectory
  104.     -   Install the manual pages from subdirectory man
  105.  
  106. Bugs and misfits:
  107.  
  108.     -   Many features are not yet well tested at this point in time!
  109.     -   Known bugs are i.e. in the linear XY axis code!
  110.  
  111. What's to do:
  112.  
  113.     o   A plotter form widget for aligning multiple plotters
  114.     (axis positions, legends, titles, PS output, ...)
  115.     o   Polar axes
  116.     o   Contour and Error plot widgets
  117.     o   Color PostScript output (I'm working on)
  118.     o   More and better Motif support or Motif wrappers (???)
  119.  
  120. Extensions, bug reports, patches, hints and so on are *very* welcome.
  121.  
  122. Paderborn, Mon Aug 17 16:03:26 1992
  123.  
  124. Peter Klingebiel
  125. Universitaet-Gesamthochschule Paderborn
  126. FB10 - Automatisierungstechnik
  127. Paderborn GERMANY
  128. klin@iat.uni-paderborn.de
  129.  
  130. ------------------------------------------------------------------------------
  131.  
  132.                CHANGES
  133.  
  134. ------------------------------------------------------------------------------
  135.  
  136.     Changes from version 6-beta to version 6.0
  137.  
  138. ------------------------------------------------------------------------------
  139.  
  140.  
  141.  o Patchlevel 1
  142.  
  143.     - klin, Sun Jul 19 09:39:15 1992
  144.  
  145.     patchlevel.h added
  146.  
  147.     Plotter.h, Plotter.c
  148.  
  149.     Added the global function AtPlotterGetLegendWidth() to get the maximal
  150.     legend width from within application programs to give the possibility
  151.     that the legends of multiple plotters are of the same width.
  152.  
  153.     RecalcLegend() changed: returns True if legend width OR heigth changed.
  154.     RedrawLegend() always calls RecalcLegend() and calculates the correct
  155.     legend_y value.
  156.  
  157.     XYAxis.c
  158.  
  159.     Stop infinite loop in calculation of linear tic interval using a simple
  160.     counter in procedure LinAxisRange(). This is a workaround only! The
  161.     linear axis core should be rewritten.
  162.  
  163.     - klin, Wed Jul 22 09:32:26 1992
  164.  
  165.     AxisCore.c
  166.  
  167.     Ken Rempe (ken@caesar.uucp) reported a bug in the setvalues procedure
  168.     when changing the axis label and sent a bug fix.
  169.  
  170.     - klin, Fri Jul 24 15:06:19 1992
  171.  
  172.     PlotterPS.c
  173.  
  174.     Fixed a bug in PostScript code for star marker.
  175.  
  176.  o Patchlevel 2
  177.  
  178.     - klin, Mon Jul 27 14:14:32 1992
  179.  
  180.     Plotter.h PlotterP.h Plotter.c PlotterPS.c
  181.  
  182.     Added the new resource XtNlegendLeft (legend_left) which defaults
  183.     to False. Setting this resource to True causes the plotter to
  184.     display the legend on the left hand side of the plotting area.
  185.  
  186.     Added the new resource XtNautoRedisplay (auto_redisplay) which
  187.     defaults to True. Setting this resource to False causes the plotter
  188.     to avoid redisplaying after changes. When then this resource is set
  189.     to True the new full state is displayed. This may be useful to
  190.     avoid unnecessary flickering when changing multiple values or to do
  191.     not visible changes, i.e. when writing PostScript output with
  192.     different line styles instead of colors.
  193.  
  194.     Added the new resource XtNuseCursor (use_cursors) which defaults
  195.     to True. If this resource is set then the plotter will use
  196.     different cursors when in click or drag callback.
  197.  
  198.     Added the new callback XtNbusyCallback. Procedures of the
  199.     busy callback list are called when the plotter starts redisplay
  200.     with callback data from type AtBusyCallbackData and the item
  201.     busy set to True. When the plotter finished the redisplay process
  202.     this item will be set to False.
  203.  
  204.     Added the new resource XtNusePixmap (use_pixmap) which defaults
  205.     to False. If this resource is set the plotter draws to a pixmap
  206.     instead to a window. This helps avoid flickering when data often
  207.     change, but uses more memory, especially on color terminals.
  208.     To implement this feature, the draw procedure of all of the plotters
  209.     child widgets (axes and plots) and the AtText code had to be
  210.     changed.
  211.  
  212.     Increased the valid plotting area in callbacks some pixels.
  213.  
  214.     AtPlotterGeneratePostscript() generates a core dump when the
  215.     plotter widget is not realized. Bug reported by Gustaf Neumann
  216.     at 92/07/27 (neumann@dec4.wu-wien.ac.at, neumann@awiwuw11.bitnet).
  217.  
  218.     AxisCore.h AxisCoreP.h AxisCore.c
  219.  
  220.     Added the public function AtAxisGetNumberWidth() which can be
  221.     used by applications to get the current number width of an axis.
  222.     Added the resource XtNnumberWidth (default_number_width) which
  223.     defaults to 0. This resource can be used to set the number width
  224.     to a default value, i.e. to align the axes of multiple plotters
  225.     in one application after the maximal number width of the axes
  226.     are requested using AtAxisGetNumberWidth().
  227.  
  228.     XY*.[ch]
  229.  
  230.     Shorter names for procedures
  231.  
  232.     XYLinePlot.c
  233.  
  234.     When drawing impulse plots in PostScript the first impulse was missing.
  235.     Bug in DrawPS() fixed.
  236.  
  237.     Added the new line types AtPlotSTEPS and AtPlotBARS.
  238.  
  239.     XYAxis.c
  240.  
  241.     Register axis transform converter in the new class initialize
  242.     procedure ClassInitialize(). Reported by Gustaf Neumann at 92/07/27.
  243.  
  244.     Text.c
  245.  
  246.     When destroying an NIL AtText object AtTextDestroy() generates
  247.     a core dump. Fixed and reported by Gustaf Neumann at 92/07/27
  248.  
  249.  o patchlevel 3
  250.  
  251.     - klin, Sun Aug  2 18:25:42 1992
  252.  
  253.     XYAxis.c
  254.  
  255.     Accept initial min/max values set with XtNmin/XtNmax in Initialize().
  256.  
  257.     Plotter.h PlotterP.h Plotter.c
  258.  
  259.     Added the layout callback (layout_callback) which defaults to NULL
  260.     and is called when the plotter is in layout. Client data of this
  261.     callback of the new type AtAxisPositions contain the positions of
  262.     the X and Y axes and may be changed by applications or other plotters
  263.     to align the axes of multiple plotters in one application.
  264.     The additional function AtPlotterGetAxisPositions() may be used to get
  265.     the current axis positions, the procedure AtPlotterSetAxisPosition()
  266.     may be used to set aligned positions. A better way to do such axis
  267.     alignment would be to create a new plotter form widget which holds
  268.     and manages his child plotters and exempts the user from doing this.
  269.  
  270.     Added the new resource XtNtitleHeight (default_title_height) which
  271.     defaults to 0. This resource may be used to set a default height
  272.     for the title text, for i.e. aligning multiple plotters. The real
  273.     height of the title string can be requested with the new function
  274.     AtPlotterGetTitleHeight().
  275.  
  276.     Internal callback EnterLeave() when entering or leaving the plotter
  277.     window added. This callback is called when entering or leaving the
  278.     plotter window to set appropiate cursors, i.e. when procs in the
  279.     motion callback list are defined.
  280.  
  281.     Cursor resources XtNxxxCursor (xxx_cursor) added.
  282.  
  283.     Method query_geometry in QueryGeometry() added.
  284.  
  285.     FontFamily.h
  286.  
  287.     Defined all font resource names and classes within FontFamily.h.
  288.     Include FontFamily.h in all modules which use this stuff.
  289.  
  290. ------------------------------------------------------------------------------
  291.  
  292.     Changes to version 6.0
  293.  
  294. ------------------------------------------------------------------------------
  295.  
  296.  o patchlevel 4
  297.  
  298.     - klin, Wed Aug 12 07:33:12 1992
  299.  
  300.     AxisCoreP.h
  301.  
  302.     Bug in type of default_number_width fixed. Patch by Gustaf Neumann
  303.     at 92/08/11 (neumann@dec4.wu-wien.ac.at, neumann@awiwuw11.bitnet).
  304.  
  305.     XYPlot.h XYPlotP.h XYPlot.c
  306.  
  307.     Added the new resources XtNxOffset (x_offset) and XtNyOffset
  308.     (y_offset) and all needed stuff for resources and set values.
  309.     These may be useful for displaying plot with free setable offsets
  310.     in X and/or Y direction.
  311.  
  312.     - klin, Sat Aug 15 10:27:55 1992
  313.  
  314.     *.h *.c Imakefile Makefile.simple
  315.  
  316.     All X stuff should go to X directories as pointed out by Sullivan Beck
  317.     (beck@qtp.ufl.edu). Therefore changed <At/...> to <X11/At/...>.
  318.  
  319.     *.man
  320.  
  321.     All needed updates for version 6.0
  322.  
  323.     FontFamilyP.h SPlot.c PlotterP.h
  324.  
  325.     Some typo fixes. Reported by S. Beck (beck@qtp.ufl.edu).
  326.  
  327.     PlotterPS.c AxisCore.c BarPlot.c LinePlot.c XYLinePlot.c
  328.  
  329.     Minor changes in PostScript output. Use the PS builtin transformation
  330.     functions to avoid unexpected results in line thickness, especially
  331.     when drawing thin lines.
  332.  
  333.     Plotter.h PlotterP.h Plotter.c PlotterPS.c
  334.  
  335.     Added resources XtNslideCallback and XtNslideCursor and all needed
  336.     stuff for this callback. When i.e. for zooming a rectangle is
  337.     defined on the plotting area (using the drag callback) this
  338.     callback my be useful for sliding the drag rectangle over the
  339.     plotting area.
  340.     Added resources XtNselectCallback and XtNselectCursor and all needed
  341.     stuff for this callback. This is useful for selecting plots from
  342.     within the plotter's legend, i.e. for further changes to this plot.
  343.     Added busy callback in PostScript output routines.
  344.     Added reason item to callback data structs.
  345.     Some more minor changes in callbacks.
  346.  
  347. ------------------------------------------------------------------------------
  348.