LEGALESE ~~~~~~~~ Copyright (c) 1995 Ilya Zakharevich. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. You should have received a copy of the Perl license along with Perl; see the file README in Perl distribution. You should have received a copy of the GNU General Public License along with Perl; see the file Copying. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. You should have received a copy of the Artistic License along with Perl; see the file Artistic. Author of this software makes no claim whatsoever about suitability, reliability, edability, editability or usability of this product, and should not be kept liable for any damage resulting from the use of it. If you can use it, you are in luck, if not, I should not be kept responsible. Keep a handy copy of your backup tape at hand. WHAT ~~~~ This module is intended for low-resolution or high-resolution graphics using gnuplot low-level functions. Documentation is at the start of the .pm file. INSTALL ~~~~~~~ You may need to edit LIBS line in Makefile.PL, and INC and CFLAGS lines in gnuterm/Makefile.PL (as based on the included platform-specific makefiles and READMEs in ./gnuterm directory), but if you do not wish to support platform-specific terminals, this should work: perl Makefile.PL make make test (Check whether you are satisfied with the result.) make install By default, the following libs are tried to be found: -L/usr/openwin/lib -lX11 -lm -lsocket -lvga -llinuxvga \ -lgd -lpng -lz -ljmgraph -lvesa You may change this by putting TRY_LIBS="some libs" on the command line of Makefile.PL. (Say, I needed to remove -lgd since the header file gd.h was for a newer version of gd than the library, and Term::Gnuplot could not determine the version of gd correctly.) If you needed some changed, and can automate them, please send patches to the address below. Currently the defines HAVE_LIBGD, HAVE_LIBPNG, LINUXVGA, EMXVESA are automatically set to reasonable values. X11 and DEBUG terminals are always included. Gnuplot 3.7 would also use AMIGA ATARI MTOS _Macintosh DJGPP __ZTC__ PC NEXT APOLLO GPR IRIS MGR RGIP SCO SUN UIS UNIXPC UNIXPLOT GNUGRAPH DEBUG Note that for some term types (such as X11, or PM) additional binaries are needed. They should be available if gnuplot is already installed on your system. AUTHOR BUGS ~~~~~~~~~~~ Ilya Zakharevich ilya@math.ohio-state.edu CHANGES (XXX - todo, +++ - where-todo/now-done) ~~~~~~~ 0.2: Test added. 0.3: Part of gnuplot3.5 distribution included to make it into turnkey installation, tested on OS/2, Solaris. 0.4: list_terms() added; interactive test for different terminals; 0.41: change_term_address(), term_tbl_address() added; 0.5: uses Gnuplot 3.6pre built 340 (with a tiny patch, included); change_term returns 1 on success, 0 on failure; 0.51: Does not need any change to Gnuplot source files. 0.55: Updated to latest Gnuplot.h from PARI 2.0.13 (with do_init => init). setpointsize works now. set_gnuplot_fh() removed, replaced by plot_outfile_set(). Updated to version 3.7. stdfn.c needed too... setpointsize(0.25) instead of pointsize(). GD terminal was coring, since it required calling option before plot. 0.56: Better docs, DEBUG terminal. Setup a line buffer for options() so that gnuplot error reporting works better. New functions plotsizes_scale(), term_init(), term_start_plot(), term_end_plot(), term_start_multiplot(), term_end_multiplot(). New C API setup_gpshim(). POD for Terminals. 0.5601: syscfg.h was not \n-terminated SET_OUTFILE() had wrong precedence of `,'. 0.57: Updated to 3.7.1. Gnuplot.h from PARI 2.0.17 used. New Makefile.PL option TRY_LIBS. 0.5701: New function _term_descrs(), hash %description. A primitive support for direct-to-Tk drawing: create Tk canvas $c, call Term::Gnuplot::setcanvas($c), then use 'tkcanvas' terminal with option 'tkperl_canvas'. (Size is determined at the moment of doing set_options().) 0.5702: Add a check for gdCreateGif too; setcanvas was not exported; Change TERM_PUBLIC to 'extern' for our private functions in tkcanvas.trm. Make Tk serve events while in test.pl. BUGS with tkcanvas tests: Not realistic charcell/ticks sizes; $ptk_canvas->delete($ptk_canvas->find('all')) if $ptk_canvas; segfaults; thus the canvas is not cleared between the iterations. 0.5703: $ptk_canvas->delete('all') works. Go figure... Refcount the canvas. Off by one and 2 errors in the size of plotting area fixed. Same for offsets of plotting area (including borders). New make target gnuterm_dynamic to make loadable-at-runtime DLL. Now queries the font size and calculates ticks accordingly. Erase the canvas between builtin and Perl tests. 0.5704: Make x11 test optional if gnuplot_x11 is not on PATH. 0.90_38b_00: extract_help moved to ./utils/. Update to version 3.8b with applied mouse patch gnuplot-3709-Nov-01-99.diff by Piotr Mikulik. Make the x11 modified executable named gplt_x11b. Update to Gnuplot.h from GP/PARI 2.2.3. 0.90_38i_00: Updated to CVS state of 2002/09/05. Make a PM modified executable named gplpmdrb. Regenerate the POD. Allow a missing ',' at the end of the line in the docs [Uncompatible change: is not 1 any more!] New constant TEXT_VERTICAL - the argument to text_angle() to make it vertical. Exportable on the tag :JUSTIFY. test.pl now takes optional parameters, the terminal name and files; so one can perl -Mblib test.pl png test.png testperl.png New constants LT_BACKGROUND LT_AXIS LT_BLACK exportable (on the tag :LINETYPES) Remove a leak in plot_outfile_set() [NO: segfaults in postscript...]. SYNOPSIS was not mentioning linewidth(1.0) at the start - same for test.pl; but it was mentioned later in the docs... (Postscript would misbehave on an output file change). fillbox() now will not segfault, but would die() if it is not implemented. Test suite now tests the following new wrappers methods: clear_box pattern_fill_box color_fill_box (exportable on :METHODS). merge the patch to enable PIPE_IPC on OS/2 too. Fix the macro XPutPixel given double arg when expecting an int. New methods make_gray_palette set_color previous_palette filled_polygon put_right_justified_text put_centered_text put_left_justified_text 0.90_38i_01: maybe_command_in_dirs() was removed from MakeMaker!!! File::Basename need to be used by Makefile.PL... remove file 'test_x11' on clean. distribute as bz2. XXX [dumb terminal on DOSISH systems rights in binary mode???] +++ ["drv: " messages from PM driver???] [Pressing a key in PM terminal won't switch to the text mode window; only SPACE works... - new (mis)feature] XXX [XXX??? PM terminal does not implement density and pattern for fillbox] 0.90_38i_02: Add mousing.c and .h from Term-Gnuplot-0.90_38b_00. Started to code USE_ACTIVE_EVENTS in PM driver. XXX [PM terminal does not show if event_passive is changed to initialized: static int events_active = 1] Dummy enable_mousetracking(). 0.90_38i_03: Some (broken?) Linux distributions had unusable -lgd -lpng; now we check manually for presence of header files, and do not let Perl try -lgd -lpng if the header files are not there. -DHAVE_MEMCPY -DHAVE_MEMSET -DHAVE_STRCHR set if needed (but not STRSTR). enable_mousetracking() defined only if OS2. Remove checks for -f test_X11 - now we provide our own X11 program. In PM mouse coordinates turn on and off as they should by mouse menu and Term::Gnuplot::enable_mousetracking(). XXX PM: WinSetPointer()??? XXX PM_text() sends info about mouse coordinate system. Should not this be done by PM_graphics(), so that area should be reserved for mouse coordinates?. XXX PM: Colored rectangles are not gradually changing... XXX One MUST set hMenuBar from WM_GPSTART, and one MUST enable menuitem from there??? XXX PM: cur_mouse_mode - also can't initialize.... PM: freopen(stderr). mousing.h: gp4mouse made not static. STATUS_LINE_HEIGHT 14. +++ Need ta way to specify the directory of executables (when DLL is loaded standalone...) Cosmetic updates to Gnuplot.h from PARI-200501 0.90380904: Name without "_"; "09" instead of "i". Gnuplot.h updated from one in GP/PARI. A way to specify the directory of executables (when DLL is loaded standalone...): HAVE_SETUP_EXE_PATH_FUNC, setup_exe_path_func entry, my_term_ftable has flag 4. mys_mouse_feedback_rectangle() sets gp4mouse. +++ DEFINE_GP4MOUSE, enable_mousetracking() currently is PM_mouse_on() but is disabled. -DHAVE_MEMCPY -DHAVE_MEMSET -DHAVE_STRCHR autodeduced. dist is not gz, not bz2. test_x11 hack removed. Mouse feedback rectangle kinda works in PM (but may be wrongly XORed before screen-obscure/unobscure - irreproducible???) 0.90380905: protect mys_mouse_feedback_rectangle by DEFINE_GP4MOUSE with -DGNUPLOT_NO_CODE_EMIT Gnuplot.h does not produce junk C interface to options: support ""/''-quoted option strings. XXX 'dumb' output is in binmode (not when dynamically runtime linked)??? XXX gnuplot.dbg still written by PM driver... remove dead enable_mousetracking() code. make options() pass tokens[] with runtime link too. XXX pm persist ==> not persist XXX pm, then `pm persist' ==> "Cant find gnupmdrvb.exe..." Added missing headers to my_utils.c; made it -Wall clean. New C functions set_output_routines(), get_output_routines(), get_terms(); New private Perl functions get_terms()/_available_terms()/term_count() (for testing only). New file utils/empty_gnuplot.c; check Gnuplot.h by gcc -I.. -c empty_gnuplot.c && nm empty_gnuplot.o There should be no symbols referenced (except compiler-stubs). Assume that STRSTR and STRCHR are present simultaneously. Translate NO_TIME_H to HAVE_TIME_H (was the only remaining NO_ macro). Build X11 driver only if d_dup2 and d_pipe are defined, and not Win32. XXX term\tpic.trm(887) : warning C4146: unary minus operator applied to unsigned type, result still unsigned Support HAVE_DIRENT_H (in preparation to v4.0). existdir() into util.c, recursivefullname() etc into my_util.c from v4.0. Propagate common::cflags to PM exe driver too. Use ExtUtils::Liblist starting from 5.8.1 (old workaround code XXX was not working???). Terminals enabled: again: GIF, PNG, new: PDF XXX Terminals not set: EMXVESA, GPR, LINUXVGA, VGAGL, THREEDKIT, MGR, RGIP, SCO, SUN, UIS, UNIXPC, UNIXPLOT, GNUGRAPH, PNG_FOR_GIF, USE_GGI_DRIVER, NEXT, APOLLO XXX Not read: gdlib-config Declare term_count(). Add code from Math::Pari to correctly $(AR) on Win*. Do not retry libs from x_exec. New macro MY_Windows (set on MSWin32). Protects code borrowed from gnuplot v4; XXX temporarily disable sleep() in tek.trm. New option 'none' to test.pl, which would test bookkeeping only. Use $Config{cpprun} if present. XXX When -DPNG_FOR_GIF???