From: <ai...@us...> - 2007-03-30 07:32:58
|
Revision: 7650 http://plplot.svn.sourceforge.net/plplot/?rev=7650&view=rev Author: airwin Date: 2007-03-30 00:32:58 -0700 (Fri, 30 Mar 2007) Log Message: ----------- .cvsignore files are no longer needed in an SVN repository. Removed Paths: ------------- trunk/bindings/.cvsignore trunk/bindings/c++/.cvsignore trunk/bindings/f77/.cvsignore trunk/bindings/f95/.cvsignore trunk/bindings/gnome2/.cvsignore trunk/bindings/gnome2/lib/.cvsignore trunk/bindings/gnome2/python/.cvsignore trunk/bindings/java/.cvsignore trunk/bindings/octave/.cvsignore trunk/bindings/octave/PLplot/.cvsignore trunk/bindings/octave/PLplot/support/.cvsignore trunk/bindings/octave/demos/.cvsignore trunk/bindings/octave/misc/.cvsignore trunk/bindings/python/.cvsignore trunk/bindings/tcl/.cvsignore trunk/bindings/tk/.cvsignore trunk/bindings/tk-x-plat/.cvsignore trunk/cf/.cvsignore trunk/data/.cvsignore trunk/debian/.cvsignore trunk/doc/.cvsignore trunk/doc/docbook/.cvsignore trunk/doc/docbook/bin/.cvsignore trunk/doc/docbook/src/.cvsignore trunk/doc/docbook/www/.cvsignore trunk/drivers/.cvsignore trunk/examples/.cvsignore trunk/examples/c/.cvsignore trunk/examples/c++/.cvsignore trunk/examples/f77/.cvsignore trunk/examples/f95/.cvsignore trunk/examples/java/.cvsignore trunk/examples/perl/.cvsignore trunk/examples/python/.cvsignore trunk/examples/tcl/.cvsignore trunk/examples/tk/.cvsignore trunk/fonts/.cvsignore trunk/include/.cvsignore trunk/lib/.cvsignore trunk/lib/csa/.cvsignore trunk/lib/nn/.cvsignore trunk/pkgcfg/.cvsignore trunk/scripts/.cvsignore trunk/src/.cvsignore trunk/test/.cvsignore trunk/utils/.cvsignore Deleted: trunk/bindings/.cvsignore =================================================================== --- trunk/bindings/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,3 +0,0 @@ -Makefile -Makefile.in -pkgIndex.tcl Deleted: trunk/bindings/c++/.cvsignore =================================================================== --- trunk/bindings/c++/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/c++/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,9 +0,0 @@ -ti_files -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -*.loT Deleted: trunk/bindings/f77/.cvsignore =================================================================== --- trunk/bindings/f77/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/f77/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,8 +0,0 @@ -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -sfstubs.f -configurable.f Deleted: trunk/bindings/f95/.cvsignore =================================================================== --- trunk/bindings/f95/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/f95/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,11 +0,0 @@ -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -plflt -plflt.inc -plplot.mod -plplot_flt.mod -plplotp.mod Deleted: trunk/bindings/gnome2/.cvsignore =================================================================== --- trunk/bindings/gnome2/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/gnome2/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/bindings/gnome2/lib/.cvsignore =================================================================== --- trunk/bindings/gnome2/lib/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/gnome2/lib/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/bindings/gnome2/python/.cvsignore =================================================================== --- trunk/bindings/gnome2/python/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/gnome2/python/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,9 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.defs -*.lo -*.la -cplplotcanvas.c -gcw.c Deleted: trunk/bindings/java/.cvsignore =================================================================== --- trunk/bindings/java/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/java/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,18 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -config.java -java -SWIGTYPE_p_p_char.java -plplotjavac.java -plplotjavacJNI.java -plplotjavac_wrap.c -plplotjavacConstants.java -plplot -classnoinst.stamp -*.class -jar-stamp Deleted: trunk/bindings/octave/.cvsignore =================================================================== --- trunk/bindings/octave/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/octave/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,25 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -tmp_plplot_octave.cc -plplot_octave.cc -plplot_octave.h -plplot_octave.oct -tmp_stub -plplot_stub.m -missing_help -massage -plplot_octave_txt -.samename -BUGS.octave -FGA.octave -INSTALL.octave -README.octave -ToDo.octave -USAGE.octave -plplot_octave-libdir.oct -doc-stamp Deleted: trunk/bindings/octave/PLplot/.cvsignore =================================================================== --- trunk/bindings/octave/PLplot/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/octave/PLplot/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,9 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -plplot_stub.m -plplot_octave_path.m Deleted: trunk/bindings/octave/PLplot/support/.cvsignore =================================================================== --- trunk/bindings/octave/PLplot/support/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/octave/PLplot/support/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/bindings/octave/demos/.cvsignore =================================================================== --- trunk/bindings/octave/demos/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/octave/demos/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/bindings/octave/misc/.cvsignore =================================================================== --- trunk/bindings/octave/misc/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/octave/misc/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/bindings/python/.cvsignore =================================================================== --- trunk/bindings/python/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/python/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,14 +0,0 @@ -*.flc -setup.py -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -plplotc.py -plplotcmodule_p_single.c -plplotcmodule_single.c -plplotcmodule_p_double.c -plplotcmodule_double.c -*.pyc Deleted: trunk/bindings/tcl/.cvsignore =================================================================== --- trunk/bindings/tcl/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/tcl/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,13 +0,0 @@ -*.flc -tclgen.c -tclgen.h -tclgen_s.h -plplot.tcl -tclIndex -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -pkgIndex.tcl Deleted: trunk/bindings/tk/.cvsignore =================================================================== --- trunk/bindings/tk/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/tk/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -tclIndex -Makefile -Makefile.in -plserver -.deps -.libs -*.la -*.lo -pkgIndex.tcl Deleted: trunk/bindings/tk-x-plat/.cvsignore =================================================================== --- trunk/bindings/tk-x-plat/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/bindings/tk-x-plat/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1 +0,0 @@ -pkgIndex.tcl Deleted: trunk/cf/.cvsignore =================================================================== --- trunk/cf/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/cf/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -compile -config.guess -config.sub -depcomp -install-sh -ltmain.sh -missing -mkinstalldirs -Makefile -Makefile.in Deleted: trunk/data/.cvsignore =================================================================== --- trunk/data/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/data/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,3 +0,0 @@ -libplplot* -Makefile -Makefile.in Deleted: trunk/debian/.cvsignore =================================================================== --- trunk/debian/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/debian/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -plplot-doc plplot-tcl python-plplot plplot-xwin plplot-gnome -plplot-gd octave-plplot libplplot5 libplplot-dev plplot-tcl-dev tmp -libplplot9 plplot9-driver-gd plplot9-driver-gnome plplot9-driver-xwin -libcsiro0 libplplot-c++9c2 plplot-bin libplplot9-java -plplot9-driver-gnome2 python-plplot-gnome2 libplplot-fortran9 -plplot9-driver-psttf plplot9-driver-wxwidgets -*.debhelper *substvars files patched Deleted: trunk/doc/.cvsignore =================================================================== --- trunk/doc/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/doc/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,9 +0,0 @@ -*.aux -*.cp -*.log -*.toc -*.dvi -*.info -*.ps -Makefile -Makefile.in Deleted: trunk/doc/docbook/.cvsignore =================================================================== --- trunk/doc/docbook/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/doc/docbook/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,6 +0,0 @@ -Makefile -Makefile.in -conftest.dsl -conftest.html -conftest.out -conftest.xml Deleted: trunk/doc/docbook/bin/.cvsignore =================================================================== --- trunk/doc/docbook/bin/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/doc/docbook/bin/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,2 +0,0 @@ -Makefile Makefile.in -eps2jpeg.pl inline-greek.pl tex2eps.pl api2man.pl Deleted: trunk/doc/docbook/src/.cvsignore =================================================================== --- trunk/doc/docbook/src/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/doc/docbook/src/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,14 +0,0 @@ -*.html *.jpeg -*.log *.aux *.dvi *.jadetex *.fot *.ps.gz *.pdf* *.eps -plplotdoc-html.dsl plplotdoc-print.dsl plplotdoc.sgml inline.manifest -eps2jpeg.pl inline-greek.pl tex2eps.pl -plplotdoc-html-* plplotdoc-src-* -configure config.* *-stamp Makefile Makefile.in -*-MANIFEST *.info* *.texi *.txml plplotdoc.xml *.xml-info *.out -*.3plplot -tarball.tgz -plplot-man-*.tar.gz -plplot-info-*.tar.gz -plplot-html-*.tar.gz -*.txt -static_built_files Deleted: trunk/doc/docbook/www/.cvsignore =================================================================== --- trunk/doc/docbook/www/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/doc/docbook/www/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1 +0,0 @@ -index.html index.html.in Deleted: trunk/drivers/.cvsignore =================================================================== --- trunk/drivers/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/drivers/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,15 +0,0 @@ -*.flc -*.rc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -drivers*.db -plapi.tpl -tclcmd.tpl -tclgen.h -tclgen_s.h -tclgen.c -get-drv-info Deleted: trunk/examples/.cvsignore =================================================================== --- trunk/examples/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,8 +0,0 @@ -Makefile -Makefile.in -*.sh -*.ps -*.png -*.cgm -*.jpeg -*.plm Deleted: trunk/examples/c/.cvsignore =================================================================== --- trunk/examples/c/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/c/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -x??c -.samename Deleted: trunk/examples/c++/.cvsignore =================================================================== --- trunk/examples/c++/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/c++/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -x??cc -x?? Deleted: trunk/examples/f77/.cvsignore =================================================================== --- trunk/examples/f77/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/f77/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,11 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -*.f -x??f -x16af Deleted: trunk/examples/f95/.cvsignore =================================================================== --- trunk/examples/f95/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/f95/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -x??f -x16af Deleted: trunk/examples/java/.cvsignore =================================================================== --- trunk/examples/java/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/java/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,12 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -plplot.jar -plplot -*.class - Deleted: trunk/examples/perl/.cvsignore =================================================================== --- trunk/examples/perl/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/perl/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: trunk/examples/python/.cvsignore =================================================================== --- trunk/examples/python/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/python/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.pyc -plplot_python_start.py -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -.check Deleted: trunk/examples/tcl/.cvsignore =================================================================== --- trunk/examples/tcl/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/tcl/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,9 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -tclIndex -.check Deleted: trunk/examples/tk/.cvsignore =================================================================== --- trunk/examples/tk/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/examples/tk/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,12 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -x??.tcl -tclIndex -xtk?? -.samename Deleted: trunk/fonts/.cvsignore =================================================================== --- trunk/fonts/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/fonts/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -plhershey-unicode-gen Deleted: trunk/include/.cvsignore =================================================================== --- trunk/include/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/include/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -stamp-h* -plConfig.h -plDevs.h -plhershey-unicode.h -.deps -.libs -plhershey-unicode-gen Deleted: trunk/lib/.cvsignore =================================================================== --- trunk/lib/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/lib/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,4 +0,0 @@ -Makefile -Makefile.in -CMakeFiles -cmake_install.cmake Deleted: trunk/lib/csa/.cvsignore =================================================================== --- trunk/lib/csa/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/lib/csa/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -*.csa -CMakeFiles -cmake_install.cmake Deleted: trunk/lib/nn/.cvsignore =================================================================== --- trunk/lib/nn/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/lib/nn/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -*.nn -CMakeFiles -cmake_install.cmake Deleted: trunk/pkgcfg/.cvsignore =================================================================== --- trunk/pkgcfg/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/pkgcfg/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,17 +0,0 @@ -pc-stamp -plplot-c++.pc -plplot-f77.pc -plplot-f95.pc -plplot-master-pc -plplot-tcl.pc -plplot.pc -plplotd-gnome2.pc -plplotd-c++.pc -plplotd-f77.pc -plplotd-f95.pc -plplotd-tcl.pc -plplotd.pc -plplot-gnome2.pc -Makefile.in -Makefile -gen-pc-files.pl Deleted: trunk/scripts/.cvsignore =================================================================== --- trunk/scripts/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/scripts/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,3 +0,0 @@ -Makefile -Makefile.in -plplot-config Deleted: trunk/src/.cvsignore =================================================================== --- trunk/src/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/src/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,7 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo Deleted: trunk/test/.cvsignore =================================================================== --- trunk/test/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/test/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,23 +0,0 @@ -*.flc -Makefile -Makefile.in -Makefile.examples -.deps -.libs -*.la -*.lo -plplot-test.sh -test_python.sh -test_f77.sh -test_f95.sh -test_java.sh -test_c.sh -test_cxx.sh -test_octave.sh -test_tcl.sh -test_perl.sh -*.ps -*.fig* -*.png* -*.gif* -*..jpeg* Deleted: trunk/utils/.cvsignore =================================================================== --- trunk/utils/.cvsignore 2007-03-30 07:29:36 UTC (rev 7649) +++ trunk/utils/.cvsignore 2007-03-30 07:32:58 UTC (rev 7650) @@ -1,10 +0,0 @@ -*.flc -Makefile -Makefile.in -.deps -.libs -*.la -*.lo -plrender -pltek -pltcl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-03-31 18:14:42
|
Revision: 7657 http://plplot.svn.sourceforge.net/plplot/?rev=7657&view=rev Author: airwin Date: 2007-03-31 11:14:39 -0700 (Sat, 31 Mar 2007) Log Message: ----------- Move unused/obsolete scripts from the scripts directory to the old directory. Modified Paths: -------------- trunk/scripts/Makefile.am Added Paths: ----------- trunk/old/check-copyright.pl trunk/old/check-tarball-cvs.sh trunk/old/check-year-author.pl trunk/old/fixfort trunk/old/htdocs-replace.sh trunk/old/make-cvs-tarball.sh trunk/old/upload-cvs-tarball.sh Removed Paths: ------------- trunk/scripts/check-copyright.pl trunk/scripts/check-tarball-cvs.sh trunk/scripts/check-year-author.pl trunk/scripts/fixfort trunk/scripts/htdocs-replace.sh trunk/scripts/make-cvs-tarball.sh trunk/scripts/upload-cvs-tarball.sh Copied: trunk/old/check-copyright.pl (from rev 7652, trunk/scripts/check-copyright.pl) =================================================================== --- trunk/old/check-copyright.pl (rev 0) +++ trunk/old/check-copyright.pl 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w +# +# check-copyright.pl: Parse a ChangeLog file generated by cvsreport (like +# those in the www/announce/ directory) and output all the files mentioned +# there together with the CVS users that modified them and the lines +# containing the Copyright holders. +# +# Copyright (C) 2004 Rafael Laboissiere + +if (scalar @ARGV) { + open (CHGLOG, "< $ARGV[0]") + or die "Cannot open ChangeLog file $ARGV[0]"; +} else { + open (CHGLOG, "< &STDIN"); +} + +my %files = (); +my ($user, $file); + +while (<CHGLOG>) { + if (/^Commit from (\w+)/) { + $user = $1; + next; + } + if (/^..plplot ([^\s]+)/) { + $file = $1; + next if (not -f $file); + if (not defined $files{$file}) { + $files{$file} = { + users => { $user => 1 }, + copyright => join ("", qx {grep Copyright $file}) + }; + } else { + $files{$file}->{users}->{$user} = 1; + } + } +} + +for my $f (sort keys %files) { + print STDOUT ("$f: " . join (", ", keys %{$files{$f}->{users}}) . "\n" + . $files{$f}->{copyright} . "=====\n"); +} Copied: trunk/old/check-tarball-cvs.sh (from rev 7652, trunk/scripts/check-tarball-cvs.sh) =================================================================== --- trunk/old/check-tarball-cvs.sh (rev 0) +++ trunk/old/check-tarball-cvs.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,46 @@ +#/bin/sh -e + +# Copyright (C) 2004 Rafael Laboissiere +# +# This file is part of PLplot. +# +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Library Public License as published +# by the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PLplot 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 Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# First try on a script to check the discrepancies between the distributed +# tarball obtained with "make dist" and the CVS tree. This script will +# send to stdout a list of files that are present in a freshly checked out +# CVS tree and absent from the tarball. +# +# Run it from the top_builddir directory. +# +# Written by Rafael Laboissiere on 2003-31-01 + +VERSION=`perl -ne \ + 'if(/AC_INIT\(plplot, ([0-9.cvs]+)/){print "$1\n"; last}'\ + < configure.ac` +TOPDIR=plplot-$VERSION +TARBALL=$TOPDIR.tar.gz + +make dist > /dev/null +cvs co plplot > /dev/null + +for f in `find plplot -type f | sed 's|^plplot/||' \ + | fgrep -v CVS | fgrep -v .cvsignore` ; do + if [ -z "`tar tfz $TARBALL $TOPDIR/$f 2>/dev/null`" ] ; then + echo $f + fi +done + +rm -rf $TARBALL plplot Copied: trunk/old/check-year-author.pl (from rev 7652, trunk/scripts/check-year-author.pl) =================================================================== --- trunk/old/check-year-author.pl (rev 0) +++ trunk/old/check-year-author.pl 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w + +# Get current year, if not given as argument +$year = (defined $ARGV[0]) ? $ARGV[0] : `date '+%Y'`; +chomp $year; + +# CVS root +$cvsroot = "/cvsroot/plplot/plplot"; + +# Get list of CVS files +@files = (); +print STDERR "Getting CVS files list..."; +open (STATUS, "cvs status 2>/dev/null|") + or die "Cannot run cvs status. Au revoir."; +while (<STATUS>) { + push (@files, $1) + if (m{Repository revision:[^/]+$cvsroot/(.*)(?=,v)}); +} +print STDERR " done\n"; + +print STDERR "Getting cvs logs...\n"; + +for $file (@files) { + my %names; + open (LOG, "cvs log $file 2>/dev/null |") + or die "Cannot run cvs log for $file. Au revoir."; + while (<LOG>) { + $names{$1} = 1 + if (m{^date: $year/.*author: (.*)(?=; state)}); + } + my @authors = sort keys %names; + print STDOUT "$file: " . join (", ", @authors) . "\n" + if scalar @authors > 0; +} Copied: trunk/old/fixfort (from rev 7652, trunk/scripts/fixfort) =================================================================== --- trunk/old/fixfort (rev 0) +++ trunk/old/fixfort 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,10 @@ +#!/usr/bin/awk -f +# +# File: fixfort +# Usage: fixfort oldfile.f >newfile.f +# +# Very simple awk program to remove bang comments from Fortran files. +# Shouldn't be necessary very often: most Fortran compilers started +# supporting bang comments in the early 80's. +# +$1 != "!" { print } Copied: trunk/old/htdocs-replace.sh (from rev 7652, trunk/scripts/htdocs-replace.sh) =================================================================== --- trunk/old/htdocs-replace.sh (rev 0) +++ trunk/old/htdocs-replace.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,46 @@ +#!/bin/bash + +# WARNING: completely replaces htdocs by new version without +# backups other than the cvs repository. +# It is assumed that old versions of htdocs can be obtained using +# cvs export with a different tag or date + +DOCBOOKDIR=htdocs/resources/docbook-manual +DEBIANDIR=htdocs/resources/debian +PLOTEXAMPLES=htdocs_plot_examples.tgz + +echo "This script is obsolete. In order to update the PLplot web site," +echo "Please, use the Makefile in the www CVS module." +echo "(Read the README file for instructions)." + +exit 0 + +cd /home/groups/p/pl/plplot + +if [ ! -d $DOCBOOKDIR ] ; then + echo "Warning: The DocBook directory is missing in the htdocs hierarchy." + echo " Install it from the CVS checked out sources of the docbook module." + DOCBOOKDIR="" +else + mv $DOCBOOKDIR docbook-manual-$$ +fi + +if [ ! -f $PLOTEXAMPLES ] ; then + echo "Warning, $PLOTEXAMPLES does not exists." + echo "Follow the instructions in scripts/htdocs-gen_plot-examples.sh to" + echo "generate it." +fi + +test -d $DEBIANDIR && mv $DEBIANDIR debian-$$ + +if [ -z "$USER" ] ; then + echo -n "Login name for SourceForge CVS: " + read USER +fi +rm -rf htdocs +CVS_RSH=ssh CVSROOT=$USER@cvs1:/cvsroot/plplot \ + cvs export -r HEAD -d htdocs www +test -n "$DOCBOOKDIR" && mv docbook-manual-$$ $DOCBOOKDIR +test -n "$DEBIANDIR" && mv debian-$$ $DEBIANDIR +test -f $PLOTEXAMPLES && tar xzf htdocs_plot_examples.tgz +chmod -R g=u htdocs Copied: trunk/old/make-cvs-tarball.sh (from rev 7652, trunk/scripts/make-cvs-tarball.sh) =================================================================== --- trunk/old/make-cvs-tarball.sh (rev 0) +++ trunk/old/make-cvs-tarball.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,129 @@ +#!/bin/bash + +# This will prepare a distribution tarbal directly from the CVS sources of +# the PLplot project. +# CAVEAT: this script silently and completely deletes a directory called +# plplot-cvs-tarball existent in the current working directory. + +# Copyright (C) 2003, 2004 Rafael Laboissiere +# +# This file is part of PLplot. +# +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Library Public License as published +# by the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PLplot 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 Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# $Id$ + +usage () { + local prog=`basename $0` + echo "Usage: $prog [-n] [-u user] [-t tmpdir] [-w remote dir] \\" + echo " [-r branch] [-v version] [-c] [-i prefix] \\" + echo " [-p config_prefix] [-o config_opts]" + echo " $prog -d" + echo " $prog -h" + echo + echo "Option -n prevents building of the DocBook manual." + echo "Option -d prints the default values." + echo "Option -o allows specifying additional configuration options." + echo "Option -p allows specifying the prefix during preparation." + echo "When option -v is not given, a tarball is produced with version and" + echo " label containing today's date string." + echo "When option -c is given, the tarball is unpacked and make check" + echo " is run. For exercising make install, use option -i." + exit $1 +} + +DOC_ARG=${DOC_ARG:---enable-builddoc} +WWW_USER=${WWW_USER:-hbabcock} +CVSROOTDIR=${CVSROOTDIR:-plplot.cvs.sourceforge.net:/cvsroot/plplot} +VERSION=${VERSION:+--version=$1} +BRANCH=${BRANCH:--D now} +CVSTMPDIR=${CVSTMPDIR:-plplot-cvs-tarball} + +# Put here extra configure options that should always be used when +# generating a tarball +config_opt="" + +print_defaults () { + local v + for v in DOC_ARG WWW_USER CVSROOTDIR VERSION BRANCH CVSTMPDIR ; do + eval "echo $v=\\\"\$$v\\\"" + done + exit 0 +} + +bypass_rtag=no +do_check=no +prefix="" +preparation_prefix="" + +while getopts "bcdhi:no:p:r:t:u:v:w:" option +do + case $option in + b) bypass_rtag=yes ;; + c) do_check=yes ;; + d) print_defaults ;; + h) usage 0 ;; + i) test -n "$OPTARG" || usage 1 ; prefix=$OPTARG ;; + n) DOC_ARG= ;; + o) config_opt="$config_opt $OPTARG" ;; + p) test -n "$OPTARG" || usage 1 ; preparation_prefix="--prefix $OPTARG" ;; + r) test -n "$OPTARG" || usage 1 ; BRANCH="-r $OPTARG" ;; + t) test -n "$OPTARG" || usage 1 ; CVSTMPDIR=$OPTARG ;; + u) test -n "$OPTARG" || usage 1 ; WWW_USER=$OPTARG ;; + v) test -n "$OPTARG" || usage 1 ; VERSION="--version=$OPTARG" ;; + w) test -n "$OPTARG" || usage 1 ; CVSROOTDIR=$OPTARG ;; + *) usage 1 ;; + esac +done + +clean_prefix=yes +test -d "$prefix" && clean_prefix=no + +cleanup ( ) { + rm -rf $CVSTMPDIR +} + +trap "cleanup" 0 HUP INT QUIT PIPE TERM + +cleanup + +test $bypass_rtag = yes \ + || date_tag=cvs-tarball_`date --utc +%Y-%m-%d-%H-%M-%S` \ + && echo "Tagging repository with $date_tag" \ + && cvs -d${WWW_USER}@$CVSROOTDIR rtag $BRANCH $date_tag plplot \ + && BRANCH="-r $date_tag" + +cvs -d${WWW_USER}@$CVSROOTDIR export -d$CVSTMPDIR $BRANCH plplot \ + && cd $CVSTMPDIR \ + && cf/bootstrap.sh ${VERSION:---date-version} \ + && ./configure $preparation_prefix $DOC_ARG $config_opt \ + && echo "Making distribution." \ + && make dist \ + && TARBALL=`ls plplot-*.tar.gz` \ + && DISTDIR=`echo $TARBALL | sed s/.tar.gz//` \ + && mv $TARBALL .. \ + && cd .. \ + && echo "CVS distribution tarball: $TARBALL" \ + && test "$do_check" = yes \ + && rm -rf $DISTDIR \ + && tar xfz $TARBALL \ + && ( cd $DISTDIR \ + && ./configure ${prefix:+--prefix=$prefix} $config_opt \ + && make check \ + && test -n "$prefix" \ + && make install ) ; \ + rm -rf $DISTDIR \ + && test "$clean_prefix" = yes \ + && rm -rf "$prefix" Copied: trunk/old/upload-cvs-tarball.sh (from rev 7652, trunk/scripts/upload-cvs-tarball.sh) =================================================================== --- trunk/old/upload-cvs-tarball.sh (rev 0) +++ trunk/old/upload-cvs-tarball.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Script for uploading the CVS snapshot tarball to the PLplot web site +# +# Copyright (C) 2004 Rafael Laboissiere +# This script in the public domain + +# GPG signing is disabled by setting the environment variable NOGPG +# If the gpg command fails, then no mention to the detached signature +# is included in the tarball. + +WWW_HOST=${WWW_HOST:-plplot.sf.net} +WWW_USER=${WWW_USER:-tomduck} +WWW_DIR=${WWW_DIR:-/home/groups/p/pl/plplot/htdocs/cvs-tarball} +GPGKEY=${GPGKEY:-0x17D965DB} + +function run () { + echo $* + $* +} + +if test $# != 1 ; then + echo "Usage: $0 tarball.tar.gz" + exit 1 +fi + +TARBALL=$1 +TARBALL_NAME=`basename $TARBALL` + +gpg_successful=no +test -z "$NOGPG" \ + && gpg --default-key $GPGKEY --detach-sign --armor $TARBALL \ + && gpg_successful=yes + +INDEX=`tempfile --mode=0644` +DATE=`date --utc +"%Y-%m-%d %H:%M UTC"` + +cat > $INDEX <<EOF +<html> +<head> +<title>PLplot CVS tarball</title> +</head> +<body> +<h2>Latest PLplot CVS snapshot distribution</h2> + +<p> Tarball: <a href="$TARBALL_NAME">$TARBALL_NAME</a>.</p> +EOF + +test "$gpg_successful" = yes && cat >> $INDEX <<EOF +<p> Detached GPG signature: <a href="$TARBALL_NAME.asc">$TARBALL_NAME.asc</a> +(signed with key +<a href="http://wwwkeys.pgp.net:11371/pks/lookup?op=index&search=$GPGKEY">$GPGKEY</a>) +</p> +EOF + +cat >> $INDEX <<EOF +<p> Uploaded by <a href="http://sf.net/users/$WWW_USER">$WWW_USER</a> +on $DATE</p> + +</body> +</html> +EOF + +HOST=$WWW_USER@$WWW_HOST + +run ssh $HOST rm -rf $WWW_DIR +run ssh $HOST mkdir $WWW_DIR +run scp $TARBALL $TARBALL.asc $HOST:$WWW_DIR +test "$gpg_successful" = yes && run scp $TARBALL.asc $HOST:$WWW_DIR +run scp $INDEX $HOST:$WWW_DIR/index.html +run ssh $HOST chgrp -R plplot $WWW_DIR +run ssh $HOST chmod -R g=u $WWW_DIR + +#rm -f $TARBALL.asc $INDEX Modified: trunk/scripts/Makefile.am =================================================================== --- trunk/scripts/Makefile.am 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/Makefile.am 2007-03-31 18:14:39 UTC (rev 7657) @@ -31,13 +31,7 @@ ### FIXME: Brute force inclusion in dist tarball. The files below may ### be treated in a different way for installation [RL, 2003-03-06] EXTRA_DIST = \ - check-tarball-cvs.sh \ - check-year-author.pl \ - fixfort \ get-dependency-libs.sh \ htdocs-gen_plot-examples.sh \ - htdocs-replace.sh \ - make-cvs-tarball.sh \ make_tarball.sh \ mktclIndex \ - upload-cvs-tarball.sh Deleted: trunk/scripts/check-copyright.pl =================================================================== --- trunk/scripts/check-copyright.pl 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/check-copyright.pl 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,42 +0,0 @@ -#!/usr/bin/perl -w -# -# check-copyright.pl: Parse a ChangeLog file generated by cvsreport (like -# those in the www/announce/ directory) and output all the files mentioned -# there together with the CVS users that modified them and the lines -# containing the Copyright holders. -# -# Copyright (C) 2004 Rafael Laboissiere - -if (scalar @ARGV) { - open (CHGLOG, "< $ARGV[0]") - or die "Cannot open ChangeLog file $ARGV[0]"; -} else { - open (CHGLOG, "< &STDIN"); -} - -my %files = (); -my ($user, $file); - -while (<CHGLOG>) { - if (/^Commit from (\w+)/) { - $user = $1; - next; - } - if (/^..plplot ([^\s]+)/) { - $file = $1; - next if (not -f $file); - if (not defined $files{$file}) { - $files{$file} = { - users => { $user => 1 }, - copyright => join ("", qx {grep Copyright $file}) - }; - } else { - $files{$file}->{users}->{$user} = 1; - } - } -} - -for my $f (sort keys %files) { - print STDOUT ("$f: " . join (", ", keys %{$files{$f}->{users}}) . "\n" - . $files{$f}->{copyright} . "=====\n"); -} Deleted: trunk/scripts/check-tarball-cvs.sh =================================================================== --- trunk/scripts/check-tarball-cvs.sh 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/check-tarball-cvs.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,46 +0,0 @@ -#/bin/sh -e - -# Copyright (C) 2004 Rafael Laboissiere -# -# This file is part of PLplot. -# -# PLplot is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Library Public License as published -# by the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PLplot 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 Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with PLplot; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -# First try on a script to check the discrepancies between the distributed -# tarball obtained with "make dist" and the CVS tree. This script will -# send to stdout a list of files that are present in a freshly checked out -# CVS tree and absent from the tarball. -# -# Run it from the top_builddir directory. -# -# Written by Rafael Laboissiere on 2003-31-01 - -VERSION=`perl -ne \ - 'if(/AC_INIT\(plplot, ([0-9.cvs]+)/){print "$1\n"; last}'\ - < configure.ac` -TOPDIR=plplot-$VERSION -TARBALL=$TOPDIR.tar.gz - -make dist > /dev/null -cvs co plplot > /dev/null - -for f in `find plplot -type f | sed 's|^plplot/||' \ - | fgrep -v CVS | fgrep -v .cvsignore` ; do - if [ -z "`tar tfz $TARBALL $TOPDIR/$f 2>/dev/null`" ] ; then - echo $f - fi -done - -rm -rf $TARBALL plplot Deleted: trunk/scripts/check-year-author.pl =================================================================== --- trunk/scripts/check-year-author.pl 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/check-year-author.pl 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,34 +0,0 @@ -#!/usr/bin/perl -w - -# Get current year, if not given as argument -$year = (defined $ARGV[0]) ? $ARGV[0] : `date '+%Y'`; -chomp $year; - -# CVS root -$cvsroot = "/cvsroot/plplot/plplot"; - -# Get list of CVS files -@files = (); -print STDERR "Getting CVS files list..."; -open (STATUS, "cvs status 2>/dev/null|") - or die "Cannot run cvs status. Au revoir."; -while (<STATUS>) { - push (@files, $1) - if (m{Repository revision:[^/]+$cvsroot/(.*)(?=,v)}); -} -print STDERR " done\n"; - -print STDERR "Getting cvs logs...\n"; - -for $file (@files) { - my %names; - open (LOG, "cvs log $file 2>/dev/null |") - or die "Cannot run cvs log for $file. Au revoir."; - while (<LOG>) { - $names{$1} = 1 - if (m{^date: $year/.*author: (.*)(?=; state)}); - } - my @authors = sort keys %names; - print STDOUT "$file: " . join (", ", @authors) . "\n" - if scalar @authors > 0; -} Deleted: trunk/scripts/fixfort =================================================================== --- trunk/scripts/fixfort 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/fixfort 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,10 +0,0 @@ -#!/usr/bin/awk -f -# -# File: fixfort -# Usage: fixfort oldfile.f >newfile.f -# -# Very simple awk program to remove bang comments from Fortran files. -# Shouldn't be necessary very often: most Fortran compilers started -# supporting bang comments in the early 80's. -# -$1 != "!" { print } Deleted: trunk/scripts/htdocs-replace.sh =================================================================== --- trunk/scripts/htdocs-replace.sh 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/htdocs-replace.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,46 +0,0 @@ -#!/bin/bash - -# WARNING: completely replaces htdocs by new version without -# backups other than the cvs repository. -# It is assumed that old versions of htdocs can be obtained using -# cvs export with a different tag or date - -DOCBOOKDIR=htdocs/resources/docbook-manual -DEBIANDIR=htdocs/resources/debian -PLOTEXAMPLES=htdocs_plot_examples.tgz - -echo "This script is obsolete. In order to update the PLplot web site," -echo "Please, use the Makefile in the www CVS module." -echo "(Read the README file for instructions)." - -exit 0 - -cd /home/groups/p/pl/plplot - -if [ ! -d $DOCBOOKDIR ] ; then - echo "Warning: The DocBook directory is missing in the htdocs hierarchy." - echo " Install it from the CVS checked out sources of the docbook module." - DOCBOOKDIR="" -else - mv $DOCBOOKDIR docbook-manual-$$ -fi - -if [ ! -f $PLOTEXAMPLES ] ; then - echo "Warning, $PLOTEXAMPLES does not exists." - echo "Follow the instructions in scripts/htdocs-gen_plot-examples.sh to" - echo "generate it." -fi - -test -d $DEBIANDIR && mv $DEBIANDIR debian-$$ - -if [ -z "$USER" ] ; then - echo -n "Login name for SourceForge CVS: " - read USER -fi -rm -rf htdocs -CVS_RSH=ssh CVSROOT=$USER@cvs1:/cvsroot/plplot \ - cvs export -r HEAD -d htdocs www -test -n "$DOCBOOKDIR" && mv docbook-manual-$$ $DOCBOOKDIR -test -n "$DEBIANDIR" && mv debian-$$ $DEBIANDIR -test -f $PLOTEXAMPLES && tar xzf htdocs_plot_examples.tgz -chmod -R g=u htdocs Deleted: trunk/scripts/make-cvs-tarball.sh =================================================================== --- trunk/scripts/make-cvs-tarball.sh 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/make-cvs-tarball.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,129 +0,0 @@ -#!/bin/bash - -# This will prepare a distribution tarbal directly from the CVS sources of -# the PLplot project. -# CAVEAT: this script silently and completely deletes a directory called -# plplot-cvs-tarball existent in the current working directory. - -# Copyright (C) 2003, 2004 Rafael Laboissiere -# -# This file is part of PLplot. -# -# PLplot is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Library Public License as published -# by the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PLplot 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 Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with PLplot; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -# $Id$ - -usage () { - local prog=`basename $0` - echo "Usage: $prog [-n] [-u user] [-t tmpdir] [-w remote dir] \\" - echo " [-r branch] [-v version] [-c] [-i prefix] \\" - echo " [-p config_prefix] [-o config_opts]" - echo " $prog -d" - echo " $prog -h" - echo - echo "Option -n prevents building of the DocBook manual." - echo "Option -d prints the default values." - echo "Option -o allows specifying additional configuration options." - echo "Option -p allows specifying the prefix during preparation." - echo "When option -v is not given, a tarball is produced with version and" - echo " label containing today's date string." - echo "When option -c is given, the tarball is unpacked and make check" - echo " is run. For exercising make install, use option -i." - exit $1 -} - -DOC_ARG=${DOC_ARG:---enable-builddoc} -WWW_USER=${WWW_USER:-hbabcock} -CVSROOTDIR=${CVSROOTDIR:-plplot.cvs.sourceforge.net:/cvsroot/plplot} -VERSION=${VERSION:+--version=$1} -BRANCH=${BRANCH:--D now} -CVSTMPDIR=${CVSTMPDIR:-plplot-cvs-tarball} - -# Put here extra configure options that should always be used when -# generating a tarball -config_opt="" - -print_defaults () { - local v - for v in DOC_ARG WWW_USER CVSROOTDIR VERSION BRANCH CVSTMPDIR ; do - eval "echo $v=\\\"\$$v\\\"" - done - exit 0 -} - -bypass_rtag=no -do_check=no -prefix="" -preparation_prefix="" - -while getopts "bcdhi:no:p:r:t:u:v:w:" option -do - case $option in - b) bypass_rtag=yes ;; - c) do_check=yes ;; - d) print_defaults ;; - h) usage 0 ;; - i) test -n "$OPTARG" || usage 1 ; prefix=$OPTARG ;; - n) DOC_ARG= ;; - o) config_opt="$config_opt $OPTARG" ;; - p) test -n "$OPTARG" || usage 1 ; preparation_prefix="--prefix $OPTARG" ;; - r) test -n "$OPTARG" || usage 1 ; BRANCH="-r $OPTARG" ;; - t) test -n "$OPTARG" || usage 1 ; CVSTMPDIR=$OPTARG ;; - u) test -n "$OPTARG" || usage 1 ; WWW_USER=$OPTARG ;; - v) test -n "$OPTARG" || usage 1 ; VERSION="--version=$OPTARG" ;; - w) test -n "$OPTARG" || usage 1 ; CVSROOTDIR=$OPTARG ;; - *) usage 1 ;; - esac -done - -clean_prefix=yes -test -d "$prefix" && clean_prefix=no - -cleanup ( ) { - rm -rf $CVSTMPDIR -} - -trap "cleanup" 0 HUP INT QUIT PIPE TERM - -cleanup - -test $bypass_rtag = yes \ - || date_tag=cvs-tarball_`date --utc +%Y-%m-%d-%H-%M-%S` \ - && echo "Tagging repository with $date_tag" \ - && cvs -d${WWW_USER}@$CVSROOTDIR rtag $BRANCH $date_tag plplot \ - && BRANCH="-r $date_tag" - -cvs -d${WWW_USER}@$CVSROOTDIR export -d$CVSTMPDIR $BRANCH plplot \ - && cd $CVSTMPDIR \ - && cf/bootstrap.sh ${VERSION:---date-version} \ - && ./configure $preparation_prefix $DOC_ARG $config_opt \ - && echo "Making distribution." \ - && make dist \ - && TARBALL=`ls plplot-*.tar.gz` \ - && DISTDIR=`echo $TARBALL | sed s/.tar.gz//` \ - && mv $TARBALL .. \ - && cd .. \ - && echo "CVS distribution tarball: $TARBALL" \ - && test "$do_check" = yes \ - && rm -rf $DISTDIR \ - && tar xfz $TARBALL \ - && ( cd $DISTDIR \ - && ./configure ${prefix:+--prefix=$prefix} $config_opt \ - && make check \ - && test -n "$prefix" \ - && make install ) ; \ - rm -rf $DISTDIR \ - && test "$clean_prefix" = yes \ - && rm -rf "$prefix" Deleted: trunk/scripts/upload-cvs-tarball.sh =================================================================== --- trunk/scripts/upload-cvs-tarball.sh 2007-03-31 18:12:53 UTC (rev 7656) +++ trunk/scripts/upload-cvs-tarball.sh 2007-03-31 18:14:39 UTC (rev 7657) @@ -1,74 +0,0 @@ -#!/bin/bash -# -# Script for uploading the CVS snapshot tarball to the PLplot web site -# -# Copyright (C) 2004 Rafael Laboissiere -# This script in the public domain - -# GPG signing is disabled by setting the environment variable NOGPG -# If the gpg command fails, then no mention to the detached signature -# is included in the tarball. - -WWW_HOST=${WWW_HOST:-plplot.sf.net} -WWW_USER=${WWW_USER:-tomduck} -WWW_DIR=${WWW_DIR:-/home/groups/p/pl/plplot/htdocs/cvs-tarball} -GPGKEY=${GPGKEY:-0x17D965DB} - -function run () { - echo $* - $* -} - -if test $# != 1 ; then - echo "Usage: $0 tarball.tar.gz" - exit 1 -fi - -TARBALL=$1 -TARBALL_NAME=`basename $TARBALL` - -gpg_successful=no -test -z "$NOGPG" \ - && gpg --default-key $GPGKEY --detach-sign --armor $TARBALL \ - && gpg_successful=yes - -INDEX=`tempfile --mode=0644` -DATE=`date --utc +"%Y-%m-%d %H:%M UTC"` - -cat > $INDEX <<EOF -<html> -<head> -<title>PLplot CVS tarball</title> -</head> -<body> -<h2>Latest PLplot CVS snapshot distribution</h2> - -<p> Tarball: <a href="$TARBALL_NAME">$TARBALL_NAME</a>.</p> -EOF - -test "$gpg_successful" = yes && cat >> $INDEX <<EOF -<p> Detached GPG signature: <a href="$TARBALL_NAME.asc">$TARBALL_NAME.asc</a> -(signed with key -<a href="http://wwwkeys.pgp.net:11371/pks/lookup?op=index&search=$GPGKEY">$GPGKEY</a>) -</p> -EOF - -cat >> $INDEX <<EOF -<p> Uploaded by <a href="http://sf.net/users/$WWW_USER">$WWW_USER</a> -on $DATE</p> - -</body> -</html> -EOF - -HOST=$WWW_USER@$WWW_HOST - -run ssh $HOST rm -rf $WWW_DIR -run ssh $HOST mkdir $WWW_DIR -run scp $TARBALL $TARBALL.asc $HOST:$WWW_DIR -test "$gpg_successful" = yes && run scp $TARBALL.asc $HOST:$WWW_DIR -run scp $INDEX $HOST:$WWW_DIR/index.html -run ssh $HOST chgrp -R plplot $WWW_DIR -run ssh $HOST chmod -R g=u $WWW_DIR - -#rm -f $TARBALL.asc $INDEX This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-04-11 00:29:16
|
Revision: 7665 http://plplot.svn.sourceforge.net/plplot/?rev=7665&view=rev Author: airwin Date: 2007-04-10 17:29:17 -0700 (Tue, 10 Apr 2007) Log Message: ----------- Implement install-tree build of wxPLplotDemo example Modified Paths: -------------- trunk/cmake/modules/wxwidgets.cmake trunk/examples/c++/Makefile.examples.in Modified: trunk/cmake/modules/wxwidgets.cmake =================================================================== --- trunk/cmake/modules/wxwidgets.cmake 2007-04-10 23:53:22 UTC (rev 7664) +++ trunk/cmake/modules/wxwidgets.cmake 2007-04-11 00:29:17 UTC (rev 7665) @@ -88,4 +88,10 @@ "WARNING: ENABLE_cxx is OFF so " "Setting ENABLE_wxwidgets to OFF." ) + set(ENABLE_wxwidgets OFF CACHE BOOL "Enable wxwidgets bindings" FORCE) endif(ENABLE_wxwidgets AND NOT ENABLE_cxx) +if(ENABLE_wxwidgets) + set(wxwidgets_true "") +else(ENABLE_wxwidgets) + set(wxwidgets_true "#") +endif(ENABLE_wxwidgets) Modified: trunk/examples/c++/Makefile.examples.in =================================================================== --- trunk/examples/c++/Makefile.examples.in 2007-04-10 23:53:22 UTC (rev 7664) +++ trunk/examples/c++/Makefile.examples.in 2007-04-11 00:29:17 UTC (rev 7665) @@ -28,6 +28,9 @@ @pkg_config_true@PKG_CONFIG_ENV = @PKG_CONFIG_ENV@ @pkg_config_true@RPATHCMD = @RPATHCMD@ +@wxwidgets_true@@pkg_config_true@PLPLOTWXWIDGETS_EXECUTABLES_list = \ +@wxwidgets_true@@pkg_config_true@ wxPLplotDemo$(EXEEXT) + EXECUTABLES_list = \ x01cc$(EXEEXT) \ x01$(EXEEXT) \ @@ -55,12 +58,17 @@ x23$(EXEEXT) \ x24$(EXEEXT) \ x25$(EXEEXT) \ - x26$(EXEEXT) + x26$(EXEEXT) \ + $(PLPLOTWXWIDGETS_EXECUTABLES_list) + all: $(EXECUTABLES_list) clean: rm -f $(EXECUTABLES_list) +@wxwidgets_true@@pkg_config_true@wxPLplotDemo$(EXEEXT): wxPLplotDemo.cpp +@wxwidgets_true@@pkg_config_true@ $(CXX) $< -o $@ $(RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config --cflags --libs plplot$(LIB_TAG)-wxwidgets` + .cc$(EXEEXT): @pkg_config_true@ $(CXX) $< -o $@ $(RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config --cflags --libs plplot$(LIB_TAG)-c++` @pkg_config_false@ $(CXX) $< -o $@ `plplot-config --cflags --libs --with-c++` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-05-01 16:23:51
|
Revision: 7690 http://plplot.svn.sourceforge.net/plplot/?rev=7690&view=rev Author: airwin Date: 2007-05-01 09:23:52 -0700 (Tue, 01 May 2007) Log Message: ----------- AWI for JB. Move all string transformations to interface for thick binding for the convenience of users. This is an API change so our one thick binding example, xt01a.adb had to be changed as well. N.B. the Ada users have been warned via the release notes that this Ada interface is experimental. So they should expect API changes like this until this interface is finalized. Furthermore, the corresponding string change for the thin binding is planned but has not been implemented yet. Modified Paths: -------------- trunk/bindings/ada/plplot.adb trunk/bindings/ada/plplot.ads trunk/examples/ada/xt01a.adb Modified: trunk/bindings/ada/plplot.adb =================================================================== --- trunk/bindings/ada/plplot.adb 2007-05-01 16:14:00 UTC (rev 7689) +++ trunk/bindings/ada/plplot.adb 2007-05-01 16:23:52 UTC (rev 7690) @@ -187,7 +187,7 @@ Set_Environment(x_Min, x_Max, y_Min, y_Max, Justification, Axis_Style); if x1'length /= 1 and y1'length /= 1 then - Write_Labels(X_Labels(1), Y_Labels(1), Title_Labels(1)); + Write_Labels(To_String(X_Labels(1)), To_String(Y_Labels(1)), To_String(Title_Labels(1))); Set_Color(Colors(1)); --Set_Pen_Width(Line_Widths(1)); Select_Line_Style(Line_Styles(1)); @@ -195,7 +195,7 @@ end if; if x2'length /= 1 and y2'length /= 1 then - Write_Labels(X_Labels(2), Y_Labels(2), Title_Labels(2)); + Write_Labels(To_String(X_Labels(2)), To_String(Y_Labels(2)), To_String(Title_Labels(2))); Set_Color(Colors(2)); --Set_Pen_Width(Line_Widths(2)); Select_Line_Style(Line_Styles(2)); @@ -203,7 +203,7 @@ end if; if x3'length /= 1 and y3'length /= 1 then - Write_Labels(X_Labels(3), Y_Labels(3), Title_Labels(3)); + Write_Labels(To_String(X_Labels(3)), To_String(Y_Labels(3)), To_String(Title_Labels(3))); Set_Color(Colors(3)); --Set_Pen_Width(Line_Widths(3)); Select_Line_Style(Line_Styles(3)); @@ -211,7 +211,7 @@ end if; if x4'length /= 1 and y4'length /= 1 then - Write_Labels(X_Labels(4), Y_Labels(4), Title_Labels(4)); + Write_Labels(To_String(X_Labels(4)), To_String(Y_Labels(4)), To_String(Title_Labels(4))); Set_Color(Colors(4)); --Set_Pen_Width(Line_Widths(4)); Select_Line_Style(Line_Styles(4)); @@ -219,7 +219,7 @@ end if; if x5'length /= 1 and y5'length /= 1 then - Write_Labels(X_Labels(5), Y_Labels(5), Title_Labels(5)); + Write_Labels(To_String(X_Labels(5)), To_String(Y_Labels(5)), To_String(Title_Labels(5))); Set_Color(Colors(5)); --Set_Pen_Width(Line_Widths(5)); Select_Line_Style(Line_Styles(5)); @@ -243,18 +243,18 @@ y3 : Real_Vector := Dont_Plot_This; y4 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is X_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Y_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Title_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. Multiplot_Pairs(x, y1, x, y2, x, y3, x, y4, x, y5, X_Labels => X_Label_String_Array, @@ -272,9 +272,9 @@ y3 : Real_Vector := Dont_Plot_This; y4 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is X_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Y_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; @@ -283,9 +283,9 @@ x_Log : Real_Vector(x'range); begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. for i in x_Log'range loop x_Log(i) := Log(x(i), 10.0); @@ -294,7 +294,7 @@ X_Labels => X_Label_String_Array, Y_Labels => Y_Label_String_Array, Title_Labels => Title_Label_String_Array, - Axis_Style => Log_X_Minor_Grid); + Axis_Style => Log_X_Minor_Grid); end Simple_Plot_Log_X; @@ -306,9 +306,9 @@ x3 : Real_Vector := Dont_Plot_This; x4 : Real_Vector := Dont_Plot_This; x5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is X_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Y_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; @@ -317,9 +317,9 @@ y_Log : Real_Vector(y'range); begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. for i in y_Log'range loop y_Log(i) := Log(y(i), 10.0); @@ -328,15 +328,15 @@ X_Labels => X_Label_String_Array, Y_Labels => Y_Label_String_Array, Title_Labels => Title_Label_String_Array, - Axis_Style => Log_Y_Minor_Grid); + Axis_Style => Log_Y_Minor_Grid); end Simple_Plot_Log_Y; -- Simple log x - log y plotter procedure Simple_Plot_Log_XY(x, y : Real_Vector; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is X_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Y_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; @@ -345,9 +345,9 @@ x_Log : Real_Vector(x'range); y_Log : Real_Vector(y'range); begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. for i in x_Log'range loop x_Log(i) := Log(x(i), 10.0); @@ -357,7 +357,7 @@ X_Labels => X_Label_String_Array, Y_Labels => Y_Label_String_Array, Title_Labels => Title_Label_String_Array, - Axis_Style => Log_XY_Minor_Grid); + Axis_Style => Log_XY_Minor_Grid); end Simple_Plot_Log_XY; @@ -373,17 +373,17 @@ y4 : Real_Vector := Dont_Plot_This; x5 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is X_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Y_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; Title_Label_String_Array : Label_String_Array_Type := Default_Label_String_Array; begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. Multiplot_Pairs(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, X_Labels => X_Label_String_Array, @@ -399,9 +399,9 @@ -- Similar to Multiplot_Pairs except single trace and no attribute arrays. procedure Single_Plot (x, y : Real_Vector; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String; + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String); Axis_Style : Axis_Style_Type := Linear_Major_Grid; Color : Plot_Color_Type := Red; Line_Width : Integer := 1; @@ -420,9 +420,9 @@ Line_Style_Array : Line_Style_Array_Type := Default_Line_Style_Array; begin - X_Label_String_Array(1) := X_Label; -- First slot only; others not used. - Y_Label_String_Array(1) := Y_Label; -- First slot only; others not used. - Title_Label_String_Array(1) := Title_Label; -- First slot only; others not used. + X_Label_String_Array(1) := TUB(X_Label); -- First slot only; others not used. + Y_Label_String_Array(1) := TUB(Y_Label); -- First slot only; others not used. + Title_Label_String_Array(1) := TUB(Title_Label); -- First slot only; others not used. Color_Array(1) := Color; Line_Width_Array(1) := Line_Width; -- First slot only; others not used. Line_Style_Array(1) := Line_Style; -- First slot only; others not used. @@ -536,10 +536,10 @@ procedure Simple_Contour (z : Real_Matrix; - Number_Levels : Integer := 10; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String) is + Number_Levels : Integer := 10; + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)) is Contour_Levels : Real_Vector (0 .. Number_Levels); Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; @@ -566,7 +566,7 @@ Set_Viewport_Normalized(0.1, 0.9, 0.1, 0.9); Set_Viewport_World(1.0, 35.0, 1.0, 46.0); -- fix Set_Color(White); - Box_Around_Viewport(TUB("bcnst"), 0.0, 0, TUB("bcnstv"), 0.0, 0); + Box_Around_Viewport("bcnst", 0.0, 0, "bcnstv", 0.0, 0); Set_Color(White); Write_Labels(X_Label, Y_Label, Title_Label); Set_Color(White); @@ -587,9 +587,9 @@ y_Max : Long_Float := 0.0; Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees - X_Label : Unbounded_String := TUB("x"); - Y_Label : Unbounded_String := TUB("y"); - Z_Label : Unbounded_String := TUB("z")) is + X_Label : String := "x"; + Y_Label : String := "y"; + Z_Label : String := "z") is x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local : Long_Float; @@ -618,9 +618,9 @@ Set_Viewport_World(-0.9, 0.9, -0.8, 1.5); Set_Up_3D(1.0, 1.0, 1.0, x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local, Matrix_Min(z), Matrix_Max(z), Altitude, Azimuth); -- plw3d - Box_Around_Viewport_3D(TUB("bnstu"), X_Label, 0.0, 0, - TUB("bnstu"), Y_Label, 0.0, 0, - TUB("bcdmnstuv"), Z_Label, 0.0, 0); -- plbox3 + Box_Around_Viewport_3D("bnstu", X_Label, 0.0, 0, + "bnstu", Y_Label, 0.0, 0, + "bcdmnstuv", Z_Label, 0.0, 0); -- plbox3 Mesh_3D(x, y, z, Lines_Parallel_To_X_And_Y + Magnitude_Color); -- plmesh end Simple_Mesh_3D; @@ -636,9 +636,9 @@ y_Max : Long_Float := 0.0; Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees - X_Label : Unbounded_String := TUB("x"); - Y_Label : Unbounded_String := TUB("y"); - Z_Label : Unbounded_String := TUB("z")) is + X_Label : String := "x"; + Y_Label : String := "y"; + Z_Label : String := "z") is x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local : Long_Float; Contour_Levels_Dummy : Real_Vector(0..1) := (others => 0.0); @@ -668,9 +668,9 @@ Set_Viewport_World(-0.9, 0.9, -0.8, 1.5); Set_Up_3D(1.0, 1.0, 1.0, x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local, Matrix_Min(z), Matrix_Max(z), Altitude, Azimuth); -- plw3d - Box_Around_Viewport_3D(TUB("bnstu"), X_Label, 0.0, 0, - TUB("bnstu"), Y_Label, 0.0, 0, - TUB("bcdmnstuv"), Z_Label, 0.0, 0); -- plbox3 + Box_Around_Viewport_3D("bnstu", X_Label, 0.0, 0, + "bnstu", Y_Label, 0.0, 0, + "bcdmnstuv", Z_Label, 0.0, 0); -- plbox3 Mesh_3D(x, y, z, Lines_Parallel_To_X_And_Y + Magnitude_Color); -- plmesh Shaded_Surface_3D(x, y, z, Magnitude_Color, Contour_Levels_Dummy); end Simple_Surface_3D; @@ -993,17 +993,17 @@ -- plaxes procedure Box_Around_Viewport_With_Origin (X_Origin, Y_Origin : Long_Float; - X_Option_String : Unbounded_String; + X_Option_String : String; X_Major_Tick_Interval : Long_Float; X_Number_Of_Subintervals : Natural; - Y_Option_String : Unbounded_String; + Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; Y_Number_Of_Subintervals : Natural) is begin plaxes (X_Origin, Y_Origin, - To_C(To_String(X_Option_String), True), X_Major_Tick_Interval, X_Number_Of_Subintervals, - To_C(To_String(Y_Option_String), True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals); + To_C(X_Option_String, True), X_Major_Tick_Interval, X_Number_Of_Subintervals, + To_C(Y_Option_String, True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals); end Box_Around_Viewport_With_Origin; @@ -1029,41 +1029,41 @@ -- This draws a box around the current viewport. -- plbox procedure Box_Around_Viewport - (X_Option_String : Unbounded_String; + (X_Option_String : String; X_Major_Tick_Interval : Long_Float; X_Number_Of_Subintervals : Natural := 0; - Y_Option_String : Unbounded_String; + Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; Y_Number_Of_Subintervals : Natural) is begin plbox - (To_C(To_String(X_Option_String), True), X_Major_Tick_Interval, X_Number_Of_Subintervals, - To_C(To_String(Y_Option_String), True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals); + (To_C(X_Option_String, True), X_Major_Tick_Interval, X_Number_Of_Subintervals, + To_C(Y_Option_String, True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals); end Box_Around_Viewport; -- This is the 3-d analogue of plbox(). -- plbox3 procedure Box_Around_Viewport_3D - (X_Option_String : Unbounded_String; - X_Label : Unbounded_String := Default_Label_String; + (X_Option_String : String; + X_Label : String := To_String(Default_Label_String); X_Major_Tick_Interval : Long_Float := 0.0; X_Number_Of_Subintervals : Natural := 0; - Y_Option_String : Unbounded_String; - Y_Label : Unbounded_String := Default_Label_String; + Y_Option_String : String; + Y_Label : String := To_String(Default_Label_String); Y_Major_Tick_Interval : Long_Float := 0.0; Y_Number_Of_Subintervals : Natural := 0; - Z_Option_String : Unbounded_String; - Z_Label : Unbounded_String := Default_Label_String; + Z_Option_String : String; + Z_Label : String := To_String(Default_Label_String); Z_Major_Tick_Interval : Long_Float := 0.0; Z_Number_Of_Subintervals : Natural := 0) is begin plbox3 - (To_C(To_String(X_Option_String), True), To_C(To_String(X_Label), True), X_Major_Tick_Interval, X_Number_Of_Subintervals, - To_C(To_String(Y_Option_String), True), To_C(To_String(Y_Label), True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals, - To_C(To_String(Z_Option_String), True), To_C(To_String(Z_Label), True), Z_Major_Tick_Interval, Z_Number_Of_Subintervals); + (To_C(X_Option_String, True), To_C(X_Label, True), X_Major_Tick_Interval, X_Number_Of_Subintervals, + To_C(Y_Option_String, True), To_C(Y_Label, True), Y_Major_Tick_Interval, Y_Number_Of_Subintervals, + To_C(Z_Option_String, True), To_C(Z_Label, True), Z_Major_Tick_Interval, Z_Number_Of_Subintervals); end Box_Around_Viewport_3D; @@ -1626,9 +1626,9 @@ -- Simple routine for labelling graphs. -- pllab - procedure Write_Labels(X_Label, Y_Label, Title_Label : Unbounded_String := Default_Label_String) is + procedure Write_Labels(X_Label, Y_Label, Title_Label : String := To_String(Default_Label_String)) is begin - pllab(To_C(To_String(X_Label), True), To_C(To_String(Y_Label), True), To_C(To_String(Title_Label), True)); + pllab(To_C(X_Label, True), To_C(Y_Label, True), To_C(Title_Label, True)); end Write_Labels; @@ -1677,7 +1677,7 @@ Map_Kind_String : Unbounded_String; begin - -- Convert Map_Kind into an unbounded string; later, a C string. + -- Convert Map_Kind into a string; later, a C string. case Map_Kind is when Continents => begin @@ -2451,7 +2451,7 @@ -- plstripc procedure Create_Stripchart (ID : out Integer; - X_Options, Y_Options : Unbounded_String; + X_Options, Y_Options : String; x_Min, x_Max : Long_Float; x_Jump : Long_Float; y_Min, y_Max : Long_Float; @@ -2462,16 +2462,11 @@ Pen_Colors : Integer_Array_1D; Line_Styles : Integer_Array_1D; Pen_Labels : Stripchart_Label_String_Array_Type; - x_Label, y_Label, Title_Label : Unbounded_String) is + X_Label, Y_Label, Title_Label : String := To_String(Default_Label_String)) is PL_Autoscale_Y, PL_Accumulate : PLBOOL; PL_Pen_Labels : Stripchart_String_Array; - -- Ad hoc stuff to shorten the line to call plstripc. - function TC(Ada_String : Unbounded_String) return char_array is - begin - return To_C(To_String(Ada_String), True); - end TC; x_LP : Long_Float_0_1_Type renames x_Legend_Position; y_LP : Long_Float_0_1_Type renames y_Legend_Position; @@ -2493,7 +2488,7 @@ PL_Pen_Labels(Index) := To_C(To_String(Pen_Labels(Index)), True); end loop; - plstripc(ID, TC(X_Options), TC(Y_Options), x_Min, x_Max, x_Jump, y_Min, y_Max, x_LP, y_LP, PL_Autoscale_Y, PL_Accumulate, Box_Color, Legend_Color, Pen_Colors, Line_Styles, PL_Pen_Labels, TC(x_Label), TC(y_Label), TC(Title_Label)); + plstripc(ID, To_C(X_Options), To_C(Y_Options), x_Min, x_Max, x_Jump, y_Min, y_Max, x_LP, y_LP, PL_Autoscale_Y, PL_Accumulate, Box_Color, Legend_Color, Pen_Colors, Line_Styles, PL_Pen_Labels, To_C(x_Label), To_C(y_Label), To_C(Title_Label)); end Create_Stripchart; @@ -2750,9 +2745,9 @@ -- Process input strings, treating them as an option and argument pair. -- plsetopt - procedure Set_Command_Line_Option(Option, Argument : Unbounded_String) is + procedure Set_Command_Line_Option(Option, Argument : String) is begin - plsetopt(To_C(To_String(Option), True), To_C(To_String(Argument), True)); + plsetopt(To_C(Option, True), To_C(Argument, True)); end Set_Command_Line_Option; Modified: trunk/bindings/ada/plplot.ads =================================================================== --- trunk/bindings/ada/plplot.ads 2007-05-01 16:14:00 UTC (rev 7689) +++ trunk/bindings/ada/plplot.ads 2007-05-01 16:23:52 UTC (rev 7690) @@ -200,9 +200,9 @@ y3 : Real_Vector := Dont_Plot_This; y4 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); -- Simple log x plotter for single x array and multiple y arrays @@ -213,9 +213,9 @@ y3 : Real_Vector := Dont_Plot_This; y4 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); -- Simple log y plotter for multiple x arrays and single y array @@ -226,16 +226,16 @@ x3 : Real_Vector := Dont_Plot_This; x4 : Real_Vector := Dont_Plot_This; x5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); -- Simple log x - log y plotter procedure Simple_Plot_Log_XY(x, y : Real_Vector; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); -- Simple plotter for multiple x-y arrays specified pairwise. @@ -250,9 +250,9 @@ y4 : Real_Vector := Dont_Plot_This; x5 : Real_Vector := Dont_Plot_This; y5 : Real_Vector := Dont_Plot_This; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); --------- Plotter requiring somewhat more arguments ------ @@ -261,9 +261,9 @@ -- Similar to Multiplot_Pairs except single trace and no attribute arrays. procedure Single_Plot (x, y : Real_Vector; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String; + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String); Axis_Style : Axis_Style_Type := Linear_Major_Grid; Color : Plot_Color_Type := Red; Line_Width : Integer := 1; @@ -279,10 +279,10 @@ procedure Simple_Contour (z : Real_Matrix; - Number_Levels : Integer := 10; - X_Label : Unbounded_String := Default_Label_String; - Y_Label : Unbounded_String := Default_Label_String; - Title_Label : Unbounded_String := Default_Label_String); + Number_Levels : Integer := 10; + X_Label : String := To_String(Default_Label_String); + Y_Label : String := To_String(Default_Label_String); + Title_Label : String := To_String(Default_Label_String)); --------- Simple 3D Mesh Plotter ------ @@ -296,9 +296,9 @@ y_Max : Long_Float := 0.0; Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees - X_Label : Unbounded_String := TUB("x"); - Y_Label : Unbounded_String := TUB("y"); - Z_Label : Unbounded_String := TUB("z")); + X_Label : String := "x"; + Y_Label : String := "y"; + Z_Label : String := "z"); --------- Simple 3D Surface Plotter ------ @@ -312,9 +312,9 @@ y_Max : Long_Float := 0.0; Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees - X_Label : Unbounded_String := TUB("x"); - Y_Label : Unbounded_String := TUB("y"); - Z_Label : Unbounded_String := TUB("z")); + X_Label : String := "x"; + Y_Label : String := "y"; + Z_Label : String := "z"); --------- Simple color table manipulatons ----- @@ -397,10 +397,10 @@ -- plaxes procedure Box_Around_Viewport_With_Origin (X_Origin, Y_Origin : Long_Float; - X_Option_String : Unbounded_String; + X_Option_String : String; X_Major_Tick_Interval : Long_Float; X_Number_Of_Subintervals : Natural; - Y_Option_String : Unbounded_String; + Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; Y_Number_Of_Subintervals : Natural); @@ -421,10 +421,10 @@ -- This draws a box around the current viewport. -- plbox procedure Box_Around_Viewport - (X_Option_String : Unbounded_String; + (X_Option_String : String; X_Major_Tick_Interval : Long_Float; X_Number_Of_Subintervals : Natural := 0; - Y_Option_String : Unbounded_String; + Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; Y_Number_Of_Subintervals : Natural); @@ -434,20 +434,20 @@ -- This is the 3-d analogue of plbox(). -- plbox3 procedure Box_Around_Viewport_3D - (X_Option_String : Unbounded_String; - X_Label : Unbounded_String := Default_Label_String; + (X_Option_String : String; + X_Label : String := To_String(Default_Label_String); X_Major_Tick_Interval : Long_Float := 0.0; X_Number_Of_Subintervals : Natural := 0; - Y_Option_String : Unbounded_String; - Y_Label : Unbounded_String := Default_Label_String; + Y_Option_String : String; + Y_Label : String := To_String(Default_Label_String); Y_Major_Tick_Interval : Long_Float := 0.0; Y_Number_Of_Subintervals : Natural := 0; - Z_Option_String : Unbounded_String; - Z_Label : Unbounded_String := Default_Label_String; + Z_Option_String : String; + Z_Label : String := To_String(Default_Label_String); Z_Major_Tick_Interval : Long_Float := 0.0; - Z_Number_Of_Subintervals : Natural := 0); + Z_Number_Of_Subintervals : Natural := 0); -- Calculate world coordinates and subpage from relative device coordinates. @@ -802,7 +802,7 @@ -- Simple routine for labelling graphs. -- pllab - procedure Write_Labels(X_Label, Y_Label, Title_Label : Unbounded_String := Default_Label_String); + procedure Write_Labels(X_Label, Y_Label, Title_Label : String := To_String(Default_Label_String)); -- Sets position of the light source @@ -1284,7 +1284,7 @@ -- plstripc procedure Create_Stripchart (ID : out Integer; - X_Options, Y_Options : Unbounded_String; + X_Options, Y_Options : String; x_Min, x_Max : Long_Float; x_Jump : Long_Float; y_Min, y_Max : Long_Float; @@ -1295,7 +1295,7 @@ Pen_Colors : Integer_Array_1D; Line_Styles : Integer_Array_1D; Pen_Labels : Stripchart_Label_String_Array_Type; - x_Label, y_Label, Title_Label : Unbounded_String); + X_Label, Y_Label, Title_Label : String := To_String(Default_Label_String)); -- Deletes and releases memory used by a stripchart. @@ -1452,7 +1452,7 @@ -- Process input strings, treating them as an option and argument pair. -- plsetopt - procedure Set_Command_Line_Option(Option, Argument : Unbounded_String); + procedure Set_Command_Line_Option(Option, Argument : String); -- Transformation routines Modified: trunk/examples/ada/xt01a.adb =================================================================== --- trunk/examples/ada/xt01a.adb 2007-05-01 16:14:00 UTC (rev 7689) +++ trunk/examples/ada/xt01a.adb 2007-05-01 16:23:52 UTC (rev 7690) @@ -71,7 +71,7 @@ Set_Color(Red); Set_Environment(xmin, xmax, ymin, ymax, Not_Justified, Linear_Box_Plus); Set_Color(Yellow); - Write_Labels(TUB("(x)"), TUB("(y)"), TUB("#frPLplot Example 1 - y=x#u2")); + Write_Labels("(x)", "(y)", "#frPLplot Example 1 - y=x#u2"); -- Plot the data points Set_Color(Aquamarine); @@ -92,7 +92,7 @@ Set_Color(Red); Set_Environment(-2.0, 10.0, -0.4, 1.2, Not_Justified, Linear_Zero_Axes); Set_Color(Yellow); - Write_Labels(TUB("(x)"), TUB("sin(x)/x"), TUB("#frPLplot Example 1 - Sinc Function")); + Write_Labels("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function"); -- Fill up the arrays for i in x'Range loop @@ -122,17 +122,17 @@ -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. Set_Color(Red); - Box_Around_Viewport(TUB("bcnst"), 60.0, 2, TUB("bcnstv"), 0.2, 2); + Box_Around_Viewport("bcnst", 60.0, 2, "bcnstv", 0.2, 2); -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. -- plstyl expects a pointer! (-- Not Ada.) Set_Line_Style(mark1, space1); Set_Color(Yellow); - Box_Around_Viewport(TUB("g"), 30.0, 0, TUB("g"), 0.2, 0); + Box_Around_Viewport("g", 30.0, 0, "g", 0.2, 0); Set_Line_Style(Default_Continuous_Line); Set_Color(Green); - Write_Labels(TUB("Angle (degrees)"), TUB("sine"), TUB("#frPLplot Example 1 - Sine function")); + Write_Labels("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function"); for i in x'Range loop x(i) := 3.6 * Long_Float(i); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-05-29 19:51:04
|
Revision: 7697 http://plplot.svn.sourceforge.net/plplot/?rev=7697&view=rev Author: airwin Date: 2007-05-29 12:51:03 -0700 (Tue, 29 May 2007) Log Message: ----------- Honor USE_RPATH when installing the various PLplot libraries. Modified Paths: -------------- trunk/bindings/ada/CMakeLists.txt trunk/bindings/c++/CMakeLists.txt trunk/bindings/f77/CMakeLists.txt trunk/bindings/f95/CMakeLists.txt trunk/bindings/gnome2/lib/CMakeLists.txt trunk/bindings/gnome2/python/CMakeLists.txt trunk/bindings/java/CMakeLists.txt trunk/bindings/octave/CMakeLists.txt trunk/bindings/python/CMakeLists.txt trunk/bindings/tcl/CMakeLists.txt trunk/bindings/tk/CMakeLists.txt trunk/bindings/wxwidgets/CMakeLists.txt trunk/drivers/CMakeLists.txt trunk/src/CMakeLists.txt trunk/utils/CMakeLists.txt Modified: trunk/bindings/ada/CMakeLists.txt =================================================================== --- trunk/bindings/ada/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/ada/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -33,14 +33,23 @@ plplot${LIB_TAG} ${GNAT_LIB} ) - get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) - set_target_properties(plplotada${LIB_TAG} - PROPERTIES - SOVERSION ${plplotada_SOVERSION} - VERSION ${plplotada_VERSION} - INSTALL_RPATH "${LIB_INSTALL_RPATH}" - INSTALL_NAME_DIR "${LIB_DIR}" - ) + if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotada${LIB_TAG} + PROPERTIES + SOVERSION ${plplotada_SOVERSION} + VERSION ${plplotada_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) + else(USE_RPATH) + set_target_properties(plplotada${LIB_TAG} + PROPERTIES + SOVERSION ${plplotada_SOVERSION} + VERSION ${plplotada_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) + endif(USE_RPATH) # The commands below have been tested to work fine for the shared libraries, # but comment this out until we can decide on an install location for Modified: trunk/bindings/c++/CMakeLists.txt =================================================================== --- trunk/bindings/c++/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/c++/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -45,15 +45,23 @@ target_link_libraries(plplotcxx${LIB_TAG} plplot${LIB_TAG}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plplotcxx${LIB_TAG} -PROPERTIES -SOVERSION ${plplotcxx_SOVERSION} -VERSION ${plplotcxx_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) - +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotcxx${LIB_TAG} + PROPERTIES + SOVERSION ${plplotcxx_SOVERSION} + VERSION ${plplotcxx_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotcxx${LIB_TAG} + PROPERTIES + SOVERSION ${plplotcxx_SOVERSION} + VERSION ${plplotcxx_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) # Install library in lib/ install(TARGETS plplotcxx${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} Modified: trunk/bindings/f77/CMakeLists.txt =================================================================== --- trunk/bindings/f77/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/f77/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -86,15 +86,25 @@ target_link_libraries(plplotf77c${LIB_TAG} plplot${LIB_TAG}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plplotf77c${LIB_TAG} -PROPERTIES -SOVERSION ${plplotf77_SOVERSION} -VERSION ${plplotf77_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotf77c${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf77_SOVERSION} + VERSION ${plplotf77_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotf77c${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf77_SOVERSION} + VERSION ${plplotf77_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) + install(TARGETS plplotf77c${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR} @@ -112,13 +122,22 @@ target_link_libraries(plplotf77${LIB_TAG} plplotf77c${LIB_TAG}) -set_target_properties(plplotf77${LIB_TAG} -PROPERTIES -SOVERSION ${plplotf77_SOVERSION} -VERSION ${plplotf77_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + set_target_properties(plplotf77${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf77_SOVERSION} + VERSION ${plplotf77_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotf77${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf77_SOVERSION} + VERSION ${plplotf77_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS plplotf77${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} Modified: trunk/bindings/f95/CMakeLists.txt =================================================================== --- trunk/bindings/f95/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/f95/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -55,14 +55,23 @@ target_link_libraries(plplotf95c${LIB_TAG} plplot${LIB_TAG}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plplotf95c${LIB_TAG} -PROPERTIES -SOVERSION ${plplotf95_SOVERSION} -VERSION ${plplotf95_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotf95c${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf95_SOVERSION} + VERSION ${plplotf95_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotf95c${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf95_SOVERSION} + VERSION ${plplotf95_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS plplotf95c${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} @@ -93,13 +102,22 @@ target_link_libraries(plplotf95${LIB_TAG} plplotf95c${LIB_TAG}) -set_target_properties(plplotf95${LIB_TAG} -PROPERTIES -SOVERSION ${plplotf95_SOVERSION} -VERSION ${plplotf95_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + set_target_properties(plplotf95${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf95_SOVERSION} + VERSION ${plplotf95_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotf95${LIB_TAG} + PROPERTIES + SOVERSION ${plplotf95_SOVERSION} + VERSION ${plplotf95_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS plplotf95${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} Modified: trunk/bindings/gnome2/lib/CMakeLists.txt =================================================================== --- trunk/bindings/gnome2/lib/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/gnome2/lib/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -46,14 +46,24 @@ ${gcw_LINK_FLAGS} ) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plplotgnome2${LIB_TAG} -PROPERTIES -SOVERSION ${plplotgnome2_SOVERSION} -VERSION ${plplotgnome2_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotgnome2${LIB_TAG} + PROPERTIES + SOVERSION ${plplotgnome2_SOVERSION} + VERSION ${plplotgnome2_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplotgnome2${LIB_TAG} + PROPERTIES + SOVERSION ${plplotgnome2_SOVERSION} + VERSION ${plplotgnome2_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) + install(TARGETS plplotgnome2${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR} Modified: trunk/bindings/gnome2/python/CMakeLists.txt =================================================================== --- trunk/bindings/gnome2/python/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/gnome2/python/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -116,13 +116,21 @@ ${PYGCW_LIBS} ) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties( -gcwmodule -PROPERTIES -PREFIX "" -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties( + gcwmodule + PROPERTIES + PREFIX "" + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +else(USE_RPATH) + set_target_properties( + gcwmodule + PROPERTIES + PREFIX "" + ) +endif(USE_RPATH) install( TARGETS gcwmodule @@ -142,12 +150,20 @@ ${PYGCW_LIBS} ) -set_target_properties( -cplplotcanvasmodule -PROPERTIES -PREFIX "" -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) +if(USE_RPATH) + set_target_properties( + cplplotcanvasmodule + PROPERTIES + PREFIX "" + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +else(USE_RPATH) + set_target_properties( + cplplotcanvasmodule + PROPERTIES + PREFIX "" + ) +endif(USE_RPATH) install( TARGETS cplplotcanvasmodule Modified: trunk/bindings/java/CMakeLists.txt =================================================================== --- trunk/bindings/java/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/java/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -96,13 +96,23 @@ # Set up swig + c wrapper swig_add_module( plplotjavac_wrap java plplotjavac.i ) swig_link_libraries( plplotjavac_wrap plplot${LIB_TAG} ) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties( -plplotjavac_wrap -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${JAVAWRAPPER_HARDDIR}" -) + +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties( + plplotjavac_wrap + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${JAVAWRAPPER_HARDDIR}" + ) +else(USE_RPATH) + set_target_properties( + plplotjavac_wrap + PROPERTIES + INSTALL_NAME_DIR "${JAVAWRAPPER_HARDDIR}" + ) +endif(USE_RPATH) + install(TARGETS plplotjavac_wrap LIBRARY DESTINATION ${JAVAWRAPPER_HARDDIR}) foreach( srcfile ${JAVA_FILES_FULL} ) Modified: trunk/bindings/octave/CMakeLists.txt =================================================================== --- trunk/bindings/octave/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/octave/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -142,8 +142,6 @@ ) include_directories(${octave_interface_INCLUDE_PATHS}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) - add_library(plplot_octave MODULE ${CMAKE_CURRENT_BINARY_DIR}/plplot_octave.cc) target_link_libraries( plplot_octave @@ -151,19 +149,31 @@ "${OCTAVE_LIBRARIES}" "${OCTINTERP_LIBRARIES}" ) -# (Reasonable) assumption here is that OCTAVE_LIBRARIES and -# OCTINTERP_LIBRARIES have the same path. -get_filename_component(OCTAVE_INSTALL_RPATH "${OCTAVE_LIBRARIES}" PATH) -set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${OCTAVE_INSTALL_RPATH}) -set_target_properties( -plplot_octave -PROPERTIES -PREFIX "" -SUFFIX ".oct" -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${OCTAVE_OCT_DIR}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + # (Reasonable) assumption here is that OCTAVE_LIBRARIES and + # OCTINTERP_LIBRARIES have the same path. + get_filename_component(OCTAVE_INSTALL_RPATH "${OCTAVE_LIBRARIES}" PATH) + set(LIB_INSTALL_RPATH ${LIB_INSTALL_RPATH} ${OCTAVE_INSTALL_RPATH}) + set_target_properties( + plplot_octave + PROPERTIES + PREFIX "" + SUFFIX ".oct" + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${OCTAVE_OCT_DIR}" + ) +else(USE_RPATH) + set_target_properties( + plplot_octave + PROPERTIES + PREFIX "" + SUFFIX ".oct" + INSTALL_NAME_DIR "${OCTAVE_OCT_DIR}" + ) +endif(USE_RPATH) + # Have to be specific about permissions for some reason (probably oct suffix). set(PERM_MODULES OWNER_READ Modified: trunk/bindings/python/CMakeLists.txt =================================================================== --- trunk/bindings/python/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/python/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -42,22 +42,32 @@ swig_link_libraries(plplotcmodule plplot${LIB_TAG} ${PYTHON_LIBRARIES}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties( -_plplotcmodule -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties( + _plplotcmodule + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +endif(USE_RPATH) add_library(plplot_widgetmodule MODULE plplot_widgetmodule.c) set_target_properties(plplot_widgetmodule PROPERTIES PREFIX "") target_link_libraries(plplot_widgetmodule plplot${LIB_TAG} ${PYTHON_LIBRARIES}) -set_target_properties( -plplot_widgetmodule -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${PYTHON_INSTDIR}" -) +if(USE_RPATH) + set_target_properties( + plplot_widgetmodule + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${PYTHON_INSTDIR}" + ) +else(USE_RPATH) + set_target_properties( + plplot_widgetmodule + PROPERTIES + INSTALL_NAME_DIR "${PYTHON_INSTDIR}" + ) +endif(USE_RPATH) install( TARGETS plplot_widgetmodule _plplotcmodule Modified: trunk/bindings/tcl/CMakeLists.txt =================================================================== --- trunk/bindings/tcl/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/tcl/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -51,14 +51,23 @@ add_library(tclmatrix${LIB_TAG} ${tclmatrix${LIB_TAG}_LIB_SRCS}) target_link_libraries(tclmatrix${LIB_TAG} ${TCL_LIBRARY}) -set(LIB_INSTALL_RPATH ${LIB_DIR}) -set_target_properties(tclmatrix${LIB_TAG} -PROPERTIES -SOVERSION ${tclmatrix_SOVERSION} -VERSION ${tclmatrix_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + set(LIB_INSTALL_RPATH ${LIB_DIR}) + set_target_properties(tclmatrix${LIB_TAG} + PROPERTIES + SOVERSION ${tclmatrix_SOVERSION} + VERSION ${tclmatrix_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(tclmatrix${LIB_TAG} + PROPERTIES + SOVERSION ${tclmatrix_SOVERSION} + VERSION ${tclmatrix_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS tclmatrix${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} @@ -195,14 +204,23 @@ ${plplottcltk${LIB_TAG}_link_libraries} ) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plplottcltk${LIB_TAG} -PROPERTIES -SOVERSION ${plplottcltk_SOVERSION} -VERSION ${plplottcltk_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplottcltk${LIB_TAG} + PROPERTIES + SOVERSION ${plplottcltk_SOVERSION} + VERSION ${plplottcltk_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties(plplottcltk${LIB_TAG} + PROPERTIES + SOVERSION ${plplottcltk_SOVERSION} + VERSION ${plplottcltk_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS plplottcltk${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} Modified: trunk/bindings/tk/CMakeLists.txt =================================================================== --- trunk/bindings/tk/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/tk/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -75,11 +75,13 @@ add_executable(plserver plserver.c) target_link_libraries(plserver plplot${LIB_TAG} plplottcltk${LIB_TAG}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plserver -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plserver + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +endif(USE_RPATH) install(TARGETS plserver DESTINATION ${BIN_DIR}) Modified: trunk/bindings/wxwidgets/CMakeLists.txt =================================================================== --- trunk/bindings/wxwidgets/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/bindings/wxwidgets/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -58,14 +58,23 @@ target_link_libraries(plplotwxwidgets${LIB_TAG} plplotcxx${LIB_TAG} ${wxWidgets_LIBRARIES}) - get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) - set_target_properties(plplotwxwidgets${LIB_TAG} + if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plplotwxwidgets${LIB_TAG} PROPERTIES SOVERSION ${plplotwxwidgets_SOVERSION} VERSION ${plplotwxwidgets_VERSION} INSTALL_RPATH "${LIB_INSTALL_RPATH}" INSTALL_NAME_DIR "${LIB_DIR}" - ) + ) + else(USE_RPATH) + set_target_properties(plplotwxwidgets${LIB_TAG} + PROPERTIES + SOVERSION ${plplotwxwidgets_SOVERSION} + VERSION ${plplotwxwidgets_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) + endif(USE_RPATH) # Install library in lib/ install(TARGETS plplotwxwidgets${LIB_TAG} Modified: trunk/drivers/CMakeLists.txt =================================================================== --- trunk/drivers/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/drivers/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -86,14 +86,23 @@ # should always be ".so" regardless of platform so that libltdl can # always find the result. #message("${SOURCE_ROOT_NAME}_RPATH = ${${SOURCE_ROOT_NAME}_RPATH}") - set_target_properties( - ${SOURCE_ROOT_NAME} - PROPERTIES - PREFIX "" - SUFFIX ".so" - INSTALL_RPATH - "${${SOURCE_ROOT_NAME}_RPATH}" - ) + if(USE_RPATH) + set_target_properties( + ${SOURCE_ROOT_NAME} + PROPERTIES + PREFIX "" + SUFFIX ".so" + INSTALL_RPATH + "${${SOURCE_ROOT_NAME}_RPATH}" + ) + else(USE_RPATH) + set_target_properties( + ${SOURCE_ROOT_NAME} + PROPERTIES + PREFIX "" + SUFFIX ".so" + ) + endif(USE_RPATH) # This is a clumsy way to do it since we have to put in dependencies on # get-drv-info so it will always be built first, but the better # alternative below does not work (probably a bug in 2.4.2). Modified: trunk/src/CMakeLists.txt =================================================================== --- trunk/src/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/src/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -218,14 +218,24 @@ ${libplplot${LIB_TAG}_LINK_LIBRARIES} ) -set_target_properties( -plplot${LIB_TAG} -PROPERTIES -SOVERSION ${plplot_SOVERSION} -VERSION ${plplot_VERSION} -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -INSTALL_NAME_DIR "${LIB_DIR}" -) +if(USE_RPATH) + set_target_properties( + plplot${LIB_TAG} + PROPERTIES + SOVERSION ${plplot_SOVERSION} + VERSION ${plplot_VERSION} + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + INSTALL_NAME_DIR "${LIB_DIR}" + ) +else(USE_RPATH) + set_target_properties( + plplot${LIB_TAG} + PROPERTIES + SOVERSION ${plplot_SOVERSION} + VERSION ${plplot_VERSION} + INSTALL_NAME_DIR "${LIB_DIR}" + ) +endif(USE_RPATH) install(TARGETS plplot${LIB_TAG} ARCHIVE DESTINATION ${LIB_DIR} Modified: trunk/utils/CMakeLists.txt =================================================================== --- trunk/utils/CMakeLists.txt 2007-05-25 14:42:47 UTC (rev 7696) +++ trunk/utils/CMakeLists.txt 2007-05-29 19:51:03 UTC (rev 7697) @@ -34,12 +34,13 @@ target_link_libraries(plrender plplot${LIB_TAG}) -get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) -set_target_properties(plrender -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) - +if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plrender + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +endif(USE_RPATH) install(TARGETS plrender DESTINATION ${BIN_DIR}) add_executable(pltek pltek.c) @@ -51,10 +52,12 @@ target_link_libraries(pltek plplot${LIB_TAG}) -set_target_properties(pltek -PROPERTIES -INSTALL_RPATH "${LIB_INSTALL_RPATH}" -) +if(USE_RPATH) + set_target_properties(pltek + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) +endif(USE_RPATH) install(TARGETS pltek DESTINATION ${BIN_DIR}) @@ -68,10 +71,12 @@ target_link_libraries(pltcl plplot${LIB_TAG} plplottcltk${LIB_TAG}) - set_target_properties(pltcl - PROPERTIES - INSTALL_RPATH "${LIB_INSTALL_RPATH}" - ) + if(USE_RPATH) + set_target_properties(pltcl + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) + endif(USE_RPATH) install(TARGETS pltcl DESTINATION ${BIN_DIR}) endif(ENABLE_tcl) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-06-02 02:34:41
|
Revision: 7702 http://plplot.svn.sourceforge.net/plplot/?rev=7702&view=rev Author: airwin Date: 2007-06-01 19:34:41 -0700 (Fri, 01 Jun 2007) Log Message: ----------- Build new xt12a.adb example and include it in ctest. Modified Paths: -------------- trunk/examples/ada/CMakeLists.txt trunk/test/test_ada.sh.in Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2007-05-31 21:23:01 UTC (rev 7701) +++ trunk/examples/ada/CMakeLists.txt 2007-06-02 02:34:41 UTC (rev 7702) @@ -23,6 +23,7 @@ "01" "10" "12" +"t12" ) if(BUILD_TEST) Modified: trunk/test/test_ada.sh.in =================================================================== --- trunk/test/test_ada.sh.in 2007-05-31 21:23:01 UTC (rev 7701) +++ trunk/test/test_ada.sh.in 2007-06-02 02:34:41 UTC (rev 7702) @@ -27,6 +27,6 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in t01 01 10 12; do +for index in t01 01 10 12 t12; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options done This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-06-02 02:37:17
|
Revision: 7703 http://plplot.svn.sourceforge.net/plplot/?rev=7703&view=rev Author: airwin Date: 2007-06-01 19:37:18 -0700 (Fri, 01 Jun 2007) Log Message: ----------- AWI for Jerry Bauck: Added new Ada example file xt12a.adb, a thick binding example. Changed x12a.adb to remove sprintf and changed array declarations to be more Ada-like. Small number of comment and white-space changes in x12a.adb and other Ada files. Modified Paths: -------------- trunk/bindings/ada/plplot.ads trunk/bindings/ada/plplotthin.ads trunk/examples/ada/x01a.adb trunk/examples/ada/x10a.adb trunk/examples/ada/x12a.adb trunk/examples/ada/xt01a.adb Modified: trunk/bindings/ada/plplot.ads =================================================================== --- trunk/bindings/ada/plplot.ads 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/bindings/ada/plplot.ads 2007-06-02 02:37:18 UTC (rev 7703) @@ -870,11 +870,11 @@ -- Prints out "text" at specified position relative to viewport -- plmtex procedure Write_Text_Viewport - (Side : String; - Position_From_Edge : Long_Float; + (Side : String; + Position_From_Edge : Long_Float; Position_Along_Edge : Long_Float; - Justification : Long_Float_0_1_Type; - The_Text : String); + Justification : Long_Float_0_1_Type; + The_Text : String); -- Plots a 3-d representation of the function z[x][y]. Modified: trunk/bindings/ada/plplotthin.ads =================================================================== --- trunk/bindings/ada/plplotthin.ads 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/bindings/ada/plplotthin.ads 2007-06-02 02:37:18 UTC (rev 7703) @@ -118,7 +118,7 @@ -- Short name for To_Unbounded_String function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; - -- Convenient string of length 80 (Is this used?) + -- Convenient string of length 80 package Bounded_String_80 is new Ada.Strings.Bounded.Generic_Bounded_Length(80); subtype String_80 is Bounded_String_80.Bounded_String; Modified: trunk/examples/ada/x01a.adb =================================================================== --- trunk/examples/ada/x01a.adb 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/examples/ada/x01a.adb 2007-06-02 02:37:18 UTC (rev 7703) @@ -1,6 +1,6 @@ -- $Id$ --- Simple line plot and multiple windows demo. +-- Simple line plot and multiple windows demo -- Copyright (C) 2006 Jerry Bauck Modified: trunk/examples/ada/x10a.adb =================================================================== --- trunk/examples/ada/x10a.adb 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/examples/ada/x10a.adb 2007-06-02 02:37:18 UTC (rev 7703) @@ -1,6 +1,6 @@ -- $Id$ --- Window positioning demo. +-- Window positioning demo -- Copyright (C) 2007 Alan W. Irwin Modified: trunk/examples/ada/x12a.adb =================================================================== --- trunk/examples/ada/x12a.adb 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/examples/ada/x12a.adb 2007-06-02 02:37:18 UTC (rev 7703) @@ -1,8 +1,8 @@ -- $Id$ --- Simple line plot and multiple windows demo. +-- Bar chart demo --- Copyright (C) 2007 Werner Smekal +-- Copyright (C) 2006 Jerry Bauck -- This file is part of PLplot. @@ -26,77 +26,83 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, Interfaces.C, - PlplotThin; + PLplotThin, + PLplot; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, Interfaces.C, - PlplotThin; + PLplotThin, + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; +------------------------------------------------------------------------------ +-- Does a simple bar chart, using color fill. If color fill is +-- unavailable, pattern fill is used instead (automatic). +------------------------------------------------------------------------------ + procedure x12a is - string : char_array(0 .. 20); - y0 : PL_Float_Array (0 .. 9); - procedure Sprintf( buffer : out char_array; format : in char_array; variable: in PLFLT ); - pragma Import(C, Sprintf, "sprintf" ); - - procedure plfbox(x0 : PLFLT; y0 : PLFLT) is - x, y : PL_Float_Array (0 .. 3); + y0 : Real_Vector (0 .. 9); + + procedure plfbox (x0, y0 : Long_Float) is + x, y : Real_Vector (0 ..3); begin x(0) := x0; y(0) := 0.0; + x(1) := x0; y(1) := y0; + x(2) := x0 + 1.0; y(2) := y0; + x(3) := x0 + 1.0; y(3) := 0.0; - plfill(4, x, y); - plcol0(1); - pllsty(1); - plline(4, x, y); - end; - begin - -- plplot initialization - - plparseopts(PL_PARSE_FULL); + Fill_Polygon(x, y); + Set_Color(Red); + Select_Line_Style(1); + Draw_Curve(x, y); + end plfbox; + +begin + -- Parse and process command line arguments. + plparseopts(PL_PARSE_FULL); - plinit; - - pladv(0); - plvsta; - plwind(1980.0, 1990.0, 0.0, 35.0); - plbox(To_C("bc"), 1.0, 0, To_C("bcnv"), 10.0, 0); - plcol0(2); - pllab(To_C("Year"), To_C("Widget Sales (millions)"), To_C("#frPLplot Example 12")); - - y0(0) := 5.0; - y0(1) := 15.0; - y0(2) := 12.0; - y0(3) := 24.0; - y0(4) := 28.0; - y0(5) := 30.0; - y0(6) := 20.0; - y0(7) := 8.0; - y0(8) := 12.0; - y0(9) := 3.0; + -- Initialize plplot. + plinit; - for i in y0'Range loop - plcol0(i + 1); - plpsty(0); - plfbox(Long_Float(1980 + i), y0(i)); - sprintf(string, To_C("%.0f"), y0(i)); - plptex(Long_Float(1980 + i) + 0.5, (y0(i) + 1.0), 1.0, 0.0, 0.5, string); - sprintf(string, To_C("%.0f"), Long_Float(1980 + i)); - plmtex(To_C("b"), 1.0, (Long_Float(i + 1) * 0.1 - 0.05), 0.5, string); - end loop; + pladv(0); + plvsta; + plwind(1980.0, 1990.0, 0.0, 35.0); + plbox(To_C("bc"), 1.0, 0, To_C("bcnv"), 10.0, 0); + plcol0(2); + pllab(To_C("Year"), To_C("Widget Sales (millions)"), To_C("#frPLplot Example 12")); - -- Don't forget to call plend() to finish off! - plend; + y0(0) := 5.0; + y0(1) := 15.0; + y0(2) := 12.0; + y0(3) := 24.0; + y0(4) := 28.0; + y0(5) := 30.0; + y0(6) := 20.0; + y0(7) := 8.0; + y0(8) := 12.0; + y0(9) := 3.0; + + for i in y0'Range loop + plcol0(i + 1); + plpsty(0); + plfbox(1980.0 + Long_Float(i), y0(i)); + plptex(Long_Float(1980 + i) + 0.5, (y0(i) + 1.0), 1.0, 0.0, 0.5, To_C(Integer'image(Integer(y0(i))))); + plmtex(To_C("b"), 1.0, (Long_Float(i + 1) * 0.1 - 0.05), 0.5, To_C(Integer'image((1980 + i)))); + end loop; + + -- Don't forget to call plend() to finish off! + plend; end x12a; Modified: trunk/examples/ada/xt01a.adb =================================================================== --- trunk/examples/ada/xt01a.adb 2007-06-02 02:34:41 UTC (rev 7702) +++ trunk/examples/ada/xt01a.adb 2007-06-02 02:37:18 UTC (rev 7703) @@ -1,6 +1,6 @@ -- $Id$ --- Simple line plot and multiple windows demo. +-- Simple line plot and multiple windows demo -- Copyright (C) 2006 Jerry Bauck This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hba...@us...> - 2007-06-03 00:37:38
|
Revision: 7705 http://plplot.svn.sourceforge.net/plplot/?rev=7705&view=rev Author: hbabcock Date: 2007-06-02 17:37:37 -0700 (Sat, 02 Jun 2007) Log Message: ----------- Moved drivers/xwinttf.c to drivers/cairo.c and updated the build logic to reflect this change in the file name. Modified Paths: -------------- trunk/cmake/modules/drivers-init.cmake trunk/cmake/modules/drivers.cmake Added Paths: ----------- trunk/cmake/modules/cairo.cmake trunk/drivers/cairo.c Copied: trunk/cmake/modules/cairo.cmake (from rev 7704, trunk/cmake/modules/xwinttf.cmake) =================================================================== --- trunk/cmake/modules/cairo.cmake (rev 0) +++ trunk/cmake/modules/cairo.cmake 2007-06-03 00:37:37 UTC (rev 7705) @@ -0,0 +1,73 @@ +# cmake/modules/psttf.cmake +# +# Copyright (C) 2007 Hazen Babcock +# +# This file is part of PLplot. +# +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; version 2 of the License. +# +# PLplot 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 Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with the file PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# Configuration for the psttf device driver (supporting the psttf and +# psttfc devices). +# +# The following variables are set / modified +# +# PLD_xwinttf - ON means the xwintff device is enabled. +# cairo_COMPILE_FLAGS - Blank-delimited COMPILE_FLAGS required to +# compile cairo device drivers. +# cairo_LINK_FLAGS - LINK_FLAGS (string) for dynamic cairo device drivers. +# DRIVERS_LINK_FLAGS - list of device LINK_FLAGS and TARGETS for case +# when ENABLE_DYNDRIVERS OFF. + +# Include file searches use FindPath. To add extra search directories +# set the environment variable CMAKE_INCLUDE_PATH. +# Library searches use FindLibrary. To add extra search directories +# set the environment variable CMAKE_LIBRARY_PATH. +# See cmake documentation for further details. + +# Look for xwinttf headers and libraries with pkg-config +if(PLD_xwinttf) + if(NOT PKG_CONFIG_EXECUTABLE) + message(STATUS + "WARNING: pkg-config not found. Setting PLD_xwinttf to OFF." + ) + set(PLD_xwinttf OFF CACHE BOOL "Enable xwinttf device" FORCE) + endif(NOT PKG_CONFIG_EXECUTABLE) +endif(PLD_xwinttf) + +if(PLD_xwinttf) + pkg_check_pkgconfig("pangocairo;pango;cairo" includedir libdir linkflags cflags _XWINTTF) + if(linkflags) + # Blank-delimited required. + string(REGEX REPLACE ";" " " cairo_COMPILE_FLAGS "${cflags} -I${X11_INCLUDE_DIR}") + set(cairo_LINK_FLAGS "${linkflags} -L${X11_LIBRARY_DIR} ${X11_LIBRARIES}") + message("cairo_COMPILE_FLAGS = ${cairo_COMPILE_FLAGS}") + + set(DRIVERS_LINK_FLAGS + ${DRIVERS_LINK_FLAGS} + ${cairo_LINK_FLAGS} + ${cairo_TARGETS} + ) + else(linkflags) + #message("includedir = ${includedir}") + #message("libdir = ${libdir}") + #message("linkflags = ${linkflags}") + #message("cflags = ${cflags}") + message(STATUS + "WARNING: pango or cairo not found with pkg-config.\n" + " Setting PLD_xwintff to OFF. Please install all of these packages\n" + " and/or set the environment variable PKG_CONFIG_PATH appropriately." + ) + set(PLD_xwinttf OFF CACHE BOOL "Enable xwinttf device" FORCE) + endif(linkflags) +endif(PLD_xwinttf) Modified: trunk/cmake/modules/drivers-init.cmake =================================================================== --- trunk/cmake/modules/drivers-init.cmake 2007-06-02 08:35:38 UTC (rev 7704) +++ trunk/cmake/modules/drivers-init.cmake 2007-06-03 00:37:37 UTC (rev 7705) @@ -105,7 +105,7 @@ "wxwidgets:wxwidgets:ON" "xfig:xfig:ON" "xwin:xwin:ON" -"xwinttf:xwinttf:OFF" +"xwinttf:cairo:OFF" ) set(PRESET_DEFAULT OFF) Modified: trunk/cmake/modules/drivers.cmake =================================================================== --- trunk/cmake/modules/drivers.cmake 2007-06-02 08:35:38 UTC (rev 7704) +++ trunk/cmake/modules/drivers.cmake 2007-06-03 00:37:37 UTC (rev 7705) @@ -67,6 +67,7 @@ # Find *_COMPILE_FLAGS and *_LINK_FLAGS resources for device drivers that need them, # and set appropriate PLD_devicename to OFF if the required resources are # not available. +include(cairo) include(cgm) include(gcw) include(gd) @@ -81,7 +82,6 @@ include(aqt) include(wxwidgets) include(pdf) -include(xwinttf) # Finalize device options. include(drivers-finish) Copied: trunk/drivers/cairo.c (from rev 7694, trunk/drivers/xwinttf.c) =================================================================== --- trunk/drivers/cairo.c (rev 0) +++ trunk/drivers/cairo.c 2007-06-03 00:37:37 UTC (rev 7705) @@ -0,0 +1,703 @@ +/* June 2, 2007 + + Graphics drivers that are based on the Cairo / Pango Libraries. + + Copyright (C) 2007 Hazen Babcock + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PLplot 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 Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +//--------------------------------------------- +// Header files, defines and local variables +//--------------------------------------------- + +#include <stdio.h> +#include <string.h> +#include <math.h> + +#include <cairo.h> +#include <cairo-xlib.h> +#include <pango/pangocairo.h> + +#include <X11/X.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/cursorfont.h> + + +/* PLplot header files */ + +#include "plplotP.h" +#include "drivers.h" + +//--------------------------------------------- +// Constants & globel (to this file) variables +//--------------------------------------------- + +#define MAX_STRING_LEN 500 +#define MAX_MARKUP_LEN MAX_STRING_LEN * 10 + +/* xwintff specific constants and variables */ + +#define MAXPAGES 50 +#define DPI 72 +#define XWINTTF_DEFAULT_X 720 +#define XWINTTF_DEFAULT_Y 540 + +char* plD_DEVICE_INFO_cairo = "xwinttf:TrueType X Windows Driver:1:cairo:59:xwinttf"; + +static int currentPage = -1; +static int XScreen; +static Display *XDisplay = NULL; +static Window rootWindow ; +static Window XWindow[MAXPAGES]; + +static int windowXSize = XWINTTF_DEFAULT_X; +static int windowYSize = XWINTTF_DEFAULT_Y; + +static cairo_surface_t *cairoSurface[MAXPAGES]; +static cairo_t *cairoContext[MAXPAGES]; + +//----------------------------------------------- +// Font style and weight lookup tables (copied +// from the psttf driver). +//----------------------------------------------- + +#define NPANGOLOOKUP 5 + +const char *defaultFamilyLookup[NPANGOLOOKUP] = { + "Sans", + "Serif", + "Monospace", + "Sans", + "Sans" +}; + +const char *envFamilyLookup[NPANGOLOOKUP] = { + "PLPLOT_FREETYPE_SANS_FAMILY", + "PLPLOT_FREETYPE_SERIF_FAMILY", + "PLPLOT_FREETYPE_MONO_FAMILY", + "PLPLOT_FREETYPE_SCRIPT_FAMILY", + "PLPLOT_FREETYPE_SYMBOL_FAMILY" +}; + +char familyLookup[NPANGOLOOKUP][1024]; + +const char *weightLookup[2] = { + "normal", + "bold" +}; + +const char *styleLookup[3] = { + "normal", + "italic", + "oblique" +}; + +//----------------------------------------------- +// function declarations +//----------------------------------------------- + +/* String processing */ + +static void proc_str(PLStream *, EscText *); +static char *ucs4_to_pango_markup_format(PLUNICODE *, int, float); +static void open_span_tag(char *, PLUNICODE, float, int); +static void close_span_tag(char *, int); + +/* Graphics */ + +static void get_cursor(PLStream *, PLGraphicsIn *); +static void set_current_context(PLStream *); +static void poly_line(PLStream *, short *, short *, PLINT); + +/* PLplot interface functions */ + +void plD_dispatch_init_xwinttf (PLDispatchTable *pdt); +void plD_init_xwinttf (PLStream *); +void plD_line_xwinttf (PLStream *, short, short, short, short); +void plD_polyline_xwinttf (PLStream *, short *, short *, PLINT); +void plD_eop_xwinttf (PLStream *); +void plD_bop_xwinttf (PLStream *); +void plD_tidy_xwinttf (PLStream *); +void plD_state_xwinttf (PLStream *, PLINT); +void plD_esc_xwinttf (PLStream *, PLINT, void *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +void plD_dispatch_init_xwinttf(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "TrueType X Windows Driver"; + pdt->pl_DevName = "xwinttf"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 59; + pdt->pl_init = (plD_init_fp) plD_init_xwinttf; + pdt->pl_line = (plD_line_fp) plD_line_xwinttf; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_xwinttf; + pdt->pl_eop = (plD_eop_fp) plD_eop_xwinttf; + pdt->pl_bop = (plD_bop_fp) plD_bop_xwinttf; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_xwinttf; + pdt->pl_state = (plD_state_fp) plD_state_xwinttf; + pdt->pl_esc = (plD_esc_fp) plD_esc_xwinttf; +} + +//--------------------------------------------------------------------- +// xwinttf_init() +// +// Initialize device +//---------------------------------------------------------------------- + +void plD_init_xwinttf(PLStream *pls) +{ + int i; + char *a; + + pls->termin = 1; /* Interactive device */ + pls->dev_flush = 1; /* Handles flushes */ + pls->color = 1; /* Supports color */ + pls->dev_text = 1; /* Handles text */ + pls->dev_unicode = 1; /* Wants unicode text */ + pls->page = 0; + pls->dev_fill0 = 1; /* Supports hardware solid fills */ + + plP_setpxl(DPI/25.4, DPI/25.4); + + if (pls->xlength <= 0 || pls->ylength <= 0){ + plP_setphy((PLINT) 0, (PLINT) XWINTTF_DEFAULT_X, (PLINT) 0, XWINTTF_DEFAULT_Y); + } else { + windowXSize = pls->xlength; + windowYSize = pls->ylength; + plP_setphy((PLINT) 0, (PLINT) pls->xlength, (PLINT) 0, (PLINT) pls->ylength); + } + + XDisplay = XOpenDisplay(NULL); + if(XDisplay == NULL){ + printf("Failed to open X Windows display\n"); + // some sort of error here + } + XScreen = DefaultScreen(XDisplay); + rootWindow = RootWindow(XDisplay, XScreen); + + // Initialize font table with either enviroment variables or defaults. + // This was copied from the psttf driver. + for(i=0;i<NPANGOLOOKUP;i++){ + if((a = getenv(envFamilyLookup[i])) != NULL){ + strcpy(familyLookup[i],a); + } + else { + strcpy(familyLookup[i],defaultFamilyLookup[i]); + } + } + + // Set all cairo pointers to NULL + for(i=0;i<MAXPAGES;i++){ + cairoSurface[i] = NULL; + cairoContext[i] = NULL; + } +} + +//---------------------------------------------------------------------- +// xwinttf_bop() +// +// Set up for the next page. +//---------------------------------------------------------------------- + +void plD_bop_xwinttf(PLStream *pls) +{ + char plotTitle[40]; + cairo_matrix_t *flipVertical; + Visual *defaultVisual; + XGCValues values; + + // Increment the page number. + currentPage++; + if(currentPage > MAXPAGES){ + currentPage = 0; + } + pls->page++; + + // Initialize plot title + sprintf(plotTitle, "PLplot (%d)", currentPage); + + // Create a X Window. + XWindow[currentPage] = XCreateSimpleWindow(XDisplay, rootWindow, 0, 0, windowXSize, windowYSize, + 1, BlackPixel(XDisplay, XScreen), BlackPixel(XDisplay, XScreen)); + XStoreName(XDisplay, XWindow[currentPage], plotTitle); + XSelectInput(XDisplay, XWindow[currentPage], NoEventMask); + XMapWindow(XDisplay, XWindow[currentPage]); + + // Create an cairo surface & context that are associated with the window. + defaultVisual = DefaultVisual(XDisplay, 0); + cairoSurface[currentPage] = cairo_xlib_surface_create(XDisplay, XWindow[currentPage], defaultVisual, windowXSize, windowYSize); + cairoContext[currentPage] = cairo_create(cairoSurface[currentPage]); + + // Fill in the window with the background color. + cairo_rectangle(cairoContext[currentPage], 0.0, 0.0, windowXSize, windowYSize); + cairo_set_source_rgb(cairoContext[currentPage], + (double)pls->cmap0[0].r/255.0, + (double)pls->cmap0[0].g/255.0, + (double)pls->cmap0[0].b/255.0); + cairo_fill(cairoContext[currentPage]); + + // Invert the coordinate system so the graphs are drawn right side up. + flipVertical = (cairo_matrix_t *) malloc (sizeof(cairo_matrix_t)); + cairo_matrix_init(flipVertical, 1.0, 0.0, 0.0, -1.0, 0.0, windowYSize); + cairo_set_matrix(cairoContext[currentPage], flipVertical); + free(flipVertical); +} + +//--------------------------------------------------------------------- +// xwinttf_line() +// +// Draw a line in the current color from (x1,y1) to (x2,y2). +//---------------------------------------------------------------------- + +void plD_line_xwinttf(PLStream *pls, short x1a, short y1a, short x2a, short y2a) +{ + set_current_context(pls); + + cairo_move_to(cairoContext[currentPage], (double) x1a, (double) y1a); + cairo_line_to(cairoContext[currentPage], (double) x2a, (double) y2a); + cairo_stroke(cairoContext[currentPage]); +} + +//--------------------------------------------------------------------- +// xwinttf_polyline() +// +// Draw a polyline in the current color. +//--------------------------------------------------------------------- + +void plD_polyline_xwinttf(PLStream *pls, short *xa, short *ya, PLINT npts) +{ + poly_line(pls, xa, ya, npts); + cairo_stroke(cairoContext[currentPage]); +} + +//--------------------------------------------------------------------- +// xwinttf_eop() +// +// End of page +//--------------------------------------------------------------------- + +void plD_eop_xwinttf(PLStream *pls) +{ + XFlush(XDisplay); +} + +//--------------------------------------------------------------------- +// xwinttf_tidy() +// +// Close graphics file or otherwise clean up. +//--------------------------------------------------------------------- + +void plD_tidy_xwinttf(PLStream *pls) +{ + int i; + + printf("Key <Return> to finish\n"); + getc(stdin); + + for(i=0;i<MAXPAGES;i++){ + if(cairoContext[i] != NULL){ + cairo_destroy(cairoContext[i]); + cairo_surface_destroy(cairoSurface[i]); + } + } + + XCloseDisplay(XDisplay); + free(XDisplay); +} + +//--------------------------------------------------------------------- +// plD_state_xwinttf() +// +// Handle change in PLStream state (color, pen width, fill attribute, etc). +// +// Nothing is done here because these attributes are acquired from +// PLStream for each element that is drawn. +//--------------------------------------------------------------------- + +void plD_state_xwinttf(PLStream *pls, PLINT op) +{ +} + +//--------------------------------------------------------------------- +// xwinttf_esc() +// +// Escape function. +//--------------------------------------------------------------------- + +void plD_esc_xwinttf(PLStream *pls, PLINT op, void *ptr) +{ + switch(op) + { + case PLESC_FILL: // filled polygon + poly_line(pls, pls->dev_x, pls->dev_y, pls->dev_npts); + cairo_fill(cairoContext[currentPage]); + break; + case PLESC_HAS_TEXT: // render rext + proc_str(pls, (EscText *) ptr); + break; + case PLESC_FLUSH: // forced update of the window + XFlush(XDisplay); + break; + case PLESC_GETC: // get cursor position + XFlush(XDisplay); + get_cursor(pls, (PLGraphicsIn*)ptr); + break; + } +} + +//--------------------------------------------------------------------- +// proc_str() +// +// Processes strings for display. +//--------------------------------------------------------------------- + +void proc_str(PLStream *pls, EscText *args) +{ + int i; + float fontSize; + int textXExtent, textYExtent; + char *textWithPangoMarkup; + PLFLT rotation, shear, cos_rot, sin_rot, sin_shear; + cairo_matrix_t *cairoTransformMatrix; + PangoLayout *layout; + PangoFontDescription *fontDescription; + + set_current_context(pls); + + // Check that we got unicode, warning message and return if not + if(args->unicode_array_len == 0){ + printf("Non unicode string passed to xwinttf driver, ignoring\n"); + return; + } + + // Check that unicode string isn't longer then the max we allow + if(args->unicode_array_len >= MAX_STRING_LEN){ + printf("Sorry, the xwinttf driver only handles strings of length < %d\n", MAX_STRING_LEN); + return; + } + + // Calculate the font size (in pixels) + fontSize = pls->chrht * DPI/25.4; + + // Convert the escape characters into the appropriate Pango markup + textWithPangoMarkup = ucs4_to_pango_markup_format(args->unicode_array, args->unicode_array_len, fontSize); + + // Create the Pango text layout so we can figure out how big it is + layout = pango_cairo_create_layout(cairoContext[currentPage]); + pango_layout_set_markup(layout, textWithPangoMarkup, -1); + // fontDescription = pango_font_description_from_string(fontString); + // pango_layout_set_font_description(layout, fontDescription); + pango_layout_get_pixel_size(layout, &textXExtent, &textYExtent); + + // Move to the string reference point + cairo_move_to(cairoContext[currentPage], (double) args->x, (double) args->y); + + // Save current transform matrix + cairo_save(cairoContext[currentPage]); + + // Invert the coordinate system so that the text is drawn right side up + cairoTransformMatrix = (cairo_matrix_t *) malloc (sizeof(cairo_matrix_t)); + cairo_matrix_init(cairoTransformMatrix, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0); + cairo_transform(cairoContext[currentPage], cairoTransformMatrix); + + // Extract rotation angle and shear from the PLplot tranformation matrix. + // Compute sines and cosines of the angles as an optimization. + plRotationShear(args->xform, &rotation, &shear); + cos_rot = cos(rotation); + sin_rot = sin(rotation); + sin_shear = sin(shear); + + // Apply the transform matrix + cairo_matrix_init(cairoTransformMatrix, + cos_rot, + -sin_rot, + cos_rot * sin_shear + sin_rot, + -sin_rot * sin_shear + cos_rot, + 0,0); + cairo_transform(cairoContext[currentPage], cairoTransformMatrix); + free(cairoTransformMatrix); + + // Move to the text starting point + cairo_rel_move_to(cairoContext[currentPage], + (double)(-1.0 * args->just * (double)textXExtent), + (double)(-0.5 * textYExtent)); + + // Render the text + pango_cairo_show_layout(cairoContext[currentPage], layout); + + // Restore the transform matrix to its state prior to the text transform. + cairo_restore(cairoContext[currentPage]); + + // Free the layout object and the markup string. + g_object_unref(layout); + free(textWithPangoMarkup); +} + +//--------------------------------------------------------------------- +// ucs4_to_pango_markup_format() +// +// Converts the plplot string (in ucs4) to a utf8 string that includes +// pango markup. +// +// http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html +//--------------------------------------------------------------------- + +char *ucs4_to_pango_markup_format(PLUNICODE *ucs4, int ucs4Len, float fontSize) +{ + char plplotEsc; + int i; + int upDown = 0; + PLUNICODE fci; + char utf8[5]; + char *pangoMarkupString; + + // Will this be big enough? We might have lots of markup. + pangoMarkupString = (char *) malloc (sizeof(char) * MAX_MARKUP_LEN); + for(i = 0; i < MAX_MARKUP_LEN; i++){ + pangoMarkupString[i] = 0; + } + + // Get PLplot escape character + plgesc(&plplotEsc); + + // Get the curent font and open the first span tag + plgfci(&fci); + open_span_tag(pangoMarkupString, fci, fontSize, 0); + + // Parse the string to generate the tags + i = 0; + while (i < ucs4Len){ + // Try to avoid going off the end of the string + if(strlen(pangoMarkupString) > (MAX_MARKUP_LEN - 50)){ + continue; + } + if (ucs4[i] < PL_FCI_MARK){ // not a font change + if (ucs4[i] != (PLUNICODE)plplotEsc) { // a character to display + // we have to handle "<", ">" and "&" separately since they throw off the XML + switch(ucs4[i]) + { + case 38: + strcat(pangoMarkupString, "&"); + break; + case 60: + strcat(pangoMarkupString, "<"); + break; + case 62: + strcat(pangoMarkupString, ">"); + break; + default: + ucs4_to_utf8(ucs4[i],utf8); + strcat(pangoMarkupString, utf8); + break; + } + i++; + continue; + } + i++; + if (ucs4[i] == (PLUNICODE)plplotEsc){ // a escape character to display + strcat(pangoMarkupString, utf8); + i++; + continue; + } + else { + if(ucs4[i] == (PLUNICODE)'u'){ // Superscript + if(upDown < 0){ + strcat(pangoMarkupString, "</sub>"); + } else { + strcat(pangoMarkupString, "<sup>"); + } + upDown++; + } + if(ucs4[i] == (PLUNICODE)'d'){ // Subscript + if(upDown > 0){ + strcat(pangoMarkupString, "</sup>"); + } else { + strcat(pangoMarkupString, "<sub>"); + } + upDown--; + } + i++; + } + } + else { // a font change + close_span_tag(pangoMarkupString, upDown); + open_span_tag(pangoMarkupString, ucs4[i], fontSize, upDown); + i++; + } + } + + // Close the last span tag. + close_span_tag(pangoMarkupString, upDown); + + //printf("%s\n", pangoMarkupString); + + return pangoMarkupString; +} + +//--------------------------------------------------------------------- +// open_span_tag +// +// 1. Opens a span tag with the appropriate font description given the +// current fci. +// 2. Add the appropriate number of <sub> or <sup> tags to bring us +// back to our current sub/super-script level. +//--------------------------------------------------------------------- + +void open_span_tag(char *pangoMarkupString, PLUNICODE fci, float fontSize, int upDown) +{ + int i; + unsigned char fontFamily, fontStyle, fontWeight; + char openTag[200]; + + // Generate the font info for the open tag & concatenate this + // onto the markup string. + plP_fci2hex(fci, &fontFamily, PL_FCI_FAMILY); + plP_fci2hex(fci, &fontStyle, PL_FCI_STYLE); + plP_fci2hex(fci, &fontWeight, PL_FCI_WEIGHT); + sprintf(openTag, "<span font_desc=\"%s %.2f\" ", familyLookup[fontFamily], fontSize); + strcat(pangoMarkupString, openTag); + + sprintf(openTag, "style=\"%s\" ", styleLookup[fontStyle]); + strcat(pangoMarkupString, openTag); + + sprintf(openTag, "weight=\"%s\">", weightLookup[fontWeight]); + strcat(pangoMarkupString, openTag); + + // Move to the right sub/super-script level + if(upDown > 0){ + while(upDown > 0){ + strcat(pangoMarkupString, "<sup>"); + upDown--; + } + } + if(upDown < 0){ + while(upDown < 0){ + strcat(pangoMarkupString, "<sub>"); + upDown++; + } + } +} + +//--------------------------------------------------------------------- +// close_span_tag +// +// Close a span tag & brings us down to zero sub/super-script level +//--------------------------------------------------------------------- + +void close_span_tag(char *pangoMarkupString, int upDown) +{ + if(upDown > 0){ + while(upDown > 0){ + strcat(pangoMarkupString, "</sup>"); + upDown--; + } + } + if(upDown < 0){ + while(upDown < 0){ + strcat(pangoMarkupString, "</sub>"); + upDown++; + } + } + + strcat(pangoMarkupString, "</span>"); +} + +//--------------------------------------------------------------------- +// get_cursor() +// +// returns the location of the next mouse click +//--------------------------------------------------------------------- + +void get_cursor(PLStream *pls, PLGraphicsIn *gin) +{ + XEvent mouseEvent; + Cursor xHairCursor; + + // Initialize PLplot mouse event structure + plGinInit(gin); + + // Create cross hair cursor & switch to using it + xHairCursor = XCreateFontCursor(XDisplay, XC_crosshair); + XDefineCursor(XDisplay, XWindow[currentPage], xHairCursor); + + // Get the next mouse button release event + XSelectInput(XDisplay, XWindow[currentPage], ButtonReleaseMask); + XMaskEvent(XDisplay, ButtonReleaseMask, &mouseEvent); + XSelectInput(XDisplay, XWindow[currentPage], NoEventMask); + + // Update PLplot's mouse event structure + gin->button = 0; + gin->pX = mouseEvent.xbutton.x; + gin->pY = mouseEvent.xbutton.y; + gin->dX = (PLFLT)mouseEvent.xbutton.x/((PLFLT)(pls->xlength)); + gin->dY = (PLFLT)mouseEvent.xbutton.y/((PLFLT)(pls->ylength)); + + // Switch back to normal cursor + XUndefineCursor(XDisplay, XWindow[currentPage]); + XFlush(XDisplay); +} + +//--------------------------------------------------------------------- +// set_current_context() +// +// Updates the cairo graphics context with the current values in +// PLStream. +//--------------------------------------------------------------------- + +void set_current_context(PLStream *pls) +{ + cairo_set_source_rgb(cairoContext[currentPage], + (double)pls->curcolor.r/255.0, + (double)pls->curcolor.g/255.0, + (double)pls->curcolor.b/255.0); + // In Cairo, zero width lines are not hairlines, they are completely invisible. + if(pls->width < 1){ + cairo_set_line_width(cairoContext[currentPage], 1.0); + } else{ + cairo_set_line_width(cairoContext[currentPage], (double) pls->width); + } +} + +//--------------------------------------------------------------------- +// poly_line() +// +// Draws a multi-segmented line. It is then up to the calling function +// to decide whether to just draw the line, or fill in the area +// enclosed by the line. +//--------------------------------------------------------------------- + +void poly_line(PLStream *pls, short *xa, short *ya, PLINT npts) +{ + int i; + + set_current_context(pls); + + cairo_move_to(cairoContext[currentPage], (double) xa[0], (double) ya[0]); + for(i=1;i<npts;i++){ + cairo_line_to(cairoContext[currentPage], (double) xa[i], (double) ya[i]); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hba...@us...> - 2007-06-03 22:08:58
|
Revision: 7708 http://plplot.svn.sourceforge.net/plplot/?rev=7708&view=rev Author: hbabcock Date: 2007-06-03 15:08:58 -0700 (Sun, 03 Jun 2007) Log Message: ----------- Renamed the xwinttf driver to xcairo. Added Cairo based PDF, PS, SVG, PNG and MEM drivers. Modified Paths: -------------- trunk/cmake/modules/cairo.cmake trunk/cmake/modules/drivers-init.cmake trunk/config.h.cmake trunk/drivers/cairo.c trunk/include/drivers.h trunk/include/plDevs.h.cmake trunk/include/plcore.h Modified: trunk/cmake/modules/cairo.cmake =================================================================== --- trunk/cmake/modules/cairo.cmake 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/cmake/modules/cairo.cmake 2007-06-03 22:08:58 UTC (rev 7708) @@ -22,7 +22,7 @@ # # The following variables are set / modified # -# PLD_xwinttf - ON means the xwintff device is enabled. +# PLD_xcairo - ON means the xcairo device is enabled. # cairo_COMPILE_FLAGS - Blank-delimited COMPILE_FLAGS required to # compile cairo device drivers. # cairo_LINK_FLAGS - LINK_FLAGS (string) for dynamic cairo device drivers. @@ -35,23 +35,38 @@ # set the environment variable CMAKE_LIBRARY_PATH. # See cmake documentation for further details. -# Look for xwinttf headers and libraries with pkg-config -if(PLD_xwinttf) +# Look for cairo headers and libraries with pkg-config +if(PLD_xcairo OR PLD_pdfcairo OR PLD_pscairo OR PLD_svgcairo OR PLD_pngcairo OR PLD_memcairo) if(NOT PKG_CONFIG_EXECUTABLE) message(STATUS - "WARNING: pkg-config not found. Setting PLD_xwinttf to OFF." + "WARNING: pkg-config not found. Setting cairo drivers to OFF." ) - set(PLD_xwinttf OFF CACHE BOOL "Enable xwinttf device" FORCE) + set(PLD_xcairo OFF CACHE BOOL "Enable xcairo device" FORCE) + set(PLD_pdfcairo OFF CACHE BOOL "Enable pdfcairo device" FORCE) + set(PLD_pscairo OFF CACHE BOOL "Enable pscairo device" FORCE) + set(PLD_svgcairo OFF CACHE BOOL "Enable svgcairo device" FORCE) + set(PLD_pngcairo OFF CACHE BOOL "Enable pngcairo device" FORCE) + set(PLD_memcairo OFF CACHE BOOL "Enable memcairo device" FORCE) endif(NOT PKG_CONFIG_EXECUTABLE) -endif(PLD_xwinttf) +endif(PLD_xcairo OR PLD_pdfcairo OR PLD_pscairo OR PLD_svgcairo OR PLD_pngcairo OR PLD_memcairo) -if(PLD_xwinttf) - pkg_check_pkgconfig("pangocairo;pango;cairo" includedir libdir linkflags cflags _XWINTTF) +if(PLD_xcairo OR PLD_pdfcairo OR PLD_pscairo OR PLD_svgcairo OR PLD_pngcairo OR PLD_memcairo) + pkg_check_pkgconfig("pangocairo;pango;cairo" includedir libdir linkflags cflags _CAIRO) if(linkflags) # Blank-delimited required. - string(REGEX REPLACE ";" " " cairo_COMPILE_FLAGS "${cflags} -I${X11_INCLUDE_DIR}") - set(cairo_LINK_FLAGS "${linkflags} -L${X11_LIBRARY_DIR} ${X11_LIBRARIES}") - message("cairo_COMPILE_FLAGS = ${cairo_COMPILE_FLAGS}") + if(PLD_xcairo AND X11_INCLUDE_DIR) + string(REGEX REPLACE ";" " " cairo_COMPILE_FLAGS "${cflags} -I${X11_INCLUDE_DIR}") + set(cairo_LINK_FLAGS "${linkflags} -L${X11_LIBRARY_DIR} ${X11_LIBRARIES}") + else(PLD_xcairo AND X11_INCLUDE_DIR) + string(REGEX REPLACE ";" " " cairo_COMPILE_FLAGS "${cflags}") + set(cairo_LINK_FLAGS "${linkflags}") + message(STATUS + "WARNING: X windows not found. Setting xcairo driver to OFF." + ) + set(PLD_xcairo OFF CACHE BOOL "Enable xcairo device" FORCE) + endif(PLD_xcairo AND X11_INCLUDE_DIR) + + # message("cairo_COMPILE_FLAGS = ${cairo_COMPILE_FLAGS}") set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} @@ -65,9 +80,14 @@ #message("cflags = ${cflags}") message(STATUS "WARNING: pango or cairo not found with pkg-config.\n" - " Setting PLD_xwintff to OFF. Please install all of these packages\n" + " Setting cairo drivers to OFF. Please install all of these packages\n" " and/or set the environment variable PKG_CONFIG_PATH appropriately." ) - set(PLD_xwinttf OFF CACHE BOOL "Enable xwinttf device" FORCE) + set(PLD_xcairo OFF CACHE BOOL "Enable xcairo device" FORCE) + set(PLD_pdfcairo OFF CACHE BOOL "Enable pdfcairo device" FORCE) + set(PLD_pscairo OFF CACHE BOOL "Enable pscairo device" FORCE) + set(PLD_svgcairo OFF CACHE BOOL "Enable svgcairo device" FORCE) + set(PLD_pngcairo OFF CACHE BOOL "Enable pngcairo device" FORCE) + set(PLD_memcairo OFF CACHE BOOL "Enable memcairo device" FORCE) endif(linkflags) -endif(PLD_xwinttf) +endif(PLD_xcairo OR PLD_pdfcairo OR PLD_pscairo OR PLD_svgcairo OR PLD_pngcairo OR PLD_memcairo) Modified: trunk/cmake/modules/drivers-init.cmake =================================================================== --- trunk/cmake/modules/drivers-init.cmake 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/cmake/modules/drivers-init.cmake 2007-06-03 22:08:58 UTC (rev 7708) @@ -85,12 +85,16 @@ "ljii:ljii:OFF" "ljiip:ljiip:OFF" "mem:mem:ON" +"memcairo:cairo:OFF" "ntk:ntk:OFF" "null:null:ON" "pbm:pbm:ON" "pdf:pdf:OFF" +"pdfcairo:cairo:OFF" "plmeta:plmeta:ON" +"pngcairo:cairo:OFF" "ps:ps:ON" +"pscairo:cairo:OFF" # Default OFF because this device is not well maintained (it currently # segfaults). "pstex:pstex:OFF" @@ -98,14 +102,15 @@ "xterm:tek:OFF" "tek4010:tek:OFF" "tek4107:tek:OFF" "mskermit:tek:OFF" "versaterm:tek:OFF" "vlt:tek:OFF" "conex:tek:OFF" "tek4010f:tek:OFF" "svg:svg:ON" +"svgcairo:cairo:OFF" "tek4107f:tek:OFF" "tk:tk:ON" "tkwin:tkwin:ON" "wingcc:wingcc:ON" "wxwidgets:wxwidgets:ON" +"xcairo:cairo:OFF" "xfig:xfig:ON" "xwin:xwin:ON" -"xwinttf:cairo:OFF" ) set(PRESET_DEFAULT OFF) Modified: trunk/config.h.cmake =================================================================== --- trunk/config.h.cmake 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/config.h.cmake 2007-06-03 22:08:58 UTC (rev 7708) @@ -220,15 +220,27 @@ /* Define if pdf driver is present */ #cmakedefine PLD_pdf +/* Define if Cairo PDF driver is present */ +#cmakedefine PLD_pdfcairo + /* Define if plmeta driver is present */ #cmakedefine PLD_plmeta +/* Define if Cairo memory driver is present */ +#cmakedefine PLD_memcairo + /* Define if png driver is present */ #cmakedefine PLD_png +/* Define if Cairo PNG driver is present */ +#cmakedefine PLD_pngcairo + /* Define if ps driver is present */ #cmakedefine PLD_ps +/* Define if Cairo PS driver is present */ +#cmakedefine PLD_pscairo + /* Define if pstex driver is present */ #cmakedefine PLD_pstex @@ -238,6 +250,9 @@ /* Define if svg driver is present */ #cmakedefine PLD_svg +/* Define if Cairo SVG driver is present */ +#cmakedefine PLD_svgcairo + /* Define if tek4010 driver is present */ #cmakedefine PLD_tek4010 @@ -268,6 +283,9 @@ /* Define if wxwidgets driver is present */ #cmakedefine PLD_wxwidgets +/* Define if the cairo X windows driver is present */ +#cmakedefine PLD_xcairo + /* Define if xfig driver is present */ #cmakedefine PLD_xfig @@ -277,9 +295,6 @@ /* Define if xwin driver is present */ #cmakedefine PLD_xwin -/* Define if xwin driver is present */ -#cmakedefine PLD_xwinttf - /* Portable definition for PTHREAD_MUTEX_RECURSIVE */ #define PLPLOT_MUTEX_RECURSIVE ${PLPLOT_MUTEX_RECURSIVE} Modified: trunk/drivers/cairo.c =================================================================== --- trunk/drivers/cairo.c 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/drivers/cairo.c 2007-06-03 22:08:58 UTC (rev 7708) @@ -22,9 +22,9 @@ */ -//--------------------------------------------- -// Header files, defines and local variables -//--------------------------------------------- +//--------------------------------------------------------------------- +// Header files +//--------------------------------------------------------------------- #include <stdio.h> #include <string.h> @@ -34,48 +34,66 @@ #include <cairo-xlib.h> #include <pango/pangocairo.h> +//#if defined(PLD_xcairo) #include <X11/X.h> #include <X11/Xlib.h> -#include <X11/Xutil.h> +#include <X11/Xutil.h> #include <X11/cursorfont.h> +//#endif -/* PLplot header files */ +// PLplot header files #include "plplotP.h" #include "drivers.h" -//--------------------------------------------- +//--------------------------------------------------------------------- // Constants & global (to this file) variables -//--------------------------------------------- +//--------------------------------------------------------------------- +#define DPI 72 +#define PLCAIRO_DEFAULT_X 720 +#define PLCAIRO_DEFAULT_Y 540 + #define MAX_STRING_LEN 500 #define MAX_MARKUP_LEN MAX_STRING_LEN * 10 typedef struct { cairo_surface_t *cairoSurface; cairo_t *cairoContext; +#if defined(PLD_xcairo) Display *XDisplay; Window XWindow; +#endif +#if defined(PLD_memcairo) + unsigned char *memory; +#endif } PLCairo; -/* xwintff specific constants and variables */ +char* plD_DEVICE_INFO_cairo = +#if defined(PLD_xcairo) + "xcairo:Cairo X Windows Driver:1:cairo:59:xcairo\n" +#endif +#if defined(PLD_pdfcairo) + "pdfcairo:Cairo PDF Driver:0:cairo:60:pdfcairo\n" +#endif +#if defined(PLD_pscairo) + "pscairo:Cairo PS Driver:0:cairo:61:pscairo\n" +#endif +#if defined(PLD_svgcairo) + "svgcairo:Cairo SVG Driver:0:cairo:62:svgcairo\n" +#endif +#if defined(PLD_pngcairo) + "pngcairo:Cairo PNG Driver:0:cairo:63:pngcairo\n" +#endif +#if defined(PLD_memcairo) + "memcairo:Cairo Memory Driver:0:cairo:64:memcairo\n" +#endif +; -#define DPI 72 -#define XWINTTF_DEFAULT_X 720 -#define XWINTTF_DEFAULT_Y 540 - -static int XScreen; -static Window rootWindow; - -static int windowXSize = XWINTTF_DEFAULT_X; -static int windowYSize = XWINTTF_DEFAULT_Y; - -char* plD_DEVICE_INFO_cairo = "xwinttf:TrueType X Windows Driver:1:cairo:59:xwinttf\n"; - -//----------------------------------------------- +//--------------------------------------------------------------------- // Font style and weight lookup tables (copied // from the psttf driver). -//----------------------------------------------- +//--------------------------------------------------------------------- #define NPANGOLOOKUP 5 @@ -108,10 +126,23 @@ "oblique" }; -//----------------------------------------------- + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is common to all the Cairo Drivers +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- // function declarations -//----------------------------------------------- +//--------------------------------------------------------------------- +/* General */ + +void stream_and_font_setup(PLStream *, int); + /* String processing */ static void proc_str(PLStream *, EscText *); @@ -121,144 +152,35 @@ /* Graphics */ -static void get_cursor(PLStream *, PLGraphicsIn *); static void set_current_context(PLStream *); static void poly_line(PLStream *, short *, short *, PLINT); +static void rotate_cairo_surface(PLStream *, float, float, float, float, float, float); /* PLplot interface functions */ -void plD_dispatch_init_xwinttf (PLDispatchTable *pdt); -void plD_init_xwinttf (PLStream *); -void plD_line_xwinttf (PLStream *, short, short, short, short); -void plD_polyline_xwinttf (PLStream *, short *, short *, PLINT); -void plD_eop_xwinttf (PLStream *); -void plD_bop_xwinttf (PLStream *); -void plD_tidy_xwinttf (PLStream *); -void plD_state_xwinttf (PLStream *, PLINT); -void plD_esc_xwinttf (PLStream *, PLINT, void *); +// general +void plD_bop_cairo (PLStream *); +void plD_eop_cairo (PLStream *); +void plD_state_cairo (PLStream *, PLINT); +void plD_esc_cairo (PLStream *, PLINT, void *); +void plD_tidy_cairo (PLStream *); +void plD_line_cairo (PLStream *, short, short, short, short); +void plD_polyline_cairo (PLStream *, short *, short *, PLINT); -//--------------------------------------------------------------------- -// dispatch_init_init() -// -// Initialize device dispatch table //---------------------------------------------------------------------- - -void plD_dispatch_init_xwinttf(PLDispatchTable *pdt) -{ -#ifndef ENABLE_DYNDRIVERS - pdt->pl_MenuStr = "TrueType X Windows Driver"; - pdt->pl_DevName = "xwinttf"; -#endif - pdt->pl_type = plDevType_Interactive; - pdt->pl_seq = 59; - pdt->pl_init = (plD_init_fp) plD_init_xwinttf; - pdt->pl_line = (plD_line_fp) plD_line_xwinttf; - pdt->pl_polyline = (plD_polyline_fp) plD_polyline_xwinttf; - pdt->pl_eop = (plD_eop_fp) plD_eop_xwinttf; - pdt->pl_bop = (plD_bop_fp) plD_bop_xwinttf; - pdt->pl_tidy = (plD_tidy_fp) plD_tidy_xwinttf; - pdt->pl_state = (plD_state_fp) plD_state_xwinttf; - pdt->pl_esc = (plD_esc_fp) plD_esc_xwinttf; -} - -//--------------------------------------------------------------------- -// xwinttf_init() +// plD_bop_cairo() // -// Initialize device -//---------------------------------------------------------------------- - -void plD_init_xwinttf(PLStream *pls) -{ - int i; - char *a; - char plotTitle[40]; - Visual *defaultVisual; - XGCValues values; - cairo_matrix_t *flipVertical; - PLCairo *aStream; - - // Stream setup - pls->termin = 1; /* Interactive device */ - pls->dev_flush = 1; /* Handles flushes */ - pls->color = 1; /* Supports color */ - pls->dev_text = 1; /* Handles text */ - pls->dev_unicode = 1; /* Wants unicode text */ - pls->page = 0; - pls->dev_fill0 = 1; /* Supports hardware solid fills */ - - plP_setpxl(DPI/25.4, DPI/25.4); - - if (pls->xlength <= 0 || pls->ylength <= 0){ - plP_setphy((PLINT) 0, (PLINT) XWINTTF_DEFAULT_X, (PLINT) 0, XWINTTF_DEFAULT_Y); - } else { - windowXSize = pls->xlength; - windowYSize = pls->ylength; - plP_setphy((PLINT) 0, (PLINT) pls->xlength, (PLINT) 0, (PLINT) pls->ylength); - } - - // Allocate a cairo stream structure - aStream = malloc(sizeof(PLCairo)); - - // X Windows setup - aStream->XDisplay = NULL; - aStream->XDisplay = XOpenDisplay(NULL); - if(aStream->XDisplay == NULL){ - printf("Failed to open X Windows display\n"); - // some sort of error here - } - XScreen = DefaultScreen(aStream->XDisplay); - rootWindow = RootWindow(aStream->XDisplay, XScreen); - - // Initialize plot title - sprintf(plotTitle, "PLplot"); - - // Create a X Window. - aStream->XWindow = XCreateSimpleWindow(aStream->XDisplay, rootWindow, 0, 0, windowXSize, windowYSize, - 1, BlackPixel(aStream->XDisplay, XScreen), BlackPixel(aStream->XDisplay, XScreen)); - XStoreName(aStream->XDisplay, aStream->XWindow, plotTitle); - XSelectInput(aStream->XDisplay, aStream->XWindow, NoEventMask); - XMapWindow(aStream->XDisplay, aStream->XWindow); - - // Create an cairo surface & context that are associated with the X window. - defaultVisual = DefaultVisual(aStream->XDisplay, 0); - aStream->cairoSurface = cairo_xlib_surface_create(aStream->XDisplay, aStream->XWindow, defaultVisual, windowXSize, windowYSize); - aStream->cairoContext = cairo_create(aStream->cairoSurface); - - // Invert the coordinate system so the graphs are drawn right side up. - flipVertical = (cairo_matrix_t *) malloc (sizeof(cairo_matrix_t)); - cairo_matrix_init(flipVertical, 1.0, 0.0, 0.0, -1.0, 0.0, windowYSize); - cairo_set_matrix(aStream->cairoContext, flipVertical); - free(flipVertical); - - // Save the pointer to the structure in the PLplot stream - pls->dev = aStream; - - // Initialize font table with either enviroment variables or defaults. - // This was copied from the psttf driver. - for(i=0;i<NPANGOLOOKUP;i++){ - if((a = getenv(envFamilyLookup[i])) != NULL){ - strcpy(familyLookup[i],a); - } - else { - strcpy(familyLookup[i],defaultFamilyLookup[i]); - } - } -} - -//---------------------------------------------------------------------- -// xwinttf_bop() -// // Set up for the next page. //---------------------------------------------------------------------- -void plD_bop_xwinttf(PLStream *pls) +void plD_bop_cairo(PLStream *pls) { PLCairo *aStream; aStream = (PLCairo *)pls->dev; // Fill in the window with the background color. - cairo_rectangle(aStream->cairoContext, 0.0, 0.0, windowXSize, windowYSize); + cairo_rectangle(aStream->cairoContext, 0.0, 0.0, pls->xlength, pls->ylength); cairo_set_source_rgb(aStream->cairoContext, (double)pls->cmap0[0].r/255.0, (double)pls->cmap0[0].g/255.0, @@ -267,12 +189,12 @@ } //--------------------------------------------------------------------- -// xwinttf_line() +// plD_line_cairo() // // Draw a line in the current color from (x1,y1) to (x2,y2). //---------------------------------------------------------------------- -void plD_line_xwinttf(PLStream *pls, short x1a, short y1a, short x2a, short y2a) +void plD_line_cairo(PLStream *pls, short x1a, short y1a, short x2a, short y2a) { PLCairo *aStream; @@ -286,12 +208,12 @@ } //--------------------------------------------------------------------- -// xwinttf_polyline() +// plD_polyline_cairo() // // Draw a polyline in the current color. //--------------------------------------------------------------------- -void plD_polyline_xwinttf(PLStream *pls, short *xa, short *ya, PLINT npts) +void plD_polyline_cairo(PLStream *pls, short *xa, short *ya, PLINT npts) { PLCairo *aStream; @@ -302,29 +224,26 @@ } //--------------------------------------------------------------------- -// xwinttf_eop() +// plD_eop_cairo() // -// End of page +// Generic end of page. //--------------------------------------------------------------------- -void plD_eop_xwinttf(PLStream *pls) +void plD_eop_cairo(PLStream *pls) { PLCairo *aStream; aStream = (PLCairo *)pls->dev; - - XFlush(aStream->XDisplay); - printf("Key <Return> to finish\n"); - getc(stdin); + cairo_show_page(aStream->cairoContext); } //--------------------------------------------------------------------- -// xwinttf_tidy() +// plD_tidy_cairo() // -// Close graphics file or otherwise clean up. +// General: Close graphics file or otherwise clean up. //--------------------------------------------------------------------- -void plD_tidy_xwinttf(PLStream *pls) +void plD_tidy_cairo(PLStream *pls) { PLCairo *aStream; @@ -333,17 +252,10 @@ // Free the cairo context and surface. cairo_destroy(aStream->cairoContext); cairo_surface_destroy(aStream->cairoSurface); - - // Close the window and the display. - XFlush(aStream->XDisplay); - XDestroyWindow(aStream->XDisplay, aStream->XWindow); - - XCloseDisplay(aStream->XDisplay); - free(aStream->XDisplay); } //--------------------------------------------------------------------- -// plD_state_xwinttf() +// plD_state_cairo() // // Handle change in PLStream state (color, pen width, fill attribute, etc). // @@ -351,17 +263,17 @@ // PLStream for each element that is drawn. //--------------------------------------------------------------------- -void plD_state_xwinttf(PLStream *pls, PLINT op) +void plD_state_cairo(PLStream *pls, PLINT op) { } //--------------------------------------------------------------------- -// xwinttf_esc() +// plD_esc_cairo() // -// Escape function. +// Generic escape function. //--------------------------------------------------------------------- -void plD_esc_xwinttf(PLStream *pls, PLINT op, void *ptr) +void plD_esc_cairo(PLStream *pls, PLINT op, void *ptr) { PLCairo *aStream; @@ -376,13 +288,6 @@ case PLESC_HAS_TEXT: // render rext proc_str(pls, (EscText *) ptr); break; - case PLESC_FLUSH: // forced update of the window - XFlush(aStream->XDisplay); - break; - case PLESC_GETC: // get cursor position - XFlush(aStream->XDisplay); - get_cursor(pls, (PLGraphicsIn*)ptr); - break; } } @@ -410,13 +315,13 @@ // Check that we got unicode, warning message and return if not if(args->unicode_array_len == 0){ - printf("Non unicode string passed to xwinttf driver, ignoring\n"); + printf("Non unicode string passed to a cairo driver, ignoring\n"); return; } // Check that unicode string isn't longer then the max we allow if(args->unicode_array_len >= MAX_STRING_LEN){ - printf("Sorry, the xwinttf driver only handles strings of length < %d\n", MAX_STRING_LEN); + printf("Sorry, the cairo drivers only handles strings of length < %d\n", MAX_STRING_LEN); return; } @@ -647,13 +552,289 @@ } //--------------------------------------------------------------------- -// get_cursor() +// stream_and_font_setup() // -// returns the location of the next mouse click +// Initializes the PLStream structure for the cairo devices. +// Initializes the font lookup table. //--------------------------------------------------------------------- -void get_cursor(PLStream *pls, PLGraphicsIn *gin) +void stream_and_font_setup(PLStream *pls, int interactive) { + int i; + char *a; + + // Stream setup + pls->termin = interactive; /* Interactive device */ + pls->dev_flush = 1; /* Handles flushes */ + pls->color = 1; /* Supports color */ + pls->dev_text = 1; /* Handles text */ + pls->dev_unicode = 1; /* Wants unicode text */ + pls->page = 0; + pls->dev_fill0 = 1; /* Supports hardware solid fills */ + + plP_setpxl(DPI/25.4, DPI/25.4); + + if (pls->xlength <= 0 || pls->ylength <= 0){ + pls->xlength = PLCAIRO_DEFAULT_X; + pls->ylength = PLCAIRO_DEFAULT_Y; + } + plP_setphy((PLINT) 0, (PLINT) pls->xlength, (PLINT) 0, (PLINT) pls->ylength); + + // Initialize font table with either enviroment variables or defaults. + // This was copied from the psttf driver. + if(familyLookup[i] == NULL){ + for(i=0;i<NPANGOLOOKUP;i++){ + if((a = getenv(envFamilyLookup[i])) != NULL){ + strcpy(familyLookup[i],a); + } + else { + strcpy(familyLookup[i],defaultFamilyLookup[i]); + } + } + } +} + +//--------------------------------------------------------------------- +// set_current_context() +// +// Updates the cairo graphics context with the current values in +// PLStream. +//--------------------------------------------------------------------- + +void set_current_context(PLStream *pls) +{ + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + cairo_set_source_rgb(aStream->cairoContext, + (double)pls->curcolor.r/255.0, + (double)pls->curcolor.g/255.0, + (double)pls->curcolor.b/255.0); + // In Cairo, zero width lines are not hairlines, they are completely invisible. + if(pls->width < 1){ + cairo_set_line_width(aStream->cairoContext, 1.0); + } else{ + cairo_set_line_width(aStream->cairoContext, (double) pls->width); + } +} + +//--------------------------------------------------------------------- +// poly_line() +// +// Draws a multi-segmented line. It is then up to the calling function +// to decide whether to just draw the line, or fill in the area +// enclosed by the line. +//--------------------------------------------------------------------- + +void poly_line(PLStream *pls, short *xa, short *ya, PLINT npts) +{ + int i; + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + set_current_context(pls); + + cairo_move_to(aStream->cairoContext, (double) xa[0], (double) ya[0]); + for(i=1;i<npts;i++){ + cairo_line_to(aStream->cairoContext, (double) xa[i], (double) ya[i]); + } +} + +//--------------------------------------------------------------------- +// rotate_cairo_surface() +// +// Rotates the cairo surface to the appropriate orientation. +//--------------------------------------------------------------------- + +void rotate_cairo_surface(PLStream *pls, float x11, float x12, float x21, float x22, float x0, float y0) +{ + cairo_matrix_t *matrix; + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + // Invert the coordinate system so the graphs are drawn right side up. + matrix = (cairo_matrix_t *) malloc (sizeof(cairo_matrix_t)); + cairo_matrix_init(matrix, x11, x12, x21, x22, x0, y0); + cairo_transform(aStream->cairoContext, matrix); + free(matrix); +} + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is specific to the xcairo driver. +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +#if defined(PLD_xcairo) + +static int XScreen; +static Window rootWindow; + +void plD_dispatch_init_xcairo (PLDispatchTable *pdt); +void plD_init_xcairo (PLStream *); +void plD_eop_xcairo (PLStream *); +void plD_tidy_xcairo (PLStream *); +void plD_esc_xcairo (PLStream *, PLINT, void *); +static void xcairo_get_cursor (PLStream *, PLGraphicsIn *); + +//--------------------------------------------------------------------- +// plD_dispatch_init_xcairo() +// +// xcairo dispatch table initialization. +//---------------------------------------------------------------------- + +void plD_dispatch_init_xcairo(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo X Windows Driver"; + pdt->pl_DevName = "xcairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 59; + pdt->pl_init = (plD_init_fp) plD_init_xcairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_xcairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_xcairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_xcairo; +} + +//--------------------------------------------------------------------- +// plD_init_xcairo() +// +// Initialize Cairo X Windows device. +//---------------------------------------------------------------------- + +void plD_init_xcairo(PLStream *pls) +{ + char plotTitle[40]; + Visual *defaultVisual; + XGCValues values; + PLCairo *aStream; + + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 1); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // X Windows setup + aStream->XDisplay = NULL; + aStream->XDisplay = XOpenDisplay(NULL); + if(aStream->XDisplay == NULL){ + printf("Failed to open X Windows display\n"); + // some sort of error here + } + XScreen = DefaultScreen(aStream->XDisplay); + rootWindow = RootWindow(aStream->XDisplay, XScreen); + + // Initialize plot title + sprintf(plotTitle, "PLplot"); + + // Create a X Window. + aStream->XWindow = XCreateSimpleWindow(aStream->XDisplay, rootWindow, 0, 0, pls->xlength, pls->ylength, + 1, BlackPixel(aStream->XDisplay, XScreen), BlackPixel(aStream->XDisplay, XScreen)); + XStoreName(aStream->XDisplay, aStream->XWindow, plotTitle); + XSelectInput(aStream->XDisplay, aStream->XWindow, NoEventMask); + XMapWindow(aStream->XDisplay, aStream->XWindow); + + // Create an cairo surface & context that are associated with the X window. + defaultVisual = DefaultVisual(aStream->XDisplay, 0); + aStream->cairoSurface = cairo_xlib_surface_create(aStream->XDisplay, aStream->XWindow, defaultVisual, pls->xlength, pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream + pls->dev = aStream; + + // Invert the surface so that the graphs are drawn right side up. + rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0, 0.0, pls->ylength); +} + +//--------------------------------------------------------------------- +// plD_eop_xcairo() +// +// X Windows specific end of page. +//--------------------------------------------------------------------- + +void plD_eop_xcairo(PLStream *pls) +{ + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + XFlush(aStream->XDisplay); + printf("Key <Return> to finish\n"); + getc(stdin); +} + +//--------------------------------------------------------------------- +// plD_tidy_xcairo() +// +// X Windows: close graphics file or otherwise clean up. +//--------------------------------------------------------------------- + +void plD_tidy_xcairo(PLStream *pls) +{ + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + plD_tidy_cairo(pls); + + // Close the window and the display. + XFlush(aStream->XDisplay); + XDestroyWindow(aStream->XDisplay, aStream->XWindow); + + XCloseDisplay(aStream->XDisplay); + free(aStream->XDisplay); +} + +//--------------------------------------------------------------------- +// plD_esc_xcairo() +// +// Escape function, specialized for the xcairo driver +//--------------------------------------------------------------------- + +void plD_esc_xcairo(PLStream *pls, PLINT op, void *ptr) +{ + PLCairo *aStream; + + aStream = (PLCairo *)pls->dev; + + switch(op) + { + case PLESC_FILL: // filled polygon + poly_line(pls, pls->dev_x, pls->dev_y, pls->dev_npts); + cairo_fill(aStream->cairoContext); + break; + case PLESC_HAS_TEXT: // render rext + proc_str(pls, (EscText *) ptr); + break; + case PLESC_FLUSH: // forced update of the window + XFlush(aStream->XDisplay); + break; + case PLESC_GETC: // get cursor position + XFlush(aStream->XDisplay); + xcairo_get_cursor(pls, (PLGraphicsIn*)ptr); + break; + } +} + +//--------------------------------------------------------------------- +// xcairo_get_cursor() +// +// X Windows: returns the location of the next mouse click +//--------------------------------------------------------------------- + +void xcairo_get_cursor(PLStream *pls, PLGraphicsIn *gin) +{ XEvent mouseEvent; Cursor xHairCursor; PLCairo *aStream; @@ -684,50 +865,428 @@ XFlush(aStream->XDisplay); } +#endif + + //--------------------------------------------------------------------- -// set_current_context() +//--------------------------------------------------------------------- // -// Updates the cairo graphics context with the current values in -// PLStream. +// That which is specific to the cairo PDF driver. +// //--------------------------------------------------------------------- +//--------------------------------------------------------------------- -void set_current_context(PLStream *pls) +#if defined(PLD_pdfcairo) + +void plD_dispatch_init_pdfcairo (PLDispatchTable *pdt); +void plD_init_pdfcairo (PLStream *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +// pdfcairo +void plD_dispatch_init_pdfcairo(PLDispatchTable *pdt) { +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo PDF Driver"; + pdt->pl_DevName = "pdfcairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 60; + pdt->pl_init = (plD_init_fp) plD_init_pdfcairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_cairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_cairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_cairo; +} + +//--------------------------------------------------------------------- +// plD_init_pdfcairo() +// +// Initialize Cairo PDF device +//---------------------------------------------------------------------- + +void plD_init_pdfcairo(PLStream *pls) +{ PLCairo *aStream; + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 0); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // Prompt for a file name if not already set, and close the file + // since we just need the name, not an open file. + plOpenFile(pls); + if(pls->OutFile != NULL){ fclose(pls->OutFile); } + + // Create an cairo surface & context for PDF file. + aStream->cairoSurface = cairo_pdf_surface_create((const char *)pls->FileName, (double)pls->xlength, (double)pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream + pls->dev = aStream; + + // Invert the surface so that the graphs are drawn right side up. + rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0, 0.0, pls->ylength); +} + +#endif + + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is specific to the cairo PS driver. +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +#if defined(PLD_pscairo) + +void plD_dispatch_init_pscairo (PLDispatchTable *pdt); +void plD_init_pscairo (PLStream *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +// pscairo +void plD_dispatch_init_pscairo(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo PS Driver"; + pdt->pl_DevName = "pscairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 61; + pdt->pl_init = (plD_init_fp) plD_init_pscairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_cairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_cairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_cairo; +} + +//--------------------------------------------------------------------- +// plD_init_pscairo() +// +// Initialize Cairo PS device +//---------------------------------------------------------------------- + +void plD_init_pscairo(PLStream *pls) +{ + PLCairo *aStream; + + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 0); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // Prompt for a file name if not already set, and close the file + // since we just need the name, not an open file. + plOpenFile(pls); + if(pls->OutFile != NULL){ fclose(pls->OutFile); } + + // Create an cairo surface & context for PS file. + aStream->cairoSurface = cairo_ps_surface_create((const char *)pls->FileName, (double)pls->xlength, (double)pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream + pls->dev = aStream; + + // Rotate the surface to landscape. + rotate_cairo_surface(pls, 0.0, -1.0, -1.0, 0.0, pls->ylength, pls->ylength); + + // Invert the surface so that the graphs are drawn right side up. + // rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0); +} + +#endif + + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is specific to the cairo SVG driver. +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +#if defined(PLD_svgcairo) + +void plD_dispatch_init_svgcairo (PLDispatchTable *pdt); +void plD_init_svgcairo (PLStream *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +// svgcairo +void plD_dispatch_init_svgcairo(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo SVG Driver"; + pdt->pl_DevName = "svgcairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 62; + pdt->pl_init = (plD_init_fp) plD_init_svgcairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_cairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_cairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_cairo; +} + +//--------------------------------------------------------------------- +// plD_init_svgcairo() +// +// Initialize Cairo SVG device +//---------------------------------------------------------------------- + +void plD_init_svgcairo(PLStream *pls) +{ + PLCairo *aStream; + + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 0); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // Prompt for a file name if not already set, and close the file + // since we just need the name, not an open file. + plOpenFile(pls); + if(pls->OutFile != NULL){ fclose(pls->OutFile); } + + // Create an cairo surface & context for SVG file. + aStream->cairoSurface = cairo_svg_surface_create((const char *)pls->FileName, (double)pls->xlength, (double)pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream + pls->dev = aStream; + + // Invert the surface so that the graphs are drawn right side up. + rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0, 0.0, pls->ylength); +} + +#endif + + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is specific to the cairo PNG driver. +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +#if defined(PLD_pngcairo) + +void plD_dispatch_init_pngcairo (PLDispatchTable *pdt); +void plD_init_pngcairo (PLStream *); +void plD_tidy_pngcairo (PLStream *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +// svgcairo +void plD_dispatch_init_pngcairo(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo PNG Driver"; + pdt->pl_DevName = "pngcairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 62; + pdt->pl_init = (plD_init_fp) plD_init_pngcairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_cairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_pngcairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_cairo; +} + +//--------------------------------------------------------------------- +// plD_init_pngcairo() +// +// Initialize Cairo PNG device +//---------------------------------------------------------------------- + +void plD_init_pngcairo(PLStream *pls) +{ + PLCairo *aStream; + + printf("Cairo memory device called\n"); + + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 0); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // Prompt for a file name if not already set, and close the file + // since we just need the name, not an open file. + plOpenFile(pls); + if(pls->OutFile != NULL){ fclose(pls->OutFile); } + + // Create a cairo surface & context for PNG file. + aStream->cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, (double)pls->xlength, (double)pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream + pls->dev = aStream; + + // Invert the surface so that the graphs are drawn right side up. + rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0, 0.0, pls->ylength); +} + +//--------------------------------------------------------------------- +// plD_tidy_pngcairo() +// +// PNG: Close graphics file or otherwise clean up. +//--------------------------------------------------------------------- + +void plD_tidy_pngcairo(PLStream *pls) +{ + PLCairo *aStream; + aStream = (PLCairo *)pls->dev; + cairo_surface_write_to_png(aStream->cairoSurface, (const char *)pls->FileName); + + plD_tidy_cairo(pls); +} + +#endif - cairo_set_source_rgb(aStream->cairoContext, - (double)pls->curcolor.r/255.0, - (double)pls->curcolor.g/255.0, - (double)pls->curcolor.b/255.0); - // In Cairo, zero width lines are not hairlines, they are completely invisible. - if(pls->width < 1){ - cairo_set_line_width(aStream->cairoContext, 1.0); - } else{ - cairo_set_line_width(aStream->cairoContext, (double) pls->width); - } + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// +// That which is specific to the cairo memory driver. +// +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +#if defined(PLD_memcairo) + +void plD_dispatch_init_memcairo (PLDispatchTable *pdt); +void plD_init_memcairo (PLStream *); +void plD_eop_memcairo (PLStream *); + +//--------------------------------------------------------------------- +// dispatch_init_init() +// +// Initialize device dispatch table +//---------------------------------------------------------------------- + +// svgcairo +void plD_dispatch_init_memcairo(PLDispatchTable *pdt) +{ +#ifndef ENABLE_DYNDRIVERS + pdt->pl_MenuStr = "Cairo memory driver"; + pdt->pl_DevName = "memcairo"; +#endif + pdt->pl_type = plDevType_Interactive; + pdt->pl_seq = 63; + pdt->pl_init = (plD_init_fp) plD_init_memcairo; + pdt->pl_line = (plD_line_fp) plD_line_cairo; + pdt->pl_polyline = (plD_polyline_fp) plD_polyline_cairo; + pdt->pl_eop = (plD_eop_fp) plD_eop_memcairo; + pdt->pl_bop = (plD_bop_fp) plD_bop_cairo; + pdt->pl_tidy = (plD_tidy_fp) plD_tidy_cairo; + pdt->pl_state = (plD_state_fp) plD_state_cairo; + pdt->pl_esc = (plD_esc_fp) plD_esc_cairo; } //--------------------------------------------------------------------- -// poly_line() +// plD_init_memcairo() // -// Draws a multi-segmented line. It is then up to the calling function -// to decide whether to just draw the line, or fill in the area -// enclosed by the line. +// Initialize Cairo memory device +//---------------------------------------------------------------------- + +void plD_init_memcairo(PLStream *pls) +{ + PLCairo *aStream; + + // Set the plot size to the memory buffer size, on the off chance + // that they are different. + pls->xlength = pls->phyxma; + pls->ylength = pls->phyyma; + + // Setup the PLStream and the font lookup table + stream_and_font_setup(pls, 0); + + // Allocate a cairo stream structure + aStream = malloc(sizeof(PLCairo)); + + // Check that user supplied us with some memory to draw in + if(pls->dev == NULL){ + plexit("Must call plsmem first to set user plotting area!"); + } + + // Save a pointer to the memory. + aStream->memory = pls->dev; + + // Create a cairo surface & context. + aStream->cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, (double)pls->xlength, (double)pls->ylength); + aStream->cairoContext = cairo_create(aStream->cairoSurface); + + // Save the pointer to the structure in the PLplot stream. + // Note that this wipes out the direct pointer to the memory buffer. + pls->dev = aStream; + + // Invert the surface so that the graphs are drawn right side up. + rotate_cairo_surface(pls, 1.0, 0.0, 0.0, -1.0, 0.0, pls->ylength); +} + //--------------------------------------------------------------------- +// plD_eop_memcairo() +// +// Memory device specific end of page. This copies the contents +// of the cairo surface into the user supplied memory buffer. +//--------------------------------------------------------------------- -void poly_line(PLStream *pls, short *xa, short *ya, PLINT npts) +void plD_eop_memcairo(PLStream *pls) { int i; + unsigned char *memory; + unsigned char *cairo_surface_data; PLCairo *aStream; aStream = (PLCairo *)pls->dev; + memory = aStream->memory; + cairo_surface_data = cairo_image_surface_get_data(aStream->cairoSurface); - set_current_context(pls); - - cairo_move_to(aStream->cairoContext, (double) xa[0], (double) ya[0]); - for(i=1;i<npts;i++){ - cairo_line_to(aStream->cairoContext, (double) xa[i], (double) ya[i]); + for(i = 0;i < (pls->phyxma * pls->phyyma); i++){ + memory[0] = cairo_surface_data[1]; + memory[1] = cairo_surface_data[2]; + memory[2] = cairo_surface_data[3]; + memory += 3; + cairo_surface_data += 4; } } + +#endif Modified: trunk/include/drivers.h =================================================================== --- trunk/include/drivers.h 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/include/drivers.h 2007-06-03 22:08:58 UTC (rev 7708) @@ -89,7 +89,12 @@ void plD_dispatch_init_wxwidgets ( PLDispatchTable *pdt ); void plD_dispatch_init_svg ( PLDispatchTable *pdt ); void plD_dispatch_init_pdf ( PLDispatchTable *pdt ); -void plD_dispatch_init_xwinttf ( PLDispatchTable *pdt ); +void plD_dispatch_init_xcairo ( PLDispatchTable *pdt ); +void plD_dispatch_init_pdfcairo ( PLDispatchTable *pdt ); +void plD_dispatch_init_pscairo ( PLDispatchTable *pdt ); +void plD_dispatch_init_svgcairo ( PLDispatchTable *pdt ); +void plD_dispatch_init_pngcairo ( PLDispatchTable *pdt ); +void plD_dispatch_init_memcairo ( PLDispatchTable *pdt ); /* Prototypes for plot buffer calls. */ Modified: trunk/include/plDevs.h.cmake =================================================================== --- trunk/include/plDevs.h.cmake 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/include/plDevs.h.cmake 2007-06-03 22:08:58 UTC (rev 7708) @@ -77,6 +77,12 @@ #cmakedefine PLD_wxwidgets #cmakedefine PLD_svg #cmakedefine PLD_pdf -#cmakedefine PLD_xwinttf +#cmakedefine PLD_xcairo +#cmakedefine PLD_pdfcairo +#cmakedefine PLD_pscairo +#cmakedefine PLD_svgcairo +#cmakedefine PLD_pngcairo +#cmakedefine PLD_memcairo + #endif /* __PLDEVS_H__ */ Modified: trunk/include/plcore.h =================================================================== --- trunk/include/plcore.h 2007-06-03 05:02:27 UTC (rev 7707) +++ trunk/include/plcore.h 2007-06-03 22:08:58 UTC (rev 7708) @@ -268,9 +268,25 @@ plD_dispatch_init_psttfm, plD_dispatch_init_psttfc, #endif -#if defined(PLD_xwinttf) && !defined(ENABLE_DYNDRIVERS) - plD_dispatch_init_xwinttf, +#if defined(PLD_xcairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_xcairo, #endif +#if defined(PLD_pdfcairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_pdfcairo, +#endif +#if defined(PLD_pscairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_pscairo, +#endif +#if defined(PLD_svgcairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_svgcairo, +#endif +#if defined(PLD_pngcairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_pngcairo, +#endif +#if defined(PLD_memcairo) && !defined(ENABLE_DYNDRIVERS) + plD_dispatch_init_memcairo, +#endif + NULL }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-02 01:33:24
|
Revision: 7737 http://plplot.svn.sourceforge.net/plplot/?rev=7737&view=rev Author: airwin Date: 2007-07-01 18:33:25 -0700 (Sun, 01 Jul 2007) Log Message: ----------- AWI for Jerry Bauck: Changed the names of thick examples from xtxx.adb to xthickxx.adb because t could mean thick, thin, or traditional. Modified x01.adb, x10.adb, and x12.adb to use the new PLplot_Traditional binding. Added new example file xthick10.adb Modified Paths: -------------- trunk/examples/ada/CMakeLists.txt trunk/examples/ada/x01a.adb trunk/examples/ada/x10a.adb trunk/examples/ada/x12a.adb trunk/examples/ada/xthick01a.adb trunk/examples/ada/xthick12a.adb trunk/test/test_ada.sh.in Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/CMakeLists.txt 2007-07-02 01:33:25 UTC (rev 7737) @@ -19,11 +19,14 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA set(ada_STRING_INDICES -"t01" +-"t01" "01" "10" "12" -"t12" +-"t12" ++"thick01" ++"thick10" ++"thick12" ) if(BUILD_TEST) Modified: trunk/examples/ada/x01a.adb =================================================================== --- trunk/examples/ada/x01a.adb 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/x01a.adb 2007-07-02 01:33:25 UTC (rev 7737) @@ -24,30 +24,28 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, - Interfaces.C, - PlplotThin; + PLplot_Traditional, + PLplot_Thin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, - Interfaces.C, - PlplotThin; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; procedure x01a is - xs, ys : Real_Vector (0 .. 5); + xs, ys : PLplot_Thin.Real_Vector (0 .. 5); xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; - PL_Version_Number : char_array(0..79); + ver : PLplot_Thin.String_80; + procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; - x, y : Real_Vector (0 .. 59); + x, y : PLplot_Thin.Real_Vector (0 .. 59); begin for i in x'Range loop x(i) := xoff + xscale * Long_Float(i + 1) / Long_Float(x'Length); @@ -63,27 +61,27 @@ ys(i) := y(i * 10 + 3); end loop; - -- Set up the viewport and window using Set_Environment. The range in X is + -- Set up the viewport and window using plenv. The range in X is -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are -- scaled separately (just = 0), and we just draw a labelled -- box (axis = 0). plcol0(1); plenv(xmin, xmax, ymin, ymax, 0, 0); plcol0(2); - pllab(To_C("(x)"), To_C("(y)"), To_C("#frPLplot Example 1 - y=x#u2")); + pllab("(x)", "(y)", "#frPLplot Example 1 - y=x#u2"); -- Plot the data points - plcol0(4); - plpoin(6, xs, ys, 9); + plcol0(Aquamarine); + plpoin(xs, ys, 9); -- Draw the line through the data plcol0(3); - plline(60, x, y); + plline(x, y); end plot1; procedure plot2 is - x, y : Real_Vector (0 .. 99); + x, y : PLplot_Thin.Real_Vector (0 .. 99); begin -- Set up the viewport and window using PLENV. The range in X is -2.0 to -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately @@ -91,7 +89,7 @@ plcol0(1); plenv(-2.0, 10.0, -0.4, 1.2, 0, 1); plcol0(2); - pllab(To_C("(x)"), To_C("sin(x)/x"), To_C("#frPLplot Example 1 - Sinc Function")); + pllab("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function"); -- Fill up the arrays for i in x'Range loop @@ -105,15 +103,14 @@ -- Draw the line plcol0(3); plwid(2); - plline(100, x, y); + plline(x, y); plwid(1); end plot2; procedure plot3 is - x, y : Real_Vector (0 .. 100); --- space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); - space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); + x, y : PLplot_Thin.Real_Vector (0 .. 100); + space1, mark1 : PLplot_Thin.Integer_Array_1D(1 .. 1) := (others => 1500); begin - pladv(0); + pladv(Next_SubPage); -- Use standard viewport, and define X range from 0 to 360 degrees, -- Y range from -1.2 to 1.2. @@ -122,24 +119,25 @@ -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. plcol0(1); - plbox(To_C("bcnst"), 60.0, 2, To_C("bcnstv"), 0.2, 2); + plbox("bcnst", 60.0, 2, "bcnstv", 0.2, 2); -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. - plstyl(1, mark1, space1); + -- plstyl expects a pointer! (-- Not Ada.) + plstyl(mark1, space1); plcol0(2); - plbox(To_C("g"), 30.0, 0, To_C("g"), 0.2, 0); - plstyl(0, mark1, space1); - + plbox("g", 30.0, 0, "g", 0.2, 0); + plstyl(Default_Continuous_Line); + plcol0(3); - pllab(To_C("Angle (degrees)"), To_C("sine"), To_C("#frPLplot Example 1 - Sine function")); - + pllab("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function"); + for i in x'Range loop x(i) := 3.6 * Long_Float(i); y(i) := sin(x(i) * pi / 180.0); end loop; - plcol0(4); - plline(101, x, y); + plcol0(Aquamarine); + plline(x, y); end plot3; begin @@ -149,11 +147,10 @@ plssub(2, 2); -- Parse and process command line arguments - plparseopts(PL_PARSE_FULL); + plparseopts(PLplot_Thin.PL_PARSE_FULL); -- Get version number, just for kicks - plgver(PL_Version_Number); - Put_Line("PLplot library version: " & To_Ada(PL_Version_Number, True)); + Put_Line("PLplot library version: " & plgver); -- Initialize plplot plinit; @@ -174,7 +171,7 @@ yoff := 0.0185; -- Do a plot - plsyax(5, 0); + plsyax(Max_Digits => 5, Field_Digits => 0); plot1; plot2; plot3; Modified: trunk/examples/ada/x10a.adb =================================================================== --- trunk/examples/ada/x10a.adb 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/x10a.adb 2007-07-02 01:33:25 UTC (rev 7737) @@ -24,16 +24,13 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, - Interfaces.C, - PlplotThin; + PLplot_Traditional, + PLplot_Thin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, - Interfaces.C, - PlplotThin; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -42,19 +39,19 @@ procedure x10a is begin -- Parse and process command line arguments - plparseopts(PL_PARSE_FULL); + plparseopts(PLplot_Thin.PL_PARSE_FULL); -- Initialize plplot plinit; - pladv(0); + pladv(Next_Subpage); plvpor(0.0, 1.0, 0.0, 1.0); plwind(0.0, 1.0, 0.0, 1.0); - plbox(To_C("bc"), 0.0, 0, To_C("bc"), 0.0, 0); + plbox("bc", 0.0, 0, "bc", 0.0, 0); plsvpa(50.0, 150.0, 50.0, 100.0); plwind(0.0, 1.0, 0.0, 1.0); - plbox(To_C("bc"), 0.0, 0, To_C("bc"), 0.0, 0); - plptex(0.5, 0.5, 1.0, 0.0, 0.5, To_C("BOX at (50,150,50,100)")); + plbox("bc", 0.0, 0, "bc", 0.0, 0); + plptex(0.5, 0.5, 1.0, 0.0, 0.5, "BOX at (50,150,50,100)"); plend; end x10a; Modified: trunk/examples/ada/x12a.adb =================================================================== --- trunk/examples/ada/x12a.adb 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/x12a.adb 2007-07-02 01:33:25 UTC (rev 7737) @@ -26,18 +26,15 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - Interfaces.C, - PLplotThin, - PLplot; + PLplot_Traditional, + PLplot_Thin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - Interfaces.C, - PLplotThin, - PLplot; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -49,10 +46,10 @@ ------------------------------------------------------------------------------ procedure x12a is - y0 : Real_Vector (0 .. 9); + y0 : PLplot_Thin.Real_Vector (0 .. 9); procedure plfbox (x0, y0 : Long_Float) is - x, y : Real_Vector (0 .. 3); + x, y : PLplot_Thin.Real_Vector (0 ..3); begin x(0) := x0; y(0) := 0.0; @@ -66,25 +63,25 @@ x(3) := x0 + 1.0; y(3) := 0.0; - plfill(x'Length, x, y); + plfill(x, y); plcol0(1); pllsty(1); - plline(x'Length, x, y); + plline(x, y); end plfbox; begin -- Parse and process command line arguments. - plparseopts(PL_PARSE_FULL); - + plparseopts(PLplot_Thin.PL_PARSE_FULL); + -- Initialize plplot. plinit; - pladv(0); + pladv(Next_Subpage); plvsta; plwind(1980.0, 1990.0, 0.0, 35.0); - plbox(To_C("bc"), 1.0, 0, To_C("bcnv"), 10.0, 0); + plbox("bc", 1.0, 0, "bcnv", 10.0, 0); plcol0(2); - pllab(To_C("Year"), To_C("Widget Sales (millions)"), To_C("#frPLplot Example 12")); + pllab("Year", "Widget Sales (millions)", "#frPLplot Example 12"); y0(0) := 5.0; y0(1) := 15.0; @@ -97,16 +94,14 @@ y0(8) := 12.0; y0(9) := 3.0; - for i in y0'Range loop + for i in y0'range loop plcol0(i + 1); plpsty(0); - plfbox(1980.0 + Long_Float(i), y0(i)); - plptex(Long_Float(1980 + i) + 0.5, (y0(i) + 1.0), 1.0, 0.0, 0.5, - To_C(Trim(Integer'image(Integer(y0(i))), Left))); - plmtex(To_C("b"), 1.0, (Long_Float(i + 1) * 0.1 - 0.05), 0.5, - To_C(Trim(Integer'image((1980 + i)), Left))); + plfbox((1980.0 + Long_Float(i)), y0(i)); + plptex(1980.0 + Long_Float(i) + 0.5, y0(i) + 1.0, 1.0, 0.0, 0.5, Trim(Integer'image(Integer(y0(i))), Left)); + plmtex("b", 1.0, (Long_Float(i) + 1.0) * 0.1 - 0.05, 0.5, Trim(Integer'image(1980 + i), Left)); end loop; - -- Don't forget to call plend() to finish off! + -- Don't forget to call plend to finish off! plend; end x12a; Modified: trunk/examples/ada/xthick01a.adb =================================================================== --- trunk/examples/ada/xthick01a.adb 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/xthick01a.adb 2007-07-02 01:33:25 UTC (rev 7737) @@ -24,22 +24,20 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, PLplot, - PlplotThin; + PLplot_Thin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Strings.Bounded, PLplot, - PlplotThin; + PLplot_Thin; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; -procedure xt01a is +procedure xthick01a is xs, ys : Real_Vector (0 .. 5); xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; @@ -156,7 +154,7 @@ Put_Line("PLplot library version: " & Get_Version_Number); -- Initialize plplot - Initialize_Plotter; + Initialize_PLplot; -- Set up the data -- Original case @@ -179,6 +177,6 @@ plot2; plot3; - -- Don't forget to call PLEND to finish off! - Plot_End; -end xt01a; + -- Don't forget to call End_PLplot to finish off! + End_PLplot; +end xthick01a; Modified: trunk/examples/ada/xthick12a.adb =================================================================== --- trunk/examples/ada/xthick12a.adb 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/examples/ada/xthick12a.adb 2007-07-02 01:33:25 UTC (rev 7737) @@ -26,7 +26,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplotThin, + PLplot_Thin, PLplot; use Ada.Text_IO, @@ -34,7 +34,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplotThin, + PLplot_Thin, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -46,7 +46,7 @@ -- unavailable, pattern fill is used instead (automatic). ------------------------------------------------------------------------------ -procedure xt12a is +procedure xthick12a is y0 : Real_Vector (0 .. 9); procedure plfbox (x0, y0 : Long_Float) is @@ -103,6 +103,6 @@ Write_Text_Viewport("b", 1.0, (Long_Float(i) + 1.0) * 0.1 - 0.05, 0.5, Trim(Integer'image(1980 + i), Left)); end loop; - -- Don't forget to call Plot_End to finish off! - Plot_End; -end xt12a; + -- Don't forget to call End_PLplot to finish off! + End_PLplot; +end xthick12a; Modified: trunk/test/test_ada.sh.in =================================================================== --- trunk/test/test_ada.sh.in 2007-07-02 01:27:04 UTC (rev 7736) +++ trunk/test/test_ada.sh.in 2007-07-02 01:33:25 UTC (rev 7737) @@ -27,6 +27,6 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in t01 01 10 12 t12; do +for index in 01 10 12 thick01 thick10 thick12; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options done This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-03 13:58:38
|
Revision: 7741 http://plplot.svn.sourceforge.net/plplot/?rev=7741&view=rev Author: airwin Date: 2007-07-03 06:58:40 -0700 (Tue, 03 Jul 2007) Log Message: ----------- AWI for Jerry Bauck Modified all Ada bindings so that user programs (and thus the PLplot examples) no longer need to express a dependence on the thin binding. Thus, user programs and examples no longer need to "with" or "use" PLplot_Thin, and the namespace collision described in the last patch no longer exists (for the user). Moved some constant declarations out of the thin binding into the other bindings to improve visibility for the user and to remove the need to reference PLplot_Thin. There is now some duplication between the higher-level bindings PLplot and PLplot_Traditional and the lower-level PLplot_Thin in these constants, but the user doesn't see the duplication since there is no need to look at PLplot_Thin. Added two new files to the bindings directory, plplot_auxiliary.adb and plplot_auxiliary.ads. This was necessary in order to make the PLplot_Thin bindings disappear to the user. These files contain a few basic declarations used by all of the bindings (which were formerly exported by PLplot_Thin) and some utility procedures used by several of the examples. Modified Paths: -------------- trunk/bindings/ada/CMakeLists.txt trunk/bindings/ada/plplot.adb trunk/bindings/ada/plplot.ads trunk/bindings/ada/plplot_thin.adb trunk/bindings/ada/plplot_thin.ads trunk/bindings/ada/plplot_traditional.adb trunk/bindings/ada/plplot_traditional.ads trunk/examples/ada/x01a.adb trunk/examples/ada/x10a.adb trunk/examples/ada/x12a.adb trunk/examples/ada/xthick01a.adb trunk/examples/ada/xthick10a.adb trunk/examples/ada/xthick12a.adb Added Paths: ----------- trunk/bindings/ada/plplot_auxiliary.adb trunk/bindings/ada/plplot_auxiliary.ads Modified: trunk/bindings/ada/CMakeLists.txt =================================================================== --- trunk/bindings/ada/CMakeLists.txt 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/CMakeLists.txt 2007-07-03 13:58:40 UTC (rev 7741) @@ -27,6 +27,8 @@ ${CMAKE_CURRENT_SOURCE_DIR}/plplot_thin.ads ${CMAKE_CURRENT_SOURCE_DIR}/plplot_traditional.adb ${CMAKE_CURRENT_SOURCE_DIR}/plplot_traditional.ads + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_auxiliary.adb + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_auxiliary.ads ) add_library(plplotada${LIB_TAG} ${plplotada${LIB_TAG}_LIB_SRCS}) Modified: trunk/bindings/ada/plplot.adb =================================================================== --- trunk/bindings/ada/plplot.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -1,5 +1,6 @@ with PLplot_Thin, + PLplot_Auxiliary, Ada.Text_IO, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Unbounded, @@ -12,6 +13,7 @@ Interfaces.C; use PLplot_Thin, + PLplot_Auxiliary, Ada.Text_IO, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Unbounded, Modified: trunk/bindings/ada/plplot.ads =================================================================== --- trunk/bindings/ada/plplot.ads 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot.ads 2007-07-03 13:58:40 UTC (rev 7741) @@ -1,11 +1,13 @@ with PLplot_Thin, + PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, + PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -17,7 +19,7 @@ -------------------------------------------------------------------------------- -- Types and constants for thick binding -- -------------------------------------------------------------------------------- - + -- Default dummy arrays for various plotters which take multiple inputs. subtype Length_One_Real_Vector is Real_Vector(1..1); Dont_Plot_This : Length_One_Real_Vector := (1..1 => 0.0); @@ -131,19 +133,92 @@ subtype Fill_Pattern_Type is Integer range 0..7; -- Guessing; not documented -- Modes for parsing command line arguments. - Parse_Full : constant Parse_Mode_Type := 1; - Parse_Quiet : constant Parse_Mode_Type := 2; - Parse_No_Delete : constant Parse_Mode_Type := 4; - Parse_Show_All : constant Parse_Mode_Type := 8; - Parse_No_Program : constant Parse_Mode_Type := 32; - Parse_No_Dash : constant Parse_Mode_Type := 64; - Parse_Skip : constant Parse_Mode_Type := 128; + Parse_Partial : constant Parse_Mode_Type := 0; -- For backward compatibility + Parse_Full : constant Parse_Mode_Type := 1; -- Process fully & exit if error + Parse_Quiet : constant Parse_Mode_Type := 2; -- Don't issue messages + Parse_No_Delete : constant Parse_Mode_Type := 4; -- Don't delete options after processing + Parse_Show_All : constant Parse_Mode_Type := 8; -- Show invisible options + Parse_Override : constant Parse_Mode_Type := 16; -- Obsolete + Parse_No_Program : constant Parse_Mode_Type := 32; -- Program name NOT in *argv[0].. + Parse_No_Dash : constant Parse_Mode_Type := 64; -- Set if leading dash NOT required + Parse_Skip : constant Parse_Mode_Type := 128; -- Skip over unrecognized args -- Descriptions of map outlines for continents, countries, and US states. type Map_Type is (Continents, USA_and_States, Continents_and_Countries, USA_States_and_Continents); - + -- definitions for the opt argument in plot3dc() and plsurf3d() + -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! + No_3D_Options : constant Integer := 0; -- None of the options + Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis + Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis + Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis + Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude + Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane + Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane + Surface_Contour : constant Integer := 32; -- draw contour plot at surface + Sides : constant Integer := 64; -- draw sides + Facets : constant Integer := 128; -- draw outline for each square that makes up the surface + Meshed : constant Integer := 256; -- draw mesh + + subtype Gridding_Algorithm_Type is Integer range 1..6; + + -- Type of gridding algorithm for plgriddata() + -- "Long form" gridding algorithm names + Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA + Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI + Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI + Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW + Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI + Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW + + -------------------------------------------------------------------------------- +-- Constants copied from PLplot_Thin.ads so that it doesn't have to be seen. -- +-- These are replicated herein with other names. Either name may be used, -- +-- e.g., Parse_Full is the same as PL_PARSE_FULL. -- +-------------------------------------------------------------------------------- + + -- Modes for parsing command line arguments (redux). + PL_PARSE_PARTIAL : constant Parse_Mode_Type := 16#0000#; -- For backward compatibility + PL_PARSE_FULL : constant Parse_Mode_Type := 16#0001#; -- Process fully & exit if error + PL_PARSE_QUIET : constant Parse_Mode_Type := 16#0002#; -- Don't issue messages + PL_PARSE_NODELETE : constant Parse_Mode_Type := 16#0004#; -- Don't delete options after processing + PL_PARSE_SHOWALL : constant Parse_Mode_Type := 16#0008#; -- Show invisible options + PL_PARSE_OVERRIDE : constant Parse_Mode_Type := 16#0010#; -- Obsolete + PL_PARSE_NOPROGRAM : constant Parse_Mode_Type := 16#0020#; -- Program name NOT in *argv[0].. + PL_PARSE_NODASH : constant Parse_Mode_Type := 16#0040#; -- Set if leading dash NOT required + PL_PARSE_SKIP : constant Parse_Mode_Type := 16#0080#; -- Skip over unrecognized args + + -- definitions for the opt argument in plot3dc() and plsurf3d() + DRAW_LINEX : constant Integer := 1; -- draw lines parallel to the X axis + DRAW_LINEY : constant Integer := 2; -- draw lines parallel to the Y axis + DRAW_LINEXY : constant Integer := 3; -- draw lines parallel to both the X and Y axis + MAG_COLOR : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude + BASE_CONT : constant Integer := 8; -- draw contour plot at bottom xy plane + TOP_CONT : constant Integer := 16; -- draw contour plot at top xy plane + SURF_CONT : constant Integer := 32; -- draw contour plot at surface + DRAW_SIDES : constant Integer := 64; -- draw sides + FACETED : constant Integer := 128; -- draw outline for each square that makes up the surface + MESH : constant Integer := 256; -- draw mesh + + -- Type of gridding algorithm for plgriddata() + GRID_CSA : constant Gridding_Algorithm_Type := 1; + GRID_DTLI : constant Gridding_Algorithm_Type := 2; + GRID_NNI : constant Gridding_Algorithm_Type := 3; + GRID_NNIDW : constant Gridding_Algorithm_Type := 4; + GRID_NNLI : constant Gridding_Algorithm_Type := 5; + GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; + + +-------------------------------------------------------------------------------- +-- A convenient string function -- +-------------------------------------------------------------------------------- + + -- Short name for To_Unbounded_String + function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; + + +-------------------------------------------------------------------------------- -- High-Level subroutines for thick binding -- -------------------------------------------------------------------------------- @@ -685,25 +760,25 @@ procedure Use_Graphics_Mode; - -- Gridding algorithm - subtype Gridding_Algorithm_Type is Integer range 1..6; - - -- Type of gridding algorithm for plgriddata() - -- "Long form" gridding algorithm names - Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA - Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI - Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI - Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW - Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI - Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW - - -- "Short form" gridding algorithm names - GRID_CSA : constant Gridding_Algorithm_Type := 1; - GRID_DTLI : constant Gridding_Algorithm_Type := 2; - GRID_NNI : constant Gridding_Algorithm_Type := 3; - GRID_NNIDW : constant Gridding_Algorithm_Type := 4; - GRID_NNLI : constant Gridding_Algorithm_Type := 5; - GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; +----- -- Gridding algorithm +----- subtype Gridding_Algorithm_Type is Integer range 1..6; +----- +----- -- Type of gridding algorithm for plgriddata() +----- -- "Long form" gridding algorithm names +----- Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA +----- Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI +----- Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI +----- Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW +----- Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI +----- Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW +----- +----- -- "Short form" gridding algorithm names +----- GRID_CSA : constant Gridding_Algorithm_Type := 1; +----- GRID_DTLI : constant Gridding_Algorithm_Type := 2; +----- GRID_NNI : constant Gridding_Algorithm_Type := 3; +----- GRID_NNIDW : constant Gridding_Algorithm_Type := 4; +----- GRID_NNLI : constant Gridding_Algorithm_Type := 5; +----- GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; -- Grid irregularly sampled data. @@ -909,21 +984,20 @@ indexymin, indexymax : Integer_Array_1D); -- levels at which to draw contours - -- definitions for the opt argument in plot3dc() and plsurf3d() - -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! +----- -- definitions for the opt argument in plot3dc() and plsurf3d() +----- -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! +----- No_3D_Options : constant Integer := 0; -- None of the options +----- Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis +----- Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis +----- Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis +----- Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude +----- Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane +----- Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane +----- Surface_Contour : constant Integer := 32; -- draw contour plot at surface +----- Sides : constant Integer := 64; -- draw sides +----- Facets : constant Integer := 128; -- draw outline for each square that makes up the surface +----- Meshed : constant Integer := 256; -- draw mesh - No_3D_Options : constant Integer := 0; -- None of the options - Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis - Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis - Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis - Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude - Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane - Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane - Surface_Contour : constant Integer := 32; -- draw contour plot at surface - Sides : constant Integer := 64; -- draw sides - Facets : constant Integer := 128; -- draw outline for each square that makes up the surface - Meshed : constant Integer := 256; -- draw mesh - -- valid options for plot3dc(): -- -- DRAW_SIDES, BASE_CONT, TOP_CONT (not yet), Added: trunk/bindings/ada/plplot_auxiliary.adb =================================================================== --- trunk/bindings/ada/plplot_auxiliary.adb (rev 0) +++ trunk/bindings/ada/plplot_auxiliary.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -0,0 +1,88 @@ +package body PLplot_Auxiliary is + +-------------------------------------------------------------------------------- +-- Utility procedures useful in compiling the examples -- +-------------------------------------------------------------------------------- + + -- Find minimum in a 1D array. + function Vector_Min(x : Real_Vector) return Long_Float is + Result : Long_Float; + begin + Result := x(x'First); + for i in x'First+1..x'Last loop + Result := Long_Float'min(Result, x(i)); + end loop; + return Result; + end Vector_Min; + + + -- Find minimum and its location in a 1D array. + procedure Vector_Min(x : Real_Vector; + The_Minimum : out Long_Float; + Location_Of_Min : out Integer) is + begin + The_Minimum := x(x'First); + Location_Of_Min := x'First; + for i in x'First+1..x'Last loop + if x(i) < x(i - 1) then -- Finds the first of repeated mins. + The_Minimum := x(i); + Location_Of_Min := i; + end if; + end loop; + end Vector_Min; + + + -- Find maximum in a 1D array. + function Vector_Max(x : Real_Vector) return Long_Float is + Result : Long_Float; + begin + Result := x(x'First); + for i in x'First+1..x'Last loop + Result := Long_Float'max(Result, x(i)); + end loop; + return Result; + end Vector_Max; + + + -- Find maximum and its location in a 1D array. + procedure Vector_Max(x : Real_Vector; + The_Maximum : out Long_Float; + Location_Of_Max : out Integer) is + begin + The_Maximum := x(x'First); + Location_Of_Max := x'First; + for i in x'First+1..x'Last loop + if x(i) > x(i - 1) then -- Finds the first of repeated maxes. + The_Maximum := x(i); + Location_Of_Max := i; + end if; + end loop; + end Vector_Max; + + + -- Find minimum in a 2D array. + function Matrix_Min(x : Real_Matrix) return Long_Float is + Result : Long_Float := Long_Float'large; + begin + for j in x'First(2)..x'Last(2) loop + for i in x'First(1)..x'Last(1) loop + Result := Long_Float'Min(Result, x(i, j)); + end loop; + end loop; + return Result; + end Matrix_Min; + + + -- Find maximum in a 2D array. + function Matrix_Max(x : Real_Matrix) return Long_Float is + Result : Long_Float := Long_Float'small; + begin + for j in x'First(2)..x'Last(2) loop + for i in x'First(1)..x'Last(1) loop + Result := Long_Float'Max(Result, x(i, j)); + end loop; + end loop; + return Result; + end Matrix_Max; + +end PLplot_Auxiliary; Property changes on: trunk/bindings/ada/plplot_auxiliary.adb ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/bindings/ada/plplot_auxiliary.ads =================================================================== --- trunk/bindings/ada/plplot_auxiliary.ads (rev 0) +++ trunk/bindings/ada/plplot_auxiliary.ads 2007-07-03 13:58:40 UTC (rev 7741) @@ -0,0 +1,70 @@ +with + Ada.Strings.Bounded, + Ada.Strings.Unbounded; + +use + Ada.Strings.Bounded, + Ada.Strings.Unbounded; + +package PLplot_Auxiliary is + +-------------------------------------------------------------------------------- +-- Utility type declarations used by the bindings -- +-------------------------------------------------------------------------------- + + -- UN-COMMENT THESE TWO LINES IF YOUR COMPILER DOES NOT INCLUDE THESE + -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. + + -- COMMENT THESE TWO LINES IF YOUR COMPILER DECLARES SIMILAR TYPES (E.G. IT + -- IS ADA 2005 WITH ANNEX G.3) IN THAT CASE, YOU WILL NEED TO ADD A LINE + -- LIKE THIS SOMEWHERE: + -- with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; + -- ALSO, YOU WILL NEED TO MAKE A SINGLE-LINE EDIT TO THESE BINDING FILES: + -- plplot.ads, plplot.adb, plplot_traditional.ads, plplot_traditional.adb, + -- and plplot_thin.ads. + -- + type Real_Vector is array (Integer range <>) of Long_Float; + type Real_Matrix is array (Integer range <>, Integer range <>) of Long_Float; + + -- Other array types for the bindings. + type Boolean_Array_1D is array (Integer range <>) of Boolean; + type Integer_Array_1D is array (Integer range <>) of Integer; + + +-------------------------------------------------------------------------------- +-- Utility procedures useful in compiling the examples -- +-------------------------------------------------------------------------------- + + -- Find minimum in a 1D array. + function Vector_Min(x : Real_Vector) return Long_Float; + + -- Find minimum and its location in a 1D array. + procedure Vector_Min(x : Real_Vector; + The_Minimum : out Long_Float; + Location_Of_Min : out Integer); + + -- Find maximum in a 1D array. + function Vector_Max(x : Real_Vector) return Long_Float; + + -- Find maximum and its location in a 1D array. + procedure Vector_Max(x : Real_Vector; + The_Maximum : out Long_Float; + Location_Of_Max : out Integer); + + -- Find minimum in a 2D array. + function Matrix_Min(x : Real_Matrix) return Long_Float; + + -- Find maximum in a 2D array. + function Matrix_Max(x : Real_Matrix) return Long_Float; + + +-------------------------------------------------------------------------------- +-- String things useful in compiling the examples -- +-------------------------------------------------------------------------------- + + -- Convenient string of length 80 + package Bounded_String_80 is + new Ada.Strings.Bounded.Generic_Bounded_Length(80); + subtype String_80 is Bounded_String_80.Bounded_String; + +end PLplot_Auxiliary; \ No newline at end of file Property changes on: trunk/bindings/ada/plplot_auxiliary.ads ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/bindings/ada/plplot_thin.adb =================================================================== --- trunk/bindings/ada/plplot_thin.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot_thin.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -1,90 +1,96 @@ -with Ada.Text_IO; -use Ada.Text_IO; +with + PLplot_Auxiliary; +use + PLplot_Auxiliary; package body PLplot_Thin is - -- Find minimum in a 1D array. - function Vector_Min(x : Real_Vector) return Long_Float is - Result : Long_Float; - begin - Result := x(x'First); - for i in x'First+1..x'Last loop - Result := Long_Float'min(Result, x(i)); - end loop; - return Result; - end Vector_Min; - +-------------------------------------------------------------------------------- +-- UTILITY PROCEDURE DECLARATIONS -- +-------------------------------------------------------------------------------- - -- Find minimum and its location in a 1D array. - procedure Vector_Min(x : Real_Vector; - The_Minimum : out Long_Float; - Location_Of_Min : out Integer) is - begin - The_Minimum := x(x'First); - Location_Of_Min := x'First; - for i in x'First+1..x'Last loop - if x(i) < x(i - 1) then -- Finds the first of repeated mins. - The_Minimum := x(i); - Location_Of_Min := i; - end if; - end loop; - end Vector_Min; - - - -- Find maximum in a 1D array. - function Vector_Max(x : Real_Vector) return Long_Float is - Result : Long_Float; - begin - Result := x(x'First); - for i in x'First+1..x'Last loop - Result := Long_Float'max(Result, x(i)); - end loop; - return Result; - end Vector_Max; +----- -- Find minimum in a 1D array. +----- function Vector_Min(x : Real_Vector) return Long_Float is +----- Result : Long_Float; +----- begin +----- Result := x(x'First); +----- for i in x'First+1..x'Last loop +----- Result := Long_Float'min(Result, x(i)); +----- end loop; +----- return Result; +----- end Vector_Min; +----- +----- +----- -- Find minimum and its location in a 1D array. +----- procedure Vector_Min(x : Real_Vector; +----- The_Minimum : out Long_Float; +----- Location_Of_Min : out Integer) is +----- begin +----- The_Minimum := x(x'First); +----- Location_Of_Min := x'First; +----- for i in x'First+1..x'Last loop +----- if x(i) < x(i - 1) then -- Finds the first of repeated mins. +----- The_Minimum := x(i); +----- Location_Of_Min := i; +----- end if; +----- end loop; +----- end Vector_Min; +----- +----- +----- -- Find maximum in a 1D array. +----- function Vector_Max(x : Real_Vector) return Long_Float is +----- Result : Long_Float; +----- begin +----- Result := x(x'First); +----- for i in x'First+1..x'Last loop +----- Result := Long_Float'max(Result, x(i)); +----- end loop; +----- return Result; +----- end Vector_Max; +----- +----- +----- -- Find maximum and its location in a 1D array. +----- procedure Vector_Max(x : Real_Vector; +----- The_Maximum : out Long_Float; +----- Location_Of_Max : out Integer) is +----- begin +----- The_Maximum := x(x'First); +----- Location_Of_Max := x'First; +----- for i in x'First+1..x'Last loop +----- if x(i) > x(i - 1) then -- Finds the first of repeated maxes. +----- The_Maximum := x(i); +----- Location_Of_Max := i; +----- end if; +----- end loop; +----- end Vector_Max; +----- +----- +----- -- Find minimum in a 2D array. +----- function Matrix_Min(x : Real_Matrix) return Long_Float is +----- Result : Long_Float := Long_Float'large; +----- begin +----- for j in x'First(2)..x'Last(2) loop +----- for i in x'First(1)..x'Last(1) loop +----- Result := Long_Float'Min(Result, x(i, j)); +----- end loop; +----- end loop; +----- return Result; +----- end Matrix_Min; +----- +----- +----- -- Find maximum in a 2D array. +----- function Matrix_Max(x : Real_Matrix) return Long_Float is +----- Result : Long_Float := Long_Float'small; +----- begin +----- for j in x'First(2)..x'Last(2) loop +----- for i in x'First(1)..x'Last(1) loop +----- Result := Long_Float'Max(Result, x(i, j)); +----- end loop; +----- end loop; +----- return Result; +----- end Matrix_Max; - -- Find maximum and its location in a 1D array. - procedure Vector_Max(x : Real_Vector; - The_Maximum : out Long_Float; - Location_Of_Max : out Integer) is - begin - The_Maximum := x(x'First); - Location_Of_Max := x'First; - for i in x'First+1..x'Last loop - if x(i) > x(i - 1) then -- Finds the first of repeated maxes. - The_Maximum := x(i); - Location_Of_Max := i; - end if; - end loop; - end Vector_Max; - - - -- Find minimum in a 2D array. - function Matrix_Min(x : Real_Matrix) return Long_Float is - Result : Long_Float := Long_Float'large; - begin - for j in x'First(2)..x'Last(2) loop - for i in x'First(1)..x'Last(1) loop - Result := Long_Float'Min(Result, x(i, j)); - end loop; - end loop; - return Result; - end Matrix_Min; - - - -- Find maximum in a 2D array. - function Matrix_Max(x : Real_Matrix) return Long_Float is - Result : Long_Float := Long_Float'small; - begin - for j in x'First(2)..x'Last(2) loop - for i in x'First(1)..x'Last(1) loop - Result := Long_Float'Max(Result, x(i, j)); - end loop; - end loop; - return Result; - end Matrix_Max; - - -------------------------------------------------------------------------------- -- Utility for passing matrices to C -- -------------------------------------------------------------------------------- Modified: trunk/bindings/ada/plplot_thin.ads =================================================================== --- trunk/bindings/ada/plplot_thin.ads 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot_thin.ads 2007-07-03 13:58:40 UTC (rev 7741) @@ -33,6 +33,7 @@ -- this is right. with + PLplot_Auxiliary, Interfaces.C, Interfaces.C.Pointers, System, @@ -40,6 +41,7 @@ Ada.Strings.Bounded, Ada.Strings.Unbounded; use + PLplot_Auxiliary, Interfaces.C, Ada.Text_IO, Ada.Strings.Bounded, @@ -57,13 +59,13 @@ subtype PLBOOL is Integer range PLfalse..PLtrue; type PLUNICODE is range 0..2**32-1; - type Boolean_Array_1D is array (Integer range <>) of Boolean; - type Integer_Array_1D is array (Integer range <>) of Integer; +----- type Boolean_Array_1D is array (Integer range <>) of Boolean; +----- type Integer_Array_1D is array (Integer range <>) of Integer; -- UN-COMMENT THESE TWO LINES IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. - type Real_Vector is array (Integer range <>) of Long_Float; - type Real_Matrix is array (Integer range <>, Integer range <>) of Long_Float; +----- type Real_Vector is array (Integer range <>) of Long_Float; +----- type Real_Matrix is array (Integer range <>, Integer range <>) of Long_Float; subtype PL_Integer_Array is Integer_Array_1D; subtype PL_Float_Array is Real_Vector; @@ -78,32 +80,32 @@ -------------------------------------------------------------------------------- --- PROCEDURE DECLARATIONS -- +-- UTILITY PROCEDURE DECLARATIONS -- -------------------------------------------------------------------------------- - -- Find minimum in a 1D array. - function Vector_Min(x : Real_Vector) return Long_Float; +----- -- Find minimum in a 1D array. +----- function Vector_Min(x : Real_Vector) return Long_Float; +----- +----- -- Find minimum and its location in a 1D array. +----- procedure Vector_Min(x : Real_Vector; +----- The_Minimum : out Long_Float; +----- Location_Of_Min : out Integer); +----- +----- -- Find maximum in a 1D array. +----- function Vector_Max(x : Real_Vector) return Long_Float; +----- +----- -- Find maximum and its location in a 1D array. +----- procedure Vector_Max(x : Real_Vector; +----- The_Maximum : out Long_Float; +----- Location_Of_Max : out Integer); +----- +----- -- Find minimum in a 2D array. +----- function Matrix_Min(x : Real_Matrix) return Long_Float; +----- +----- -- Find maximum in a 2D array. +----- function Matrix_Max(x : Real_Matrix) return Long_Float; - -- Find minimum and its location in a 1D array. - procedure Vector_Min(x : Real_Vector; - The_Minimum : out Long_Float; - Location_Of_Min : out Integer); - -- Find maximum in a 1D array. - function Vector_Max(x : Real_Vector) return Long_Float; - - -- Find maximum and its location in a 1D array. - procedure Vector_Max(x : Real_Vector; - The_Maximum : out Long_Float; - Location_Of_Max : out Integer); - - -- Find minimum in a 2D array. - function Matrix_Min(x : Real_Matrix) return Long_Float; - - -- Find maximum in a 2D array. - function Matrix_Max(x : Real_Matrix) return Long_Float; - - -------------------------------------------------------------------------------- -- Utility for passing matrices to C -- -------------------------------------------------------------------------------- @@ -115,15 +117,15 @@ -- Convenient string things -- -------------------------------------------------------------------------------- - -- Short name for To_Unbounded_String - function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; +----- -- Short name for To_Unbounded_String +----- function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; +----- +----- -- Convenient string of length 80 +----- package Bounded_String_80 is +----- new Ada.Strings.Bounded.Generic_Bounded_Length(80); +----- subtype String_80 is Bounded_String_80.Bounded_String; - -- Convenient string of length 80 - package Bounded_String_80 is - new Ada.Strings.Bounded.Generic_Bounded_Length(80); - subtype String_80 is Bounded_String_80.Bounded_String; - -------------------------------------------------------------------------------- -- PLplot-specific things -- -------------------------------------------------------------------------------- @@ -1285,7 +1287,7 @@ procedure - plshade1(a : Real_Matrix; nx : PLINT; ny : PLINT; defined : Mask_Function_Pointer_Type; + plshade1(a : PL_Float_Array_2D; nx : PLINT; ny : PLINT; defined : Mask_Function_Pointer_Type; left : PLFLT; right : PLFLT; bottom : PLFLT; top : PLFLT; shade_min : PLFLT; shade_max : PLFLT; sh_cmap : PLINT; sh_color : PLFLT; sh_width : PLINT; Modified: trunk/bindings/ada/plplot_traditional.adb =================================================================== --- trunk/bindings/ada/plplot_traditional.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot_traditional.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -1,5 +1,6 @@ with PLplot_Thin, + PLplot_Auxiliary, Ada.Text_IO, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Unbounded, @@ -12,6 +13,7 @@ Interfaces.C; use Ada.Text_IO, + PLplot_Auxiliary, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Unbounded, Interfaces.C; Modified: trunk/bindings/ada/plplot_traditional.ads =================================================================== --- trunk/bindings/ada/plplot_traditional.ads 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/bindings/ada/plplot_traditional.ads 2007-07-03 13:58:40 UTC (rev 7741) @@ -1,11 +1,13 @@ with PLplot_Thin, + PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, + PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -131,16 +133,89 @@ subtype Fill_Pattern_Type is Integer range 0..7; -- Guessing; not documented -- Modes for parsing command line arguments. - Parse_Full : constant Parse_Mode_Type := 1; - Parse_Quiet : constant Parse_Mode_Type := 2; - Parse_No_Delete : constant Parse_Mode_Type := 4; - Parse_Show_All : constant Parse_Mode_Type := 8; - Parse_No_Program : constant Parse_Mode_Type := 32; - Parse_No_Dash : constant Parse_Mode_Type := 64; - Parse_Skip : constant Parse_Mode_Type := 128; + Parse_Partial : constant Parse_Mode_Type := 0; -- For backward compatibility + Parse_Full : constant Parse_Mode_Type := 1; -- Process fully & exit if error + Parse_Quiet : constant Parse_Mode_Type := 2; -- Don't issue messages + Parse_No_Delete : constant Parse_Mode_Type := 4; -- Don't delete options after processing + Parse_Show_All : constant Parse_Mode_Type := 8; -- Show invisible options + Parse_Override : constant Parse_Mode_Type := 16; -- Obsolete + Parse_No_Program : constant Parse_Mode_Type := 32; -- Program name NOT in *argv[0].. + Parse_No_Dash : constant Parse_Mode_Type := 64; -- Set if leading dash NOT required + Parse_Skip : constant Parse_Mode_Type := 128; -- Skip over unrecognized args -- Descriptions of map outlines for continents, countries, and US states. type Map_Type is (Continents, USA_and_States, Continents_and_Countries, USA_States_and_Continents); + + -- definitions for the opt argument in plot3dc() and plsurf3d() + -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! + No_3D_Options : constant Integer := 0; -- None of the options + Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis + Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis + Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis + Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude + Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane + Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane + Surface_Contour : constant Integer := 32; -- draw contour plot at surface + Sides : constant Integer := 64; -- draw sides + Facets : constant Integer := 128; -- draw outline for each square that makes up the surface + Meshed : constant Integer := 256; -- draw mesh + + subtype Gridding_Algorithm_Type is Integer range 1..6; + + -- Type of gridding algorithm for plgriddata() + -- "Long form" gridding algorithm names + Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA + Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI + Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI + Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW + Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI + Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW + + +-------------------------------------------------------------------------------- +-- Constants copied from PLplot_Thin.ads so that it doesn't have to be seen. -- +-- These are replicated herein with other names. Either name may be used, -- +-- e.g., Parse_Full is the same as PL_PARSE_FULL. -- +-------------------------------------------------------------------------------- + + -- Modes for parsing command line arguments (redux). + PL_PARSE_PARTIAL : constant Parse_Mode_Type := 16#0000#; -- For backward compatibility + PL_PARSE_FULL : constant Parse_Mode_Type := 16#0001#; -- Process fully & exit if error + PL_PARSE_QUIET : constant Parse_Mode_Type := 16#0002#; -- Don't issue messages + PL_PARSE_NODELETE : constant Parse_Mode_Type := 16#0004#; -- Don't delete options after processing + PL_PARSE_SHOWALL : constant Parse_Mode_Type := 16#0008#; -- Show invisible options + PL_PARSE_OVERRIDE : constant Parse_Mode_Type := 16#0010#; -- Obsolete + PL_PARSE_NOPROGRAM : constant Parse_Mode_Type := 16#0020#; -- Program name NOT in *argv[0].. + PL_PARSE_NODASH : constant Parse_Mode_Type := 16#0040#; -- Set if leading dash NOT required + PL_PARSE_SKIP : constant Parse_Mode_Type := 16#0080#; -- Skip over unrecognized args + + -- definitions for the opt argument in plot3dc() and plsurf3d() + DRAW_LINEX : constant Integer := 1; -- draw lines parallel to the X axis + DRAW_LINEY : constant Integer := 2; -- draw lines parallel to the Y axis + DRAW_LINEXY : constant Integer := 3; -- draw lines parallel to both the X and Y axis + MAG_COLOR : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude + BASE_CONT : constant Integer := 8; -- draw contour plot at bottom xy plane + TOP_CONT : constant Integer := 16; -- draw contour plot at top xy plane + SURF_CONT : constant Integer := 32; -- draw contour plot at surface + DRAW_SIDES : constant Integer := 64; -- draw sides + FACETED : constant Integer := 128; -- draw outline for each square that makes up the surface + MESH : constant Integer := 256; -- draw mesh + + -- Type of gridding algorithm for plgriddata() + GRID_CSA : constant Gridding_Algorithm_Type := 1; + GRID_DTLI : constant Gridding_Algorithm_Type := 2; + GRID_NNI : constant Gridding_Algorithm_Type := 3; + GRID_NNIDW : constant Gridding_Algorithm_Type := 4; + GRID_NNLI : constant Gridding_Algorithm_Type := 5; + GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; + + +-------------------------------------------------------------------------------- +-- A convenient string function -- +-------------------------------------------------------------------------------- + + -- Short name for To_Unbounded_String + function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; -------------------------------------------------------------------------------- @@ -643,25 +718,25 @@ procedure plgra; - -- Gridding algorithm - subtype Gridding_Algorithm_Type is Integer range 1..6; - - -- Type of gridding algorithm for plgriddata() - -- "Long form" gridding algorithm names - Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA - Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI - Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI - Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW - Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI - Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW - - -- "Short form" gridding algorithm names - GRID_CSA : constant Gridding_Algorithm_Type := 1; - GRID_DTLI : constant Gridding_Algorithm_Type := 2; - GRID_NNI : constant Gridding_Algorithm_Type := 3; - GRID_NNIDW : constant Gridding_Algorithm_Type := 4; - GRID_NNLI : constant Gridding_Algorithm_Type := 5; - GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; +----- -- Gridding algorithm +----- subtype Gridding_Algorithm_Type is Integer range 1..6; +----- +----- -- Type of gridding algorithm for plgriddata() +----- -- "Long form" gridding algorithm names +----- Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA +----- Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI +----- Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI +----- Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW +----- Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI +----- Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW +----- +----- -- "Short form" gridding algorithm names +----- GRID_CSA : constant Gridding_Algorithm_Type := 1; +----- GRID_DTLI : constant Gridding_Algorithm_Type := 2; +----- GRID_NNI : constant Gridding_Algorithm_Type := 3; +----- GRID_NNIDW : constant Gridding_Algorithm_Type := 4; +----- GRID_NNLI : constant Gridding_Algorithm_Type := 5; +----- GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; -- Grid irregularly sampled data. @@ -838,21 +913,21 @@ indexymin, indexymax : Integer_Array_1D); -- levels at which to draw contours - -- definitions for the opt argument in plot3dc() and plsurf3d() - -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! +----- -- definitions for the opt argument in plot3dc() and plsurf3d() +----- -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! +----- +----- No_3D_Options : constant Integer := 0; -- None of the options +----- Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis +----- Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis +----- Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis +----- Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude +----- Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane +----- Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane +----- Surface_Contour : constant Integer := 32; -- draw contour plot at surface +----- Sides : constant Integer := 64; -- draw sides +----- Facets : constant Integer := 128; -- draw outline for each square that makes up the surface +----- Meshed : constant Integer := 256; -- draw mesh - No_3D_Options : constant Integer := 0; -- None of the options - Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis - Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis - Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis - Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude - Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane - Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane - Surface_Contour : constant Integer := 32; -- draw contour plot at surface - Sides : constant Integer := 64; -- draw sides - Facets : constant Integer := 128; -- draw outline for each square that makes up the surface - Meshed : constant Integer := 256; -- draw mesh - -- valid options for plot3dc(): -- -- DRAW_SIDES, BASE_CONT, TOP_CONT (not yet), Modified: trunk/examples/ada/x01a.adb =================================================================== --- trunk/examples/ada/x01a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/x01a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -25,27 +25,28 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot_Traditional, - PLplot_Thin; + PLplot_Auxiliary; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional; + PLplot_Traditional, + PLplot_Auxiliary; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; procedure x01a is - xs, ys : PLplot_Thin.Real_Vector (0 .. 5); + xs, ys : Real_Vector (0 .. 5); xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; - ver : PLplot_Thin.String_80; + ver : String_80; procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; - x, y : PLplot_Thin.Real_Vector (0 .. 59); + x, y : Real_Vector (0 .. 59); begin for i in x'Range loop x(i) := xoff + xscale * Long_Float(i + 1) / Long_Float(x'Length); @@ -81,7 +82,7 @@ procedure plot2 is - x, y : PLplot_Thin.Real_Vector (0 .. 99); + x, y : Real_Vector (0 .. 99); begin -- Set up the viewport and window using PLENV. The range in X is -2.0 to -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately @@ -106,9 +107,11 @@ plline(x, y); plwid(1); end plot2; + + procedure plot3 is - x, y : PLplot_Thin.Real_Vector (0 .. 100); - space1, mark1 : PLplot_Thin.Integer_Array_1D(1 .. 1) := (others => 1500); + x, y : Real_Vector (0 .. 100); + space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); begin pladv(Next_SubPage); @@ -147,7 +150,7 @@ plssub(2, 2); -- Parse and process command line arguments - plparseopts(PLplot_Thin.PL_PARSE_FULL); + plparseopts(PL_PARSE_FULL); -- Get version number, just for kicks Put_Line("PLplot library version: " & plgver); @@ -171,7 +174,7 @@ yoff := 0.0185; -- Do a plot - plsyax(Max_Digits => 5, Field_Digits => 0); + plsyax(5, 0); plot1; plot2; plot3; Modified: trunk/examples/ada/x10a.adb =================================================================== --- trunk/examples/ada/x10a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/x10a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -25,12 +25,13 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot_Traditional, - PLplot_Thin; + PLplot_Auxiliary; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional; + PLplot_Traditional, + PLplot_Auxiliary; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -39,7 +40,7 @@ procedure x10a is begin -- Parse and process command line arguments - plparseopts(PLplot_Thin.PL_PARSE_FULL); + plparseopts(PL_PARSE_FULL); -- Initialize plplot plinit; Modified: trunk/examples/ada/x12a.adb =================================================================== --- trunk/examples/ada/x12a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/x12a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -27,14 +27,16 @@ Ada.Strings, Ada.Strings.Fixed, PLplot_Traditional, - PLplot_Thin; + PLplot_Auxiliary; + use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional; + PLplot_Traditional, + PLplot_Auxiliary; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -46,10 +48,10 @@ ------------------------------------------------------------------------------ procedure x12a is - y0 : PLplot_Thin.Real_Vector (0 .. 9); + y0 : Real_Vector (0 .. 9); procedure plfbox (x0, y0 : Long_Float) is - x, y : PLplot_Thin.Real_Vector (0 ..3); + x, y : Real_Vector (0 ..3); begin x(0) := x0; y(0) := 0.0; @@ -71,7 +73,7 @@ begin -- Parse and process command line arguments. - plparseopts(PLplot_Thin.PL_PARSE_FULL); + plparseopts(PL_PARSE_FULL); -- Initialize plplot. plinit; Modified: trunk/examples/ada/xthick01a.adb =================================================================== --- trunk/examples/ada/xthick01a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/xthick01a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -25,13 +25,13 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot, - PLplot_Thin; + PLplot_Auxiliary; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot, - PLplot_Thin; + PLplot_Auxiliary; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -107,6 +107,8 @@ Draw_Curve(x, y); Set_Pen_Width(1); end plot2; + + procedure plot3 is x, y : Real_Vector (0 .. 100); space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); @@ -148,7 +150,7 @@ Set_Number_Of_Subpages(2, 2); -- Parse and process command line arguments - Parse_Command_Line_Arguments(PL_PARSE_FULL); + Parse_Command_Line_Arguments(Parse_Full); -- Get version number, just for kicks Put_Line("PLplot library version: " & Get_Version_Number); Modified: trunk/examples/ada/xthick10a.adb =================================================================== --- trunk/examples/ada/xthick10a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/xthick10a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -24,14 +24,12 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Thin; + PLplot; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Thin; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -40,7 +38,7 @@ procedure xthick10a is begin -- Parse and process command line arguments - Parse_Command_Line_Arguments(PL_PARSE_FULL); + Parse_Command_Line_Arguments(Parse_Full); -- Initialize plplot Initialize_PLplot; Modified: trunk/examples/ada/xthick12a.adb =================================================================== --- trunk/examples/ada/xthick12a.adb 2007-07-03 01:02:27 UTC (rev 7740) +++ trunk/examples/ada/xthick12a.adb 2007-07-03 13:58:40 UTC (rev 7741) @@ -26,7 +26,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Thin, + PLplot_Auxiliary, PLplot; use Ada.Text_IO, @@ -34,7 +34,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Thin, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -72,7 +72,7 @@ begin -- Parse and process command line arguments. - Parse_Command_Line_Arguments(PL_PARSE_FULL); + Parse_Command_Line_Arguments(Parse_Full); -- Initialize plplot. Initialize_PLplot; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-04 20:51:50
|
Revision: 7745 http://plplot.svn.sourceforge.net/plplot/?rev=7745&view=rev Author: airwin Date: 2007-07-04 13:51:51 -0700 (Wed, 04 Jul 2007) Log Message: ----------- AWI for Jerry Bauck. Changes: Added some color map 0 manipulation routines including a snapshot feature with restore capability and an automatic snapshot at initialization of the thick and traditional bindings so that default colors can be reset if they are later changed by the user. Also added functions to guarantee that when e.g. "Red" is called for from the default colors, you actually get red. Fixed a bug where 8-bit colors were used instead of 32-bit colors; plplot.h indicates that unsigned 8-bit values are stored in signed 32-bit quantities so that's now what Ada does, with no safety checks for out-of-range values. Changed some proc names in the thick binding especially wrt color stuff. Set_Color is now Set_Pen_Color. Modified Paths: -------------- trunk/bindings/ada/plplot.adb trunk/bindings/ada/plplot.ads trunk/bindings/ada/plplot_thin.adb trunk/bindings/ada/plplot_thin.ads trunk/bindings/ada/plplot_traditional.adb trunk/bindings/ada/plplot_traditional.ads trunk/examples/ada/xthick01a.adb trunk/examples/ada/xthick12a.adb Modified: trunk/bindings/ada/plplot.adb =================================================================== --- trunk/bindings/ada/plplot.adb 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot.adb 2007-07-04 20:51:51 UTC (rev 7745) @@ -176,13 +176,13 @@ -- Set environment and its color. - Set_Color(White); + Set_Pen_Color(White); -- Set_Environment_Clear_Subpage(x_Min, x_Max, y_Min, y_Max, Justification, Axis_Style); Set_Environment(x_Min, x_Max, y_Min, y_Max, Justification, Axis_Style); if x1'length /= 1 and y1'length /= 1 then Write_Labels(To_String(X_Labels(1)), To_String(Y_Labels(1)), To_String(Title_Labels(1))); - Set_Color(Colors(1)); + Set_Pen_Color(Colors(1)); --Set_Pen_Width(Line_Widths(1)); Select_Line_Style(Line_Styles(1)); Draw_Curve(x1, y1); @@ -190,7 +190,7 @@ if x2'length /= 1 and y2'length /= 1 then Write_Labels(To_String(X_Labels(2)), To_String(Y_Labels(2)), To_String(Title_Labels(2))); - Set_Color(Colors(2)); + Set_Pen_Color(Colors(2)); --Set_Pen_Width(Line_Widths(2)); Select_Line_Style(Line_Styles(2)); Draw_Curve(x2, y2); @@ -198,7 +198,7 @@ if x3'length /= 1 and y3'length /= 1 then Write_Labels(To_String(X_Labels(3)), To_String(Y_Labels(3)), To_String(Title_Labels(3))); - Set_Color(Colors(3)); + Set_Pen_Color(Colors(3)); --Set_Pen_Width(Line_Widths(3)); Select_Line_Style(Line_Styles(3)); Draw_Curve(x3, y3); @@ -206,7 +206,7 @@ if x4'length /= 1 and y4'length /= 1 then Write_Labels(To_String(X_Labels(4)), To_String(Y_Labels(4)), To_String(Title_Labels(4))); - Set_Color(Colors(4)); + Set_Pen_Color(Colors(4)); --Set_Pen_Width(Line_Widths(4)); Select_Line_Style(Line_Styles(4)); Draw_Curve(x4, y4); @@ -214,13 +214,13 @@ if x5'length /= 1 and y5'length /= 1 then Write_Labels(To_String(X_Labels(5)), To_String(Y_Labels(5)), To_String(Title_Labels(5))); - Set_Color(Colors(5)); + Set_Pen_Color(Colors(5)); --Set_Pen_Width(Line_Widths(5)); Select_Line_Style(Line_Styles(5)); Draw_Curve(x5, y5); end if; - Set_Color(White); + Set_Pen_Color(White); Set_Default_Pen_Width; Select_Line_Style(1); --solid end Multiplot_Pairs; @@ -559,11 +559,11 @@ Advance_To_Subpage(Next_Subpage); Set_Viewport_Normalized(0.1, 0.9, 0.1, 0.9); Set_Viewport_World(1.0, 35.0, 1.0, 46.0); -- fix - Set_Color(White); + Set_Pen_Color(White); Box_Around_Viewport("bcnst", 0.0, 0, "bcnstv", 0.0, 0); - Set_Color(White); + Set_Pen_Color(White); Write_Labels(X_Label, Y_Label, Title_Label); - Set_Color(White); + Set_Pen_Color(White); Set_Contour_Label_Parameters(0.008, 0.6, 0.1, True); Contour_Plot(z, z'First(1), z'Last(1), z'First(2), z'Last(2), Contour_Levels, Transformation_Procedure_Pointer, Transformation_Data); @@ -607,7 +607,7 @@ Quick_Set_Color_Map_1(Blue_Green_Red); -- no way to restore after doing this Advance_To_Subpage(Next_Subpage); - Set_Color(White); + Set_Pen_Color(White); Set_Viewport_Normalized(0.0, 1.0, 0.0, 1.0); Set_Viewport_World(-0.9, 0.9, -0.8, 1.5); Set_Up_3D(1.0, 1.0, 1.0, x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local, @@ -657,7 +657,7 @@ Quick_Set_Color_Map_1(Blue_Green_Red); -- no way to restore after doing this Advance_To_Subpage(Next_Subpage); - Set_Color(White); + Set_Pen_Color(White); Set_Viewport_Normalized(0.0, 1.0, 0.0, 1.0); Set_Viewport_World(-0.9, 0.9, -0.8, 1.5); Set_Up_3D(1.0, 1.0, 1.0, x_Min_Local, x_Max_Local, y_Min_Local, y_Max_Local, @@ -673,6 +673,142 @@ --------- Simple color table manipulatons ----- + -- Things for manipulating color map 0 -- + + -- Make a snapshot of color map 0 for possible later full or partial restoration. + -- This is automatically called at package initialization with results stored + -- in Default_Red_Components, Default_Green_Components, Default_Blue_Components. + procedure Make_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : out Integer_Array_1D) is + begin + for i in Reds'range loop + Get_Color_RGB(i, Reds(i), Greens(i), Blues(i)); + end loop; + end Make_Snapshot_Of_Color_Map_0; + + + -- Restore an arbitray snapshot of color map 0. + procedure Restore_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : Integer_Array_1D) is + begin + Set_Color_Map_0(Reds, Greens, Blues); + end Restore_Snapshot_Of_Color_Map_0; + + + -- Restore the default colors of color map 0 taken as a snapshot at initialization. + procedure Restore_Default_Snapshot_Of_Color_Map_0 is + begin + Set_Number_Of_Colors_Map_0(Number_Of_Default_Colors); + Set_Color_Map_0(Default_Red_Components, Default_Green_Components, Default_Blue_Components); + end Restore_Default_Snapshot_Of_Color_Map_0; + + + -- Functions which correspond to the default colors of color map 0. Calling + -- one of these (1) resets the corresponding slot in color map 0 to its + -- default value, and (2) returns the correct integer value for the default + -- color specified. Thus, using Set_Pen_Color(Reset_Red) instead of + -- Set_Pen_Color(Red) guarantees that the color will be set to Red even if + -- there have been prior manipulations of color 1. + + function Reset_Black return Integer is + begin + Set_One_Color_Map_0(0, Default_Red_Components(0), Default_Green_Components(0), Default_Blue_Components(0)); + return 0; + end Reset_Black; + + function Reset_Red return Integer is + begin + Set_One_Color_Map_0(1, Default_Red_Components(1), Default_Green_Components(1), Default_Blue_Components(1)); + return 1; + end Reset_Red; + + function Reset_Yellow return Integer is + begin + Set_One_Color_Map_0(2, Default_Red_Components(2), Default_Green_Components(2), Default_Blue_Components(2)); + return 2; + end Reset_Yellow; + + function Reset_Green return Integer is + begin + Set_One_Color_Map_0(3, Default_Red_Components(3), Default_Green_Components(3), Default_Blue_Components(3)); + return 3; + end Reset_Green; + + function Reset_Aquamarine return Integer is + begin + Set_One_Color_Map_0(4, Default_Red_Components(4), Default_Green_Components(4), Default_Blue_Components(4)); + return 4; + end Reset_Aquamarine; + + function Reset_Pink return Integer is + begin + Set_One_Color_Map_0(5, Default_Red_Components(5), Default_Green_Components(5), Default_Blue_Components(5)); + return 5; + end Reset_Pink; + + function Reset_Wheat return Integer is + begin + Set_One_Color_Map_0(6, Default_Red_Components(6), Default_Green_Components(6), Default_Blue_Components(6)); + return 6; + end Reset_Wheat; + + function Reset_Grey return Integer is + begin + Set_One_Color_Map_0(7, Default_Red_Components(7), Default_Green_Components(7), Default_Blue_Components(7)); + return 7; + end Reset_Grey; + + function Reset_Brown return Integer is + begin + Set_One_Color_Map_0(8, Default_Red_Components(8), Default_Green_Components(8), Default_Blue_Components(8)); + return 8; + end Reset_Brown; + + function Reset_Blue return Integer is + begin + Set_One_Color_Map_0(9, Default_Red_Components(9), Default_Green_Components(9), Default_Blue_Components(9)); + return 9; + end Reset_Blue; + + function Reset_BlueViolet return Integer is + begin + Set_One_Color_Map_0(10, Default_Red_Components(10), Default_Green_Components(10), Default_Blue_Components(10)); + return 10; + end Reset_BlueViolet; + + function Reset_Cyan return Integer is + begin + Set_One_Color_Map_0(11, Default_Red_Components(11), Default_Green_Components(11), Default_Blue_Components(11)); + return 11; + end Reset_Cyan; + + function Reset_Turquoise return Integer is + begin + Set_One_Color_Map_0(12, Default_Red_Components(12), Default_Green_Components(12), Default_Blue_Components(12)); + return 12; + end Reset_Turquoise; + + function Reset_Magenta return Integer is + begin + Set_One_Color_Map_0(13, Default_Red_Components(13), Default_Green_Components(13), Default_Blue_Components(13)); + return 13; + end Reset_Magenta; + + function Reset_Salmon return Integer is + begin + Set_One_Color_Map_0(14, Default_Red_Components(14), Default_Green_Components(14), Default_Blue_Components(14)); + return 14; + end Reset_Salmon; + + function Reset_White return Integer is + begin + Set_One_Color_Map_0(15, Default_Red_Components(15), Default_Green_Components(15), Default_Blue_Components(15)); + return 15; + end Reset_White; + + + -- Things for manipulating color map 1 -- + -- Quick application of pre-fabricated color schemes to color map 1. procedure Quick_Set_Color_Map_1(Color_Theme : Color_Themes_For_Map_1_Type) is @@ -1082,10 +1218,10 @@ -- Set color, map 0. Argument is integer between 0 and 15. -- plcol0 - procedure Set_Color(A_Color : Plot_Color_Type) is + procedure Set_Pen_Color(A_Color : Plot_Color_Type) is begin plcol0(A_Color); - end Set_Color; + end Set_Pen_Color; -- Set color, map 1. Argument is a float between 0. and 1. @@ -1337,7 +1473,7 @@ -- plgcol0 procedure Get_Color_RGB (Color_Index : Integer; - Red_Component, Green_Component, Blue_Component : out Color_Component_Type) is + Red_Component, Green_Component, Blue_Component : out Integer) is begin plgcol0(Color_Index, Red_Component, Green_Component, Blue_Component); end Get_Color_RGB; @@ -1346,7 +1482,7 @@ -- Returns the background color by 8 bit RGB value -- plgcolbg procedure Get_Background_Color_RGB - (Red_Component, Green_Component, Blue_Component : out Color_Component_Type) is + (Red_Component, Green_Component, Blue_Component : out Integer) is begin plgcolbg(Red_Component, Green_Component, Blue_Component); end Get_Background_Color_RGB; @@ -1570,10 +1706,10 @@ Number_Of_Bins : Positive; -- equal-sized, between Data_Min and Data_Max Options : Integer) is -- Options are not defined in plplot.h. begin - Set_Color(White); + Set_Pen_Color(White); plhist (Data'length, Data, Data_Min, Data_Max, Number_Of_Bins, Options); - Set_Color(White); + Set_Pen_Color(White); end Histogram_Unbinned; @@ -1914,7 +2050,7 @@ -- Set line color by 8 bit RGB values. -- plrgb1 - procedure Set_Line_Color_RGB_0_255(Red_Component, Blue_Component, Green_Component : Color_Component_Type) is + procedure Set_Line_Color_RGB_0_255(Red_Component, Blue_Component, Green_Component : Integer) is begin plrgb1(Red_Component, Blue_Component, Green_Component); end Set_Line_Color_RGB_0_255; @@ -1942,6 +2078,8 @@ end Set_Character_Height; + -- The PLplot docs say that the arguments to this procedure are arrays of 8-bit numbers + -- but plplot.h says that they are arrays of 32-bit integers. -- Set color map 0 colors by 8 bit RGB values -- plscmap0 procedure Set_Color_Map_0(Red_Components, Green_Components, Blue_Components : Integer_Array_1D) is @@ -2021,7 +2159,7 @@ -- plscol0 procedure Set_One_Color_Map_0 (Plot_Color : Plot_Color_Type; - Red_Component, Green_Component, Blue_Component : Color_Component_Type) is + Red_Component, Green_Component, Blue_Component : Integer) is begin plscol0(Plot_Color, Red_Component, Green_Component, Blue_Component); end Set_One_Color_Map_0; @@ -2030,7 +2168,7 @@ -- Set the background color by 8 bit RGB value -- plscolbg procedure Set_Background_Color_RGB - (Red_Component, Green_Component, Blue_Component : Color_Component_Type) is + (Red_Component, Green_Component, Blue_Component : Integer) is begin plscolbg(Red, Green, Blue); end Set_Background_Color_RGB; @@ -2814,5 +2952,13 @@ -- Set_Orientation(Landscape); -- Optional; before Initialize_PLplot if used. -- Initialize_PLplot; - null; + + + -- Capture the initial, default, settings of color map 0 since these will be + -- lost if the settings for color map 0 are set by the user. They can be + -- restored collectively by calling Restore_Default_Snapshot_Of_Color_Map_0 + -- or individually by calling functions such as Reset_Red etc. for each of + -- the 16 default colors of color map 0. + Make_Snapshot_Of_Color_Map_0(Default_Red_Components, Default_Green_Components, Default_Blue_Components); + end PLplot; Modified: trunk/bindings/ada/plplot.ads =================================================================== --- trunk/bindings/ada/plplot.ads 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot.ads 2007-07-04 20:51:51 UTC (rev 7745) @@ -25,6 +25,10 @@ Dont_Plot_This : Length_One_Real_Vector := (1..1 => 0.0); -- Default colors for Color Map 0. + -- These are hard-wired to the current colors of color map 0; if that + -- color map has been changed, then these colors will return surprising + -- results. Color map 0 can always be restored to its default state using + -- Restore_Default_Snapshot_Of_Color_Map_0. subtype Plot_Color_Type is Integer range 0..15; Black : constant Plot_Color_Type := 0; Red : constant Plot_Color_Type := 1; @@ -42,10 +46,8 @@ Magenta : constant Plot_Color_Type := 13; Salmon : constant Plot_Color_Type := 14; White : constant Plot_Color_Type := 15; - - -- 8-bit color components represented as Integers. - subtype Color_Component_Type is Integer range 0..255; + Max_Lines_For_Multiplot : constant := 5; -- Pre-defined line styles, e.g., continuous, dashed, etc. @@ -179,15 +181,15 @@ -------------------------------------------------------------------------------- -- Modes for parsing command line arguments (redux). - PL_PARSE_PARTIAL : constant Parse_Mode_Type := 16#0000#; -- For backward compatibility - PL_PARSE_FULL : constant Parse_Mode_Type := 16#0001#; -- Process fully & exit if error - PL_PARSE_QUIET : constant Parse_Mode_Type := 16#0002#; -- Don't issue messages - PL_PARSE_NODELETE : constant Parse_Mode_Type := 16#0004#; -- Don't delete options after processing - PL_PARSE_SHOWALL : constant Parse_Mode_Type := 16#0008#; -- Show invisible options - PL_PARSE_OVERRIDE : constant Parse_Mode_Type := 16#0010#; -- Obsolete - PL_PARSE_NOPROGRAM : constant Parse_Mode_Type := 16#0020#; -- Program name NOT in *argv[0].. - PL_PARSE_NODASH : constant Parse_Mode_Type := 16#0040#; -- Set if leading dash NOT required - PL_PARSE_SKIP : constant Parse_Mode_Type := 16#0080#; -- Skip over unrecognized args + PL_PARSE_PARTIAL : constant Parse_Mode_Type := 16#0000#; -- For backward compatibility + PL_PARSE_FULL : constant Parse_Mode_Type := 16#0001#; -- Process fully & exit if error + PL_PARSE_QUIET : constant Parse_Mode_Type := 16#0002#; -- Don't issue messages + PL_PARSE_NODELETE : constant Parse_Mode_Type := 16#0004#; -- Don't delete options after processing + PL_PARSE_SHOWALL : constant Parse_Mode_Type := 16#0008#; -- Show invisible options + PL_PARSE_OVERRIDE : constant Parse_Mode_Type := 16#0010#; -- Obsolete + PL_PARSE_NOPROGRAM : constant Parse_Mode_Type := 16#0020#; -- Program name NOT in *argv[0].. + PL_PARSE_NODASH : constant Parse_Mode_Type := 16#0040#; -- Set if leading dash NOT required + PL_PARSE_SKIP : constant Parse_Mode_Type := 16#0080#; -- Skip over unrecognized args -- definitions for the opt argument in plot3dc() and plsurf3d() DRAW_LINEX : constant Integer := 1; -- draw lines parallel to the X axis @@ -391,6 +393,78 @@ --------- Simple color table manipulatons ----- + -- Things for manipulating color map 0 -- + + -- Current default number of colors provided by PLplot. There is no way to + -- get this number under program control. The actual number can be set by + -- the user with Set_Number_Of_Colors_Map_0. + Number_Of_Default_Colors : constant Integer := 16; + + -- The default color map 0 is captured at initialization of PLplot.adb with + -- a call to Make_Snapshot_Of_Color_Map_0 stored here. + Default_Red_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + Default_Green_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + Default_Blue_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + + + -- Make a snapshot of color map 0 for possible later full or partial restoration. + -- This is automatically called at package initialization with results stored + -- in Default_Red_Components, Default_Green_Components, Default_Blue_Components. + procedure Make_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : out Integer_Array_1D); + + + -- Restore an arbitray snapshot of color map 0. + procedure Restore_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : Integer_Array_1D); + + + -- Restore the default colors of color map 0 taken as a snapshot at initialization. + procedure Restore_Default_Snapshot_Of_Color_Map_0; + + + -- Functions which correspond to the default colors of color map 0. Calling + -- one of these (1) resets the corresponding slot in color map 0 to its + -- default value, and (2) returns the correct integer value for the default + -- color specified. Thus, using Set_Pen_Color(Reset_Red) instead of + -- Set_Pen_Color(Red) guarantees that the color will be set to Red even if + -- there have been prior manipulations of color 1. + + function Reset_Black return Integer; + + function Reset_Red return Integer; + + function Reset_Yellow return Integer; + + function Reset_Green return Integer; + + function Reset_Aquamarine return Integer; + + function Reset_Pink return Integer; + + function Reset_Wheat return Integer; + + function Reset_Grey return Integer; + + function Reset_Brown return Integer; + + function Reset_Blue return Integer; + + function Reset_BlueViolet return Integer; + + function Reset_Cyan return Integer; + + function Reset_Turquoise return Integer; + + function Reset_Magenta return Integer; + + function Reset_Salmon return Integer; + + function Reset_White return Integer; + + + -- Things for manipulating color map 1 -- + type Color_Themes_For_Map_1_Type is (Gray, Blue_Green_Red, Red_Green_Blue, Red_Cyan_Blue, Blue_Black_Red, Red_Blue_Green, Red_Yellow); @@ -539,7 +613,7 @@ -- Set color, map 0. Argument is integer between 0 and 15. -- plcol0 - procedure Set_Color(A_Color : Plot_Color_Type); + procedure Set_Pen_Color(A_Color : Plot_Color_Type); -- Set color, map 1. Argument is a float between 0. and 1. @@ -682,13 +756,13 @@ -- plgcol0 procedure Get_Color_RGB (Color_Index : Integer; - Red_Component, Green_Component, Blue_Component : out Color_Component_Type); + Red_Component, Green_Component, Blue_Component : out Integer); -- Returns the background color by 8 bit RGB value -- plgcolbg procedure Get_Background_Color_RGB - (Red_Component, Green_Component, Blue_Component : out Color_Component_Type); + (Red_Component, Green_Component, Blue_Component : out Integer); -- Returns the current compression setting @@ -760,27 +834,6 @@ procedure Use_Graphics_Mode; ------ -- Gridding algorithm ------ subtype Gridding_Algorithm_Type is Integer range 1..6; ------ ------ -- Type of gridding algorithm for plgriddata() ------ -- "Long form" gridding algorithm names ------ Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA ------ Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI ------ Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI ------ Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW ------ Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI ------ Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW ------ ------ -- "Short form" gridding algorithm names ------ GRID_CSA : constant Gridding_Algorithm_Type := 1; ------ GRID_DTLI : constant Gridding_Algorithm_Type := 2; ------ GRID_NNI : constant Gridding_Algorithm_Type := 3; ------ GRID_NNIDW : constant Gridding_Algorithm_Type := 4; ------ GRID_NNLI : constant Gridding_Algorithm_Type := 5; ------ GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; - - -- Grid irregularly sampled data. -- plgriddata procedure Grid_Data @@ -984,19 +1037,6 @@ indexymin, indexymax : Integer_Array_1D); -- levels at which to draw contours ------ -- definitions for the opt argument in plot3dc() and plsurf3d() ------ -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! ------ No_3D_Options : constant Integer := 0; -- None of the options ------ Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis ------ Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis ------ Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis ------ Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude ------ Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane ------ Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane ------ Surface_Contour : constant Integer := 32; -- draw contour plot at surface ------ Sides : constant Integer := 64; -- draw sides ------ Facets : constant Integer := 128; -- draw outline for each square that makes up the surface ------ Meshed : constant Integer := 256; -- draw mesh -- valid options for plot3dc(): -- @@ -1070,7 +1110,7 @@ -- Set line color by 8 bit RGB values. -- plrgb1 - procedure Set_Line_Color_RGB_0_255(Red_Component, Blue_Component, Green_Component : Color_Component_Type); + procedure Set_Line_Color_RGB_0_255(Red_Component, Blue_Component, Green_Component : Integer); -- Functions for converting between HLS and RGB color space @@ -1089,6 +1129,8 @@ procedure Set_Character_Height(Default_Height, Scale_Factor : Long_Float); + -- The PLplot docs say that the arguments to this procedure are arrays of 8-bit numbers + -- but plplot.h says that they are arrays of 32-bit integers. -- Set color map 0 colors by 8 bit RGB values -- plscmap0 procedure Set_Color_Map_0(Red_Components, Green_Components, Blue_Components : Integer_Array_1D); @@ -1130,12 +1172,12 @@ -- plscol0 procedure Set_One_Color_Map_0 (Plot_Color : Plot_Color_Type; - Red_Component, Green_Component, Blue_Component : Color_Component_Type); + Red_Component, Green_Component, Blue_Component : Integer); -- Set the background color by 8 bit RGB value -- plscolbg procedure Set_Background_Color_RGB - (Red_Component, Green_Component, Blue_Component : Color_Component_Type); + (Red_Component, Green_Component, Blue_Component : Integer); -- Used to globally turn color output on/off @@ -1235,6 +1277,7 @@ Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; Transformation_Data : Transformation_Data_Type); + -- plshade1 procedure Shade_Region_1 (z : Real_Matrix; Modified: trunk/bindings/ada/plplot_thin.adb =================================================================== --- trunk/bindings/ada/plplot_thin.adb 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot_thin.adb 2007-07-04 20:51:51 UTC (rev 7745) @@ -6,92 +6,6 @@ package body PLplot_Thin is -------------------------------------------------------------------------------- --- UTILITY PROCEDURE DECLARATIONS -- --------------------------------------------------------------------------------- - ------ -- Find minimum in a 1D array. ------ function Vector_Min(x : Real_Vector) return Long_Float is ------ Result : Long_Float; ------ begin ------ Result := x(x'First); ------ for i in x'First+1..x'Last loop ------ Result := Long_Float'min(Result, x(i)); ------ end loop; ------ return Result; ------ end Vector_Min; ------ ------ ------ -- Find minimum and its location in a 1D array. ------ procedure Vector_Min(x : Real_Vector; ------ The_Minimum : out Long_Float; ------ Location_Of_Min : out Integer) is ------ begin ------ The_Minimum := x(x'First); ------ Location_Of_Min := x'First; ------ for i in x'First+1..x'Last loop ------ if x(i) < x(i - 1) then -- Finds the first of repeated mins. ------ The_Minimum := x(i); ------ Location_Of_Min := i; ------ end if; ------ end loop; ------ end Vector_Min; ------ ------ ------ -- Find maximum in a 1D array. ------ function Vector_Max(x : Real_Vector) return Long_Float is ------ Result : Long_Float; ------ begin ------ Result := x(x'First); ------ for i in x'First+1..x'Last loop ------ Result := Long_Float'max(Result, x(i)); ------ end loop; ------ return Result; ------ end Vector_Max; ------ ------ ------ -- Find maximum and its location in a 1D array. ------ procedure Vector_Max(x : Real_Vector; ------ The_Maximum : out Long_Float; ------ Location_Of_Max : out Integer) is ------ begin ------ The_Maximum := x(x'First); ------ Location_Of_Max := x'First; ------ for i in x'First+1..x'Last loop ------ if x(i) > x(i - 1) then -- Finds the first of repeated maxes. ------ The_Maximum := x(i); ------ Location_Of_Max := i; ------ end if; ------ end loop; ------ end Vector_Max; ------ ------ ------ -- Find minimum in a 2D array. ------ function Matrix_Min(x : Real_Matrix) return Long_Float is ------ Result : Long_Float := Long_Float'large; ------ begin ------ for j in x'First(2)..x'Last(2) loop ------ for i in x'First(1)..x'Last(1) loop ------ Result := Long_Float'Min(Result, x(i, j)); ------ end loop; ------ end loop; ------ return Result; ------ end Matrix_Min; ------ ------ ------ -- Find maximum in a 2D array. ------ function Matrix_Max(x : Real_Matrix) return Long_Float is ------ Result : Long_Float := Long_Float'small; ------ begin ------ for j in x'First(2)..x'Last(2) loop ------ for i in x'First(1)..x'Last(1) loop ------ Result := Long_Float'Max(Result, x(i, j)); ------ end loop; ------ end loop; ------ return Result; ------ end Matrix_Max; - - --------------------------------------------------------------------------------- -- Utility for passing matrices to C -- -------------------------------------------------------------------------------- Modified: trunk/bindings/ada/plplot_thin.ads =================================================================== --- trunk/bindings/ada/plplot_thin.ads 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot_thin.ads 2007-07-04 20:51:51 UTC (rev 7745) @@ -59,14 +59,6 @@ subtype PLBOOL is Integer range PLfalse..PLtrue; type PLUNICODE is range 0..2**32-1; ------ type Boolean_Array_1D is array (Integer range <>) of Boolean; ------ type Integer_Array_1D is array (Integer range <>) of Integer; - - -- UN-COMMENT THESE TWO LINES IF YOUR COMPILER DOES NOT INCLUDE THESE - -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. ------ type Real_Vector is array (Integer range <>) of Long_Float; ------ type Real_Matrix is array (Integer range <>, Integer range <>) of Long_Float; - subtype PL_Integer_Array is Integer_Array_1D; subtype PL_Float_Array is Real_Vector; subtype PL_Float_Array_2D is Real_Matrix; @@ -80,33 +72,6 @@ -------------------------------------------------------------------------------- --- UTILITY PROCEDURE DECLARATIONS -- --------------------------------------------------------------------------------- - ------ -- Find minimum in a 1D array. ------ function Vector_Min(x : Real_Vector) return Long_Float; ------ ------ -- Find minimum and its location in a 1D array. ------ procedure Vector_Min(x : Real_Vector; ------ The_Minimum : out Long_Float; ------ Location_Of_Min : out Integer); ------ ------ -- Find maximum in a 1D array. ------ function Vector_Max(x : Real_Vector) return Long_Float; ------ ------ -- Find maximum and its location in a 1D array. ------ procedure Vector_Max(x : Real_Vector; ------ The_Maximum : out Long_Float; ------ Location_Of_Max : out Integer); ------ ------ -- Find minimum in a 2D array. ------ function Matrix_Min(x : Real_Matrix) return Long_Float; ------ ------ -- Find maximum in a 2D array. ------ function Matrix_Max(x : Real_Matrix) return Long_Float; - - --------------------------------------------------------------------------------- -- Utility for passing matrices to C -- -------------------------------------------------------------------------------- @@ -114,19 +79,6 @@ -------------------------------------------------------------------------------- --- Convenient string things -- --------------------------------------------------------------------------------- - ------ -- Short name for To_Unbounded_String ------ function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; ------ ------ -- Convenient string of length 80 ------ package Bounded_String_80 is ------ new Ada.Strings.Bounded.Generic_Bounded_Length(80); ------ subtype String_80 is Bounded_String_80.Bounded_String; - - --------------------------------------------------------------------------------- -- PLplot-specific things -- -------------------------------------------------------------------------------- Modified: trunk/bindings/ada/plplot_traditional.adb =================================================================== --- trunk/bindings/ada/plplot_traditional.adb 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot_traditional.adb 2007-07-04 20:51:51 UTC (rev 7745) @@ -28,15 +28,6 @@ -- High-Level subroutines for thick binding -- -------------------------------------------------------------------------------- - -- Initialization. Must be called before starting to plot. - -- Certain other procedures, if used, must be called first. - -- Removed June 26, 2007 as being redundant wrt Initialize_PLplot. --- procedure Initialize_Plotter is --- begin --- Initialize_PLplot; --- end Initialize_Plotter; - - -- When asked to draw white lines on black background, do it. -- This is the default. procedure Draw_White_On_Black is @@ -681,6 +672,142 @@ --------- Simple color table manipulatons ----- + -- Things for manipulating color map 0 -- + + -- Make a snapshot of color map 0 for possible later full or partial restoration. + -- This is automatically called at package initialization with results stored + -- in Default_Red_Components, Default_Green_Components, Default_Blue_Components. + procedure Make_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : out Integer_Array_1D) is + begin + for i in Reds'range loop + plgcol0(i, Reds(i), Greens(i), Blues(i)); + end loop; + end Make_Snapshot_Of_Color_Map_0; + + + -- Restore an arbitray snapshot of color map 0. + procedure Restore_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : Integer_Array_1D) is + begin + plscmap0(Reds, Greens, Blues); + end Restore_Snapshot_Of_Color_Map_0; + + + -- Restore the default colors of color map 0 taken as a snapshot at initialization. + procedure Restore_Default_Snapshot_Of_Color_Map_0 is + begin + plscmap0n(Number_Of_Default_Colors); + plscmap0(Default_Red_Components, Default_Green_Components, Default_Blue_Components); + end Restore_Default_Snapshot_Of_Color_Map_0; + + + -- Functions which correspond to the default colors of color map 0. Calling + -- one of these (1) resets the corresponding slot in color map 0 to its + -- default value, and (2) returns the correct integer value for the default + -- color specified. Thus, using plcol0(Reset_Red) instead of + -- plcol0(Red) guarantees that the color will be set to Red even if + -- there have been prior manipulations of color 1. + + function Reset_Black return Integer is + begin + plscol0(0, Default_Red_Components(0), Default_Green_Components(0), Default_Blue_Components(0)); + return 0; + end Reset_Black; + + function Reset_Red return Integer is + begin + plscol0(1, Default_Red_Components(1), Default_Green_Components(1), Default_Blue_Components(1)); + return 1; + end Reset_Red; + + function Reset_Yellow return Integer is + begin + plscol0(2, Default_Red_Components(2), Default_Green_Components(2), Default_Blue_Components(2)); + return 2; + end Reset_Yellow; + + function Reset_Green return Integer is + begin + plscol0(3, Default_Red_Components(3), Default_Green_Components(3), Default_Blue_Components(3)); + return 3; + end Reset_Green; + + function Reset_Aquamarine return Integer is + begin + plscol0(4, Default_Red_Components(4), Default_Green_Components(4), Default_Blue_Components(4)); + return 4; + end Reset_Aquamarine; + + function Reset_Pink return Integer is + begin + plscol0(5, Default_Red_Components(5), Default_Green_Components(5), Default_Blue_Components(5)); + return 5; + end Reset_Pink; + + function Reset_Wheat return Integer is + begin + plscol0(6, Default_Red_Components(6), Default_Green_Components(6), Default_Blue_Components(6)); + return 6; + end Reset_Wheat; + + function Reset_Grey return Integer is + begin + plscol0(7, Default_Red_Components(7), Default_Green_Components(7), Default_Blue_Components(7)); + return 7; + end Reset_Grey; + + function Reset_Brown return Integer is + begin + plscol0(8, Default_Red_Components(8), Default_Green_Components(8), Default_Blue_Components(8)); + return 8; + end Reset_Brown; + + function Reset_Blue return Integer is + begin + plscol0(9, Default_Red_Components(9), Default_Green_Components(9), Default_Blue_Components(9)); + return 9; + end Reset_Blue; + + function Reset_BlueViolet return Integer is + begin + plscol0(10, Default_Red_Components(10), Default_Green_Components(10), Default_Blue_Components(10)); + return 10; + end Reset_BlueViolet; + + function Reset_Cyan return Integer is + begin + plscol0(11, Default_Red_Components(11), Default_Green_Components(11), Default_Blue_Components(11)); + return 11; + end Reset_Cyan; + + function Reset_Turquoise return Integer is + begin + plscol0(12, Default_Red_Components(12), Default_Green_Components(12), Default_Blue_Components(12)); + return 12; + end Reset_Turquoise; + + function Reset_Magenta return Integer is + begin + plscol0(13, Default_Red_Components(13), Default_Green_Components(13), Default_Blue_Components(13)); + return 13; + end Reset_Magenta; + + function Reset_Salmon return Integer is + begin + plscol0(14, Default_Red_Components(14), Default_Green_Components(14), Default_Blue_Components(14)); + return 14; + end Reset_Salmon; + + function Reset_White return Integer is + begin + plscol0(15, Default_Red_Components(15), Default_Green_Components(15), Default_Blue_Components(15)); + return 15; + end Reset_White; + + + -- Things for manipulating color map 1 -- + -- Quick application of pre-fabricated color schemes to color map 1. procedure Quick_Set_Color_Map_1(Color_Theme : Color_Themes_For_Map_1_Type) is @@ -1311,7 +1438,7 @@ -- Returns 8 bit RGB values for given color from color map 0 procedure plgcol0 (Color_Index : Integer; - Red_Component, Green_Component, Blue_Component : out Color_Component_Type) is + Red_Component, Green_Component, Blue_Component : out Integer) is begin PLplot_Thin.plgcol0(Color_Index, Red_Component, Green_Component, Blue_Component); end plgcol0; @@ -1319,7 +1446,7 @@ -- Returns the background color by 8 bit RGB value procedure plgcolbg - (Red_Component, Green_Component, Blue_Component : out Color_Component_Type) is + (Red_Component, Green_Component, Blue_Component : out Integer) is begin PLplot_Thin.plgcolbg(Red_Component, Green_Component, Blue_Component); end plgcolbg; @@ -1837,7 +1964,7 @@ -- Set line color by 8 bit RGB values. - procedure plrgb1(Red_Component, Blue_Component, Green_Component : Color_Component_Type) is + procedure plrgb1(Red_Component, Blue_Component, Green_Component : Integer) is begin PLplot_Thin.plrgb1(Red_Component, Blue_Component, Green_Component); end plrgb1; @@ -1936,7 +2063,7 @@ -- Set a given color from color map 0 by 8 bit RGB value procedure plscol0 (Plot_Color : Plot_Color_Type; - Red_Component, Green_Component, Blue_Component : Color_Component_Type) is + Red_Component, Green_Component, Blue_Component : Integer) is begin PLplot_Thin.plscol0(Plot_Color, Red_Component, Green_Component, Blue_Component); end plscol0; @@ -1944,7 +2071,7 @@ -- Set the background color by 8 bit RGB value procedure plscolbg - (Red_Component, Green_Component, Blue_Component : Color_Component_Type) is + (Red_Component, Green_Component, Blue_Component : Integer) is begin PLplot_Thin.plscolbg(Red, Green, Blue); end plscolbg; @@ -2678,5 +2805,13 @@ -- Set_Orientation(Landscape); -- Optional; before Initialize_PLplot if used. -- Initialize_PLplot; - null; + + + -- Capture the initial, default, settings of color map 0 since these will be + -- lost if the settings for color map 0 are set by the user. They can be + -- restored collectively by calling Restore_Default_Snapshot_Of_Color_Map_0 + -- or individually by calling functions such as Reset_Red etc. for each of + -- the 16 default colors of color map 0. + Make_Snapshot_Of_Color_Map_0(Default_Red_Components, Default_Green_Components, Default_Blue_Components); + end PLplot_Traditional; Modified: trunk/bindings/ada/plplot_traditional.ads =================================================================== --- trunk/bindings/ada/plplot_traditional.ads 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/bindings/ada/plplot_traditional.ads 2007-07-04 20:51:51 UTC (rev 7745) @@ -19,12 +19,16 @@ -------------------------------------------------------------------------------- -- Types and constants for thick binding -- -------------------------------------------------------------------------------- - + -- Default dummy arrays for various plotters which take multiple inputs. subtype Length_One_Real_Vector is Real_Vector(1..1); Dont_Plot_This : Length_One_Real_Vector := (1..1 => 0.0); -- Default colors for Color Map 0. + -- These are hard-wired to the current colors of color map 0; if that + -- colors map has been changed, then these colors will return surprising + -- results. Color map 0 can always be restored to its default state using + -- Set_Color_Map_0( subtype Plot_Color_Type is Integer range 0..15; Black : constant Plot_Color_Type := 0; Red : constant Plot_Color_Type := 1; @@ -42,9 +46,6 @@ Magenta : constant Plot_Color_Type := 13; Salmon : constant Plot_Color_Type := 14; White : constant Plot_Color_Type := 15; - - -- 8-bit color components represented as Integers. - subtype Color_Component_Type is Integer range 0..255; Max_Lines_For_Multiplot : constant := 5; @@ -216,18 +217,12 @@ -- Short name for To_Unbounded_String function TUB(arg : String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; - + -------------------------------------------------------------------------------- -- High-Level subroutines for thick binding -- -------------------------------------------------------------------------------- - -- Initialization. Must be called before starting to plot. - -- Certain other procedures, if used, must be called first. - -- Removed June 26, 2007 as being redundant wrt Initialize_PLplot. --- procedure Initialize_Plotter; - - -- When asked to draw white lines on black background, do it. -- This is the default. procedure Draw_White_On_Black; @@ -397,6 +392,78 @@ --------- Simple color table manipulatons ----- + -- Things for manipulating color map 0 -- + + -- Current default number of colors provided by PLplot. There is no way to + -- get this number under program control. The actual number can be set by + -- the user with Set_Number_Of_Colors_Map_0. + Number_Of_Default_Colors : constant Integer := 16; + + -- The default color map 0 is captured at initialization of PLplot.adb with + -- a call to Make_Snapshot_Of_Color_Map_0 stored here. + Default_Red_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + Default_Green_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + Default_Blue_Components : Integer_Array_1D(0 .. Number_Of_Default_Colors - 1); + + + -- Make a snapshot of color map 0 for possible later full or partial restoration. + -- This is automatically called at package initialization with results stored + -- in Default_Red_Components, Default_Green_Components, Default_Blue_Components. + procedure Make_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : out Integer_Array_1D); + + + -- Restore an arbitray snapshot of color map 0. + procedure Restore_Snapshot_Of_Color_Map_0 + (Reds, Greens, Blues : Integer_Array_1D); + + + -- Restore the default colors of color map 0 taken as a snapshot at initialization. + procedure Restore_Default_Snapshot_Of_Color_Map_0; + + + -- Functions which correspond to the default colors of color map 0. Calling + -- one of these (1) resets the corresponding slot in color map 0 to its + -- default value, and (2) returns the correct integer value for the default + -- color specified. Thus, using plcol0(Reset_Red) instead of + -- plcol0(Red) guarantees that the color will be set to Red even if + -- there have been prior manipulations of color 1. + + function Reset_Black return Integer; + + function Reset_Red return Integer; + + function Reset_Yellow return Integer; + + function Reset_Green return Integer; + + function Reset_Aquamarine return Integer; + + function Reset_Pink return Integer; + + function Reset_Wheat return Integer; + + function Reset_Grey return Integer; + + function Reset_Brown return Integer; + + function Reset_Blue return Integer; + + function Reset_BlueViolet return Integer; + + function Reset_Cyan return Integer; + + function Reset_Turquoise return Integer; + + function Reset_Magenta return Integer; + + function Reset_Salmon return Integer; + + function Reset_White return Integer; + + + -- Things for manipulating color map 1 -- + type Color_Themes_For_Map_1_Type is (Gray, Blue_Green_Red, Red_Green_Blue, Red_Cyan_Blue, Blue_Black_Red, Red_Blue_Green, Red_Yellow); @@ -652,12 +719,12 @@ -- Returns 8 bit RGB values for given color from color map 0 procedure plgcol0 (Color_Index : Integer; - Red_Component, Green_Component, Blue_Component : out Color_Component_Type); + Red_Component, Green_Component, Blue_Component : out Integer); -- Returns the background color by 8 bit RGB value procedure plgcolbg - (Red_Component, Green_Component, Blue_Component : out Color_Component_Type); + (Red_Component, Green_Component, Blue_Component : out Integer); -- Returns the current compression setting @@ -718,27 +785,6 @@ procedure plgra; ------ -- Gridding algorithm ------ subtype Gridding_Algorithm_Type is Integer range 1..6; ------ ------ -- Type of gridding algorithm for plgriddata() ------ -- "Long form" gridding algorithm names ------ Grid_Bivariate_Cubic_Spline_Approximation : constant Gridding_Algorithm_Type := 1; -- GRID_CSA ------ Grid_Delaunay_Triangulation_Linear_Interpolation : constant Gridding_Algorithm_Type := 2; -- GRID_DTLI ------ Grid_Natural_Neighbors_Interpolation : constant Gridding_Algorithm_Type := 3; -- GRID_NNI ------ Grid_Nearest_Neighbors_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 4; -- GRID_NNIDW ------ Grid_Nearest_Neighbors_Linear_Interpolation : constant Gridding_Algorithm_Type := 5; -- GRID_NNLI ------ Grid_Nearest_Neighbors_Around_Inverse_Distance_Weighted : constant Gridding_Algorithm_Type := 6; -- GRID_NNAIDW ------ ------ -- "Short form" gridding algorithm names ------ GRID_CSA : constant Gridding_Algorithm_Type := 1; ------ GRID_DTLI : constant Gridding_Algorithm_Type := 2; ------ GRID_NNI : constant Gridding_Algorithm_Type := 3; ------ GRID_NNIDW : constant Gridding_Algorithm_Type := 4; ------ GRID_NNLI : constant Gridding_Algorithm_Type := 5; ------ GRID_NNAIDW : constant Gridding_Algorithm_Type := 6; - - -- Grid irregularly sampled data. procedure plgriddata (x, y, z : Real_Vector; -- ungridded x- and y-points; z is height @@ -913,21 +959,6 @@ indexymin, indexymax : Integer_Array_1D); -- levels at which to draw contours ------ -- definitions for the opt argument in plot3dc() and plsurf3d() ------ -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! ------ ------ No_3D_Options : constant Integer := 0; -- None of the options ------ Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis ------ Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis ------ Lines_Parallel_To_X_And_Y : constant Integer := 3; -- draw lines parallel to both the X and Y axis ------ Magnitude_Color : constant Integer := 4; -- draw the mesh with a color dependent of the magnitude ------ Base_Contour : constant Integer := 8; -- draw contour plot at bottom xy plane ------ Top_Contour : constant Integer := 16; -- draw contour plot at top xy plane ------ Surface_Contour : constant Integer := 32; -- draw contour plot at surface ------ Sides : constant Integer := 64; -- draw sides ------ Facets : constant Integer := 128; -- draw outline for each square that makes up the surface ------ Meshed : constant Integer := 256; -- draw mesh - -- valid options for plot3dc(): -- -- DRAW_SIDES, BASE_CONT, TOP_CONT (not yet), @@ -990,7 +1021,7 @@ -- Set line color by 8 bit RGB values. - procedure plrgb1(Red_Component, Blue_Component, Green_Component : Color_Component_Type); + procedure plrgb1(Red_Component, Blue_Component, Green_Component : Integer); -- Functions for converting between HLS and RGB color space @@ -1007,6 +1038,8 @@ procedure plschr(Default_Height, Scale_Factor : Long_Float); + -- The PLplot docs say that the arguments to this procedure are arrays of 8-bit numbers + -- but plplot.h says that they are arrays of 32-bit integers. -- Set color map 0 colors by 8 bit RGB values procedure plscmap0(Red_Components, Green_Components, Blue_Components : Integer_Array_1D); @@ -1042,11 +1075,11 @@ -- Set a given color from color map 0 by 8 bit RGB value procedure plscol0 (Plot_Color : Plot_Color_Type; - Red_Component, Green_Component, Blue_Component : Color_Component_Type); + Red_Component, Green_Component, Blue_Component : Integer); -- Set the background color by 8 bit RGB value procedure plscolbg - (Red_Component, Green_Component, Blue_Component : Color_Component_Type); + (Red_Component, Green_Component, Blue_Component : Integer); -- Used to globally turn color output on/off @@ -1132,6 +1165,8 @@ Preserve_Rectangles : Boolean; Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; Transformation_Data : Transformation_Data_Type); + + procedure plshade1 (z : Real_Matrix; Mask_Function_Pointer : Mask_Function_Pointer_Type; @@ -1145,6 +1180,8 @@ Preserve_Rectangles : Boolean; Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; Transformation_Data : Transformation_Data_Type); + + procedure plshades (z : Real_Matrix; Mask_Function_Pointer : Mask_Function_Pointer_Type; @@ -1273,9 +1310,10 @@ procedure plstyl(Marks, Spaces : Integer_Array_1D); + Default_Continuous_Line : constant Integer := 0; + -- This is an overloaded procedure equivalent to calling plstyl with its -- first argument zero. - Default_Continuous_Line : constant Integer := 0; procedure plstyl(Default_Continuous_Line : Integer); Modified: trunk/examples/ada/xthick01a.adb =================================================================== --- trunk/examples/ada/xthick01a.adb 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/examples/ada/xthick01a.adb 2007-07-04 20:51:51 UTC (rev 7745) @@ -66,17 +66,17 @@ -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are -- scaled separately (just = 0), and we just draw a labelled -- box (axis = 0). - Set_Color(Red); + Set_Pen_Color(Red); Set_Environment(xmin, xmax, ymin, ymax, Not_Justified, Linear_Box_Plus); - Set_Color(Yellow); + Set_Pen_Color(Yellow); Write_Labels("(x)", "(y)", "#frPLplot Example 1 - y=x#u2"); -- Plot the data points - Set_Color(Aquamarine); + Set_Pen_Color(Aquamarine); Draw_Points(xs, ys, 9); -- Draw the line through the data - Set_Color(Green); + Set_Pen_Color(Green); Draw_Curve(x, y); end plot1; @@ -87,9 +87,9 @@ -- Set up the viewport and window using PLENV. The range in X is -2.0 to -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately -- (just = 0), and we draw a box with axes (axis = 1). - Set_Color(Red); + Set_Pen_Color(Red); Set_Environment(-2.0, 10.0, -0.4, 1.2, Not_Justified, Linear_Zero_Axes); - Set_Color(Yellow); + Set_Pen_Color(Yellow); Write_Labels("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function"); -- Fill up the arrays @@ -102,7 +102,7 @@ end loop; -- Draw the line - Set_Color(Green); + Set_Pen_Color(Green); Set_Pen_Width(2); Draw_Curve(x, y); Set_Pen_Width(1); @@ -121,17 +121,17 @@ Set_Viewport_World(0.0, 360.0, -1.2, 1.2); -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. - Set_Color(Red); + Set_Pen_Color(Red); Box_Around_Viewport("bcnst", 60.0, 2, "bcnstv", 0.2, 2); -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. -- plstyl expects a pointer! (-- Not Ada.) Set_Line_Style(mark1, space1); - Set_Color(Yellow); + Set_Pen_Color(Yellow); Box_Around_Viewport("g", 30.0, 0, "g", 0.2, 0); Set_Line_Style(Default_Continuous_Line); - Set_Color(Green); + Set_Pen_Color(Green); Write_Labels("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function"); for i in x'Range loop @@ -139,7 +139,7 @@ y(i) := sin(x(i) * pi / 180.0); end loop; - Set_Color(Aquamarine); + Set_Pen_Color(Aquamarine); Draw_Curve(x, y); end plot3; Modified: trunk/examples/ada/xthick12a.adb =================================================================== --- trunk/examples/ada/xthick12a.adb 2007-07-04 15:24:15 UTC (rev 7744) +++ trunk/examples/ada/xthick12a.adb 2007-07-04 20:51:51 UTC (rev 7745) @@ -65,7 +65,7 @@ y(3) := 0.0; Fill_Polygon(x, y); - Set_Color(Red); + Set_Pen_Color(Red); Select_Line_Style(1); Draw_Curve(x, y); end plfbox; @@ -81,7 +81,7 @@ Set_Viewport_Standard; Set_Viewport_World(1980.0, 1990.0, 0.0, 35.0); Box_Around_Viewport("bc", 1.0, 0, "bcnv", 10.0, 0); - Set_Color(Yellow); + Set_Pen_Color(Yellow); Write_Labels("Year", "Widget Sales (millions)", "#frPLplot Example 12"); y0(0) := 5.0; @@ -96,7 +96,7 @@ y0(9) := 3.0; for i in y0'range loop - Set_Color(i + 1); + Set_Pen_Color(i + 1); Select_Fill_Pattern(0); plfbox((1980.0 + Long_Float(i)), y0(i)); Write_Text_World(1980.0 + Long_Float(i) + 0.5, y0(i) + 1.0, 1.0, 0.0, 0.5, Trim(Integer'image(Integer(y0(i))), Left)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-05 01:07:27
|
Revision: 7747 http://plplot.svn.sourceforge.net/plplot/?rev=7747&view=rev Author: airwin Date: 2007-07-04 18:05:50 -0700 (Wed, 04 Jul 2007) Log Message: ----------- Implement second example using traditional Ada interface. Result matches C example exactly. Modified Paths: -------------- trunk/examples/ada/CMakeLists.txt trunk/test/test_ada.sh.in Added Paths: ----------- trunk/examples/ada/x02a.adb Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2007-07-05 01:05:07 UTC (rev 7746) +++ trunk/examples/ada/CMakeLists.txt 2007-07-05 01:05:50 UTC (rev 7747) @@ -20,6 +20,7 @@ set(ada_STRING_INDICES "01" +"02" "10" "12" "thick01" Added: trunk/examples/ada/x02a.adb =================================================================== --- trunk/examples/ada/x02a.adb (rev 0) +++ trunk/examples/ada/x02a.adb 2007-07-05 01:05:50 UTC (rev 7747) @@ -0,0 +1,174 @@ +-- $Id: x12a.adb 7744 2007-07-04 15:24:15Z airwin $ + +-- Multiple window and color map 0 demo. + +-- Copyright (C) 2007 Alan W. Irwin + +-- This file is part of PLplot. + +-- PLplot is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Library Public License as published +-- by the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. + +-- PLplot 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 Library General Public License for more details. + +-- You should have received a copy of the GNU Library General Public License +-- along with PLplot; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +with + Ada.Text_IO, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + Ada.Strings, + Ada.Strings.Fixed, + PLplot_Traditional, + PLplot_Auxiliary; + +use + Ada.Text_IO, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + Ada.Strings, + Ada.Strings.Fixed, + PLplot_Traditional, + PLplot_Auxiliary; + +-- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE +-- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. +--with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; + +------------------------------------------------------------------------------ +-- Demonstrates multiple windows and color map 0 palette, both default and +-- user-modified. +------------------------------------------------------------------------------ + +procedure x02a is + -------------------------------------------------------------------------- + -- draw_windows + -- Draws a set of numbered boxes with colors according to cmap0 entry. + -------------------------------------------------------------------------- + + procedure draw_windows(nw, cmap0_offset : Integer) is + vmin, vmax : Long_Float; + + begin + plschr(0.0, 3.5); + plfont(4); + + for i in 0..(nw-1) loop + plcol0(i+cmap0_offset); + pladv(0); + vmin := 0.1; + vmax := 0.9; + for j in 0..2 loop + plwid(j + 1); + plvpor(vmin, vmax, vmin, vmax); + plwind(0.0, 1.0, 0.0, 1.0); + plbox("bc", 0.0, 0, "bc", 0.0, 0); + vmin := vmin + 0.1; + vmax := vmax - 0.1; + end loop; + plwid(1); + plptex(0.5, 0.5, 1.0, 0.0, 0.5, Trim(Integer'image(i), Left)); + end loop; + end draw_windows; + + -------------------------------------------------------------------------- + -- demo1 + -- Demonstrates multiple windows and default color map 0 palette. + -------------------------------------------------------------------------- + + procedure demo1 is + begin + plbop; + -- Divide screen into 16 regions + plssub(4, 4); + draw_windows(16, 0); + pleop; + end demo1; + + -------------------------------------------------------------------------- + -- demo2 + -- Demonstrates multiple windows, user-modified color map 0 palette, and + -- HLS -> RGB translation. + -------------------------------------------------------------------------- + + procedure demo2 is + -- Set up cmap0 + -- Use 100 custom colors in addition to base 16 + r, g, b: Integer_Array_1D(0..115); + + -- Min & max lightness values + lmin : Long_Float := 0.15; lmax : Long_Float := 0.85; + h, l, s : Long_Float; + r1, g1, b1 : Long_Float; + --package Int_IO is new Ada.Text_IO.Integer_IO(INTEGER); use Int_IO; + begin + plbop; + + -- Divide screen into 100 regions. + + plssub(10, 10); + + for i in 0..99 loop + + -- Bounds on HLS, from plhlsrgb() commentary -- + -- hue [0., 360.] degrees + -- lightness [0., 1.] magnitude + -- saturation [0., 1.] magnitude + + -- Vary hue uniformly from left to right + h := (360.0 / 10.0 ) * Long_Float( i mod 10 ); + -- Vary lightness uniformly from top to bottom, + -- between min & max. + l := lmin + (lmax - lmin) * Long_Float(i / 10) / 9.0; + -- Use max saturation. + s := 1.0; + + plhlsrgb(h, l, s, r1, g1, b1); + + -- Ada rounds to nearest integer. We want to truncate + -- approximately like C to match that example. -0.5 produces + -- at least one -1 result (rather than zero) so we subtract + -- something with a slightly smaller absolute value. + 5252Hence suMust convert float to integer like C here. + r(i+16) := Integer((r1 * 255.0)-0.4999999); + g(i+16) := Integer((g1 * 255.0)-0.4999999); + b(i+16) := Integer((b1 * 255.0)-0.4999999); + -- Put("i+16, r(i+16), g(i+16), b(i+16) ="); + -- Put(i+16); Put(r(i+16)); Put(g(i+16)); Put(b(i+16)); New_Line; + end loop; + + -- Load default cmap0 colors into our custom set. + for i in 0..15 loop + plgcol0(i, r(i), g(i), b(i)); + end loop; + + -- Now set cmap0 all at once (faster, since fewer driver calls). + plscmap0(r, g, b); + + draw_windows( 100, 16 ); + + pleop; + end demo2; + +begin + -- Parse and process command line arguments. + plparseopts(PL_PARSE_FULL); + + -- Initialize plplot. + plinit; + + -- Run demos. + demo1; + demo2; + + -- Don't forget to call plend to finish off! + plend; + +end x02a; Property changes on: trunk/examples/ada/x02a.adb ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/test/test_ada.sh.in =================================================================== --- trunk/test/test_ada.sh.in 2007-07-05 01:05:07 UTC (rev 7746) +++ trunk/test/test_ada.sh.in 2007-07-05 01:05:50 UTC (rev 7747) @@ -27,6 +27,11 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in 01 10 12 thick01 thick10 thick12; do +for index in 01 02 10 12 thick01 thick10 thick12; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options + return_value=$? + if [ "$return_value" -ne 0 ] + then + exit $return_value + fi done This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-16 16:42:25
|
Revision: 7750 http://plplot.svn.sourceforge.net/plplot/?rev=7750&view=rev Author: airwin Date: 2007-07-16 09:42:28 -0700 (Mon, 16 Jul 2007) Log Message: ----------- AWI for Jerry Bauck: thick and traditional Ada implementations of example 4 which give identical results to the corresponding C example. Modified Paths: -------------- trunk/examples/ada/CMakeLists.txt trunk/test/test_ada.sh.in Added Paths: ----------- trunk/examples/ada/x04a.adb trunk/examples/ada/xthick04a.adb Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2007-07-05 01:34:59 UTC (rev 7749) +++ trunk/examples/ada/CMakeLists.txt 2007-07-16 16:42:28 UTC (rev 7750) @@ -21,9 +21,11 @@ set(ada_STRING_INDICES "01" "02" +"04" "10" "12" "thick01" +"thick04" "thick10" "thick12" ) Added: trunk/examples/ada/x04a.adb =================================================================== --- trunk/examples/ada/x04a.adb (rev 0) +++ trunk/examples/ada/x04a.adb 2007-07-16 16:42:28 UTC (rev 7750) @@ -0,0 +1,103 @@ +-- $Id: x04c.c xxxxxx $ +-- +-- Log plot demo. + +-- Copyright (C) 2007 Jerry Bauck + +-- This file is part of PLplot. + +-- PLplot is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Library Public License as published +-- by the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. + +-- PLplot 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 Library General Public License for more details. + +-- You should have received a copy of the GNU Library General Public License +-- along with PLplot; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +with + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; +use + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; + +-- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE +-- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. +--with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; + +procedure x04a is + + procedure plot1(Plot_Type : Integer) is + freql, ampl, phase : Real_Vector(0 .. 100); + f0, freq : Long_Float; + begin + pladv(0); + f0 := 1.0; + for i in freql'range loop + freql(i) := -2.0 + Long_Float(i) / 20.0; + freq := 10.0 ** freql(i); + ampl(i) := 20.0 * log(1.0 / sqrt(1.0 + (freq / f0) ** 2.0), 10.0); + phase(i) := -(180.0 / pi) * arctan(freq / f0); + end loop; + + plvpor(0.15, 0.85, 0.1, 0.9); + plwind(-2.0, 3.0, -80.0, 0.0); + + -- Try different axis and labelling styles. + plcol0(1); + + if Plot_Type = 0 then + plbox("bclnst", 0.0, 0, "bnstv", 0.0, 0); + elsif Plot_Type = 1 then + plbox("bcfghlnst", 0.0, 0, "bcghnstv", 0.0, 0); + end if; + + -- Plot ampl vs freq + plcol0(2); + plline(freql, ampl); + plcol0(1); + plptex(1.6, -30.0, 1.0, -20.0, 0.5, "-20 dB/decade"); + + -- Put labels on + plcol0(1); + plmtex("b", 3.2, 0.5, 0.5, "Frequency"); + plmtex("t", 2.0, 0.5, 0.5, "Single Pole Low-Pass Filter"); + plcol0(2); + plmtex("l", 5.0, 0.5, 0.5, "Amplitude (dB)"); + + -- For the gridless case, put phase vs freq on same plot + if Plot_Type = 0 then + plcol0(1); + plwind(-2.0, 3.0, -100.0, 0.0); + plbox("", 0.0, 0, "cmstv", 30.0, 3); + plcol0(3); + plline(freql, phase); + plcol0(3); + plmtex("r", 5.0, 0.5, 0.5, "Phase shift (degrees)"); + end if; + end plot1; + +begin + -- Parse and process command line arguments + plparseopts(PL_PARSE_FULL); + + -- Initialize plplot + plinit; + plfont(2); + + -- Make log plots using two different styles. + plot1(0); + plot1(1); + + plend; +end x04a; Property changes on: trunk/examples/ada/x04a.adb ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/examples/ada/xthick04a.adb =================================================================== --- trunk/examples/ada/xthick04a.adb (rev 0) +++ trunk/examples/ada/xthick04a.adb 2007-07-16 16:42:28 UTC (rev 7750) @@ -0,0 +1,103 @@ +-- $Id: xthick04c.c xxxxxx $ +-- +-- Log plot demo. + +-- Copyright (C) 2007 Jerry Bauck + +-- This file is part of PLplot. + +-- PLplot is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Library Public License as published +-- by the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. + +-- PLplot 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 Library General Public License for more details. + +-- You should have received a copy of the GNU Library General Public License +-- along with PLplot; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +with + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; +use + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; + +-- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE +-- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. +--with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; + +procedure xthick04a is + + procedure plot1(Plot_Type : Integer) is + freql, ampl, phase : Real_Vector(0 .. 100); + f0, freq : Long_Float; + begin + Advance_To_Subpage(Next_Subpage); + f0 := 1.0; + for i in freql'range loop + freql(i) := -2.0 + Long_Float(i) / 20.0; + freq := 10.0 ** freql(i); + ampl(i) := 20.0 * log(1.0 / sqrt(1.0 + (freq / f0) ** 2.0), 10.0); + phase(i) := -(180.0 / pi) * arctan(freq / f0); + end loop; + + Set_Viewport_Normalized(0.15, 0.85, 0.1, 0.9); + Set_Viewport_World(-2.0, 3.0, -80.0, 0.0); + + -- Try different axis and labelling styles. + Set_Pen_Color(Red); + + if Plot_Type = 0 then + Box_Around_Viewport("bclnst", 0.0, 0, "bnstv", 0.0, 0); + elsif Plot_Type = 1 then + Box_Around_Viewport("bcfghlnst", 0.0, 0, "bcghnstv", 0.0, 0); + end if; + + -- Plot ampl vs freq + Set_Pen_Color(Yellow); + Draw_Curve(freql, ampl); + Set_Pen_Color(Red); + Write_Text_World(1.6, -30.0, 1.0, -20.0, 0.5, "-20 dB/decade"); + + -- Put labels on + Set_Pen_Color(Red); + Write_Text_Viewport("b", 3.2, 0.5, 0.5, "Frequency"); + Write_Text_Viewport("t", 2.0, 0.5, 0.5, "Single Pole Low-Pass Filter"); + Set_Pen_Color(Yellow); + Write_Text_Viewport("l", 5.0, 0.5, 0.5, "Amplitude (dB)"); + + -- For the gridless case, put phase vs freq on same plot + if Plot_Type = 0 then + Set_Pen_Color(Red); + Set_Viewport_World(-2.0, 3.0, -100.0, 0.0); + Box_Around_Viewport("", 0.0, 0, "cmstv", 30.0, 3); + Set_Pen_Color(Green); + Draw_Curve(freql, phase); + Set_Pen_Color(Green); + Write_Text_Viewport("r", 5.0, 0.5, 0.5, "Phase shift (degrees)"); + end if; + end plot1; + +begin + -- Parse and process command line arguments + Parse_Command_Line_Arguments(PL_PARSE_FULL); + + -- Initialize plplot + Initialize_PLplot; + Set_Font_Style(Roman_Font); + + -- Make log plots using two different styles. + plot1(0); + plot1(1); + + End_PLplot; +end xthick04a; Property changes on: trunk/examples/ada/xthick04a.adb ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/test/test_ada.sh.in =================================================================== --- trunk/test/test_ada.sh.in 2007-07-05 01:34:59 UTC (rev 7749) +++ trunk/test/test_ada.sh.in 2007-07-16 16:42:28 UTC (rev 7750) @@ -27,7 +27,7 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in 01 02 10 12 thick01 thick10 thick12; do +for index in 01 02 04 10 12 thick01 thick04 thick10 thick12; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options status_code=$? if [ "$status_code" -ne 0 ]; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-07-17 15:36:31
|
Revision: 7753 http://plplot.svn.sourceforge.net/plplot/?rev=7753&view=rev Author: airwin Date: 2007-07-17 08:36:31 -0700 (Tue, 17 Jul 2007) Log Message: ----------- Add thick Ada version of the second example. Gives identical results to the equivalent traditional Ada example and the C example. Modified Paths: -------------- trunk/examples/ada/CMakeLists.txt trunk/test/test_ada.sh.in Added Paths: ----------- trunk/examples/ada/xthick02a.adb Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2007-07-17 15:35:05 UTC (rev 7752) +++ trunk/examples/ada/CMakeLists.txt 2007-07-17 15:36:31 UTC (rev 7753) @@ -25,6 +25,7 @@ "10" "12" "thick01" +"thick02" "thick04" "thick10" "thick12" Added: trunk/examples/ada/xthick02a.adb =================================================================== --- trunk/examples/ada/xthick02a.adb (rev 0) +++ trunk/examples/ada/xthick02a.adb 2007-07-17 15:36:31 UTC (rev 7753) @@ -0,0 +1,170 @@ +-- $Id: xthick02a.adb xxxxx $ + +-- Multiple window and color map 0 demo. + +-- Copyright (C) 2007 Alan W. Irwin + +-- This file is part of PLplot. + +-- PLplot is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Library Public License as published +-- by the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. + +-- PLplot 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 Library General Public License for more details. + +-- You should have received a copy of the GNU Library General Public License +-- along with PLplot; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +with + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + Ada.Strings, + Ada.Strings.Fixed, + PLplot, + PLplot_Auxiliary; + +use + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + Ada.Strings, + Ada.Strings.Fixed, + PLplot, + PLplot_Auxiliary; + +-- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE +-- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. +--with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; + +------------------------------------------------------------------------------ +-- Demonstrates multiple windows and color map 0 palette, both default and +-- user-modified. +------------------------------------------------------------------------------ + +procedure xthick02a is + -------------------------------------------------------------------------- + -- draw_windows + -- Draws a set of numbered boxes with colors according to cmap0 entry. + -------------------------------------------------------------------------- + + procedure draw_windows(nw, cmap0_offset : Integer) is + vmin, vmax : Long_Float; + + begin + Set_Character_Height(0.0, 3.5); + Set_Font_Style(Script_Font); + + for i in 0..(nw-1) loop + Set_Pen_Color(i+cmap0_offset); + Advance_To_Subpage(0); + vmin := 0.1; + vmax := 0.9; + for j in 0..2 loop + Set_Pen_Width(j + 1); + Set_Viewport_Normalized(vmin, vmax, vmin, vmax); + Set_Viewport_World(0.0, 1.0, 0.0, 1.0); + Box_Around_Viewport("bc", 0.0, 0, "bc", 0.0, 0); + vmin := vmin + 0.1; + vmax := vmax - 0.1; + end loop; + Set_Pen_Width(1); + Write_Text_World(0.5, 0.5, 1.0, 0.0, 0.5, Trim(Integer'image(i), Left)); + end loop; + end draw_windows; + + -------------------------------------------------------------------------- + -- demo1 + -- Demonstrates multiple windows and default color map 0 palette. + -------------------------------------------------------------------------- + + procedure demo1 is + begin + Begin_New_Page; + + -- Divide screen into 16 regions + Set_Number_Of_Subpages(4, 4); + draw_windows(16, 0); + Eject_Current_Page; + end demo1; + + -------------------------------------------------------------------------- + -- demo2 + -- Demonstrates multiple windows, user-modified color map 0 palette, and + -- HLS -> RGB translation. + -------------------------------------------------------------------------- + + procedure demo2 is + -- Set up cmap0 + -- Use 100 custom colors in addition to base 16 + r, g, b: Integer_Array_1D(0..115); + + -- Min & max lightness values + lmin : Long_Float := 0.15; + lmax : Long_Float := 0.85; + h, l, s : Long_Float; + r1, g1, b1 : Long_Float; + begin + Begin_New_Page; + + -- Divide screen into 100 regions. + Set_Number_Of_Subpages(10, 10); + + for i in 0..99 loop + + -- Bounds on HLS, from Set_Color_HLSrgb() commentary + -- hue [0., 360.] degrees + -- lightness [0., 1.] magnitude + -- saturation [0., 1.] magnitude + + -- Vary hue uniformly from left to right + h := (360.0 / 10.0 ) * Long_Float( i mod 10 ); + + -- Vary lightness uniformly from top to bottom, between min & max. + l := lmin + (lmax - lmin) * Long_Float(i / 10) / 9.0; + + -- Use max saturation. + s := 1.0; + + HLS_To_RGB(h, l, s, r1, g1, b1); + + -- Ada rounds to nearest integer. We want to truncate + -- approximately like C to match that example. -0.5 produces + -- at least one -1 result (rather than zero) so we subtract + -- something with a slightly smaller absolute value. + r(i+16) := Integer((r1 * 255.0)-0.4999999); + g(i+16) := Integer((g1 * 255.0)-0.4999999); + b(i+16) := Integer((b1 * 255.0)-0.4999999); + end loop; + + -- Load default cmap0 colors into our custom set. + for i in 0..15 loop + Get_Color_RGB(i, r(i), g(i), b(i)); + end loop; + + -- Now set cmap0 all at once (faster, since fewer driver calls). + Set_Color_Map_0(r, g, b); + + draw_windows(100, 16); + + Eject_Current_Page; + end demo2; + +begin + -- Parse and process command line arguments. + Parse_Command_Line_Arguments(Parse_Full); + + -- Initialize plplot. + Initialize_PLplot; + + -- Run demos. + demo1; + demo2; + + -- Don't forget to call End_PLplot to finish off! + End_PLplot; + +end xthick02a; Property changes on: trunk/examples/ada/xthick02a.adb ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/test/test_ada.sh.in =================================================================== --- trunk/test/test_ada.sh.in 2007-07-17 15:35:05 UTC (rev 7752) +++ trunk/test/test_ada.sh.in 2007-07-17 15:36:31 UTC (rev 7753) @@ -27,7 +27,7 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in 01 02 04 10 12 thick01 thick04 thick10 thick12; do +for index in 01 02 04 10 12 thick01 thick02 thick04 thick10 thick12; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options status_code=$? if [ "$status_code" -ne 0 ]; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2007-07-23 14:03:21
|
Revision: 7760 http://plplot.svn.sourceforge.net/plplot/?rev=7760&view=rev Author: andrewross Date: 2007-07-23 07:02:11 -0700 (Mon, 23 Jul 2007) Log Message: ----------- Port python bindings to use numpy instead of Numeric. Currently numpy support is disabled. To enable it use -DHAVE_NUMPY=ON on the cmake command line. The only difference for the examples is that they use from numpy import * rather than fron Numeric import * There are differences in the SWIG generated interfaces due to typing issues between Numeric and numpy. Note that currently neither of these is 64 bit clean. Modified Paths: -------------- trunk/bindings/python/CMakeLists.txt trunk/cmake/modules/python.cmake trunk/examples/python/CMakeLists.txt Added Paths: ----------- trunk/bindings/python/plplot.py.Numeric trunk/examples/python/plplotcanvas_animation.py.in trunk/examples/python/plplotcanvas_demo.py.in trunk/examples/python/prova.py.in trunk/examples/python/qplplot.py.in trunk/examples/python/xw01.py.in trunk/examples/python/xw02.py.in trunk/examples/python/xw03.py.in trunk/examples/python/xw04.py.in trunk/examples/python/xw05.py.in trunk/examples/python/xw06.py.in trunk/examples/python/xw07.py.in trunk/examples/python/xw08.py.in trunk/examples/python/xw09.py.in trunk/examples/python/xw10.py.in trunk/examples/python/xw11.py.in trunk/examples/python/xw12.py.in trunk/examples/python/xw13.py.in trunk/examples/python/xw14.py.in trunk/examples/python/xw15.py.in trunk/examples/python/xw16.py.in trunk/examples/python/xw17.py.in trunk/examples/python/xw18.py.in trunk/examples/python/xw19.py.in trunk/examples/python/xw22.py.in trunk/examples/python/xw23.py.in trunk/examples/python/xw24.py.in trunk/examples/python/xw26.py.in Removed Paths: ------------- trunk/bindings/python/plplot.py trunk/examples/python/plplotcanvas_animation.py trunk/examples/python/plplotcanvas_demo.py trunk/examples/python/prova.py trunk/examples/python/qplplot.py trunk/examples/python/xw01.py trunk/examples/python/xw02.py trunk/examples/python/xw03.py trunk/examples/python/xw04.py trunk/examples/python/xw05.py trunk/examples/python/xw06.py trunk/examples/python/xw07.py trunk/examples/python/xw08.py trunk/examples/python/xw09.py trunk/examples/python/xw10.py trunk/examples/python/xw11.py trunk/examples/python/xw12.py trunk/examples/python/xw13.py trunk/examples/python/xw14.py trunk/examples/python/xw15.py trunk/examples/python/xw16.py trunk/examples/python/xw17.py trunk/examples/python/xw18.py trunk/examples/python/xw19.py trunk/examples/python/xw22.py trunk/examples/python/xw23.py trunk/examples/python/xw24.py trunk/examples/python/xw26.py Modified: trunk/bindings/python/CMakeLists.txt =================================================================== --- trunk/bindings/python/CMakeLists.txt 2007-07-20 17:21:47 UTC (rev 7759) +++ trunk/bindings/python/CMakeLists.txt 2007-07-23 14:02:11 UTC (rev 7760) @@ -20,6 +20,14 @@ if(ENABLE_python) +# Configure the python scripts to use the correct version of the Numeric library +if (NUMPY_FOUND) + configure_file(plplot.py.numpy ${CMAKE_CURRENT_BINARY_DIR}/plplot.py COPYONLY) +else (NUMPY_FOUND) + configure_file(plplot.py.Numeric ${CMAKE_CURRENT_BINARY_DIR}/plplot.py COPYONLY) +endif (NUMPY_FOUND) + + # This is currently the include list for swig, the C wrapper and the # the Python headers. Not particular pretty... set(python_interface_INCLUDE_PATHS @@ -85,7 +93,7 @@ WORLD_EXECUTE ) install( -FILES plplot.py ${CMAKE_CURRENT_BINARY_DIR}/plplotc.py +FILES ${CMAKE_CURRENT_BINARY_DIR}/plplot.py ${CMAKE_CURRENT_BINARY_DIR}/plplotc.py DESTINATION ${PYTHON_INSTDIR} PERMISSIONS ${PERM_SCRIPTS} ) Deleted: trunk/bindings/python/plplot.py =================================================================== --- trunk/bindings/python/plplot.py 2007-07-20 17:21:47 UTC (rev 7759) +++ trunk/bindings/python/plplot.py 2007-07-23 14:02:11 UTC (rev 7760) @@ -1,555 +0,0 @@ -# Copyright 2002 Gary Bishop and Alan W. Irwin -# This file is part of PLplot. - -# PLplot is free software; you can redistribute it and/or modify -# it under the terms of the GNU Library General Public License as published by -# the Free Software Foundation; version 2 of the License. - -# PLplot 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 Library General Public License for more details. - -# You should have received a copy of the GNU Library General Public License -# along with the file PLplot; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -# Wrap raw python interface to C API, plplotc, with this user-friendly version -# which implements some useful variations of the argument lists. - -from plplotc import * -import types -import Numeric - -# Redefine plcont to have the user-friendly interface -# Allowable syntaxes: - -# plcont( z, [kx, lx, ky, ly], clev, [pltr, [pltr_data] or [xg, yg, [wrap]]]) -# N.B. Brackets represent options here and not python lists! - -# All unbracketed arguments within brackets must all be present or all be -# missing. Furthermore, z must be a 2D array, kx, lx, ky, ly must all be -# integers, clev must be a 1D array, pltr can be a function reference or -# string, pltr_data is an optional arbitrary data object, xg and yg are -# optional 1D or 2D arrays and wrap (which only works if xg and yg -# are specified) is 0, 1, or 2. - -# If pltr is a string it must be either "pltr0", "pltr1", or "pltr2" to -# refer to those built-in transformation functions. Alternatively, the -# function names pltr0, pltr1, or pltr2 may be specified to refer to -# the built-in transformation functions or an arbitrary name for a -# user-defined transformation function may be specified. Such functions -# must have x, y, and optional pltr_data arguments and return arbitrarily -# transformed x' and y' in a tuple. The built-in pltr's such as pltr1 and -# pltr2 use pltr_data = tuple(xg, yg), and for this oft-used case (and any -# other user-defined pltr which uses a tuple of two arrays for pltr_data), -# we also provide optional xg and yg arguments separately as an alternative -# to the tuple method of providing these data. Note, that pltr_data cannot -# be in the argument list if xg and yg are there, and vice versa. Also note -# that the built-in pltr0 and some user-defined transformation functions -# ignore the auxiliary pltr_data (or the alternative xg and yg) in which -# case neither pltr_data nor xg and yg need to be specified. - -_plcont = plcont -def plcont(z, *args): - z = Numeric.asarray(z) - if len(z.shape) != 2: - raise ValueError, "Expected 2D z array" - - if len(args) > 4 and type(args[0]) == types.IntType: - for i in range(1,4): - if type(args[i]) != types.IntType: - raise ValueError, "Expected 4 ints for kx,lx,ky,ly" - - else: - # these 4 args are the kx, lx, ky, ly ints - ifdefault_range = 0 - kx,lx,ky,ly = args[0:4] - args = args[4:] - else: - ifdefault_range = 1 - - if len(args) > 0: - clev = Numeric.asarray(args[0]) - if len(clev.shape) !=1: - raise ValueError, "Expected 1D clev array" - args = args[1:] - else: - raise ValueError, "Missing clev argument" - - if len(args) > 0 and ( \ - type(args[0]) == types.StringType or \ - type(args[0]) == types.FunctionType or \ - type(args[0]) == types.BuiltinFunctionType): - pltr = args[0] - # Handle the string names for the callbacks though specifying the - # built-in function name directly (without the surrounding quotes) - # or specifying any user-defined transformation function - # (following above rules) works fine too. - if type(pltr) == types.StringType: - if pltr == "pltr0": - pltr = pltr0 - elif pltr == "pltr1": - pltr = pltr1 - elif pltr == "pltr2": - pltr = pltr2 - else: - raise ValueError, "pltr string is unrecognized" - - args = args[1:] - # Handle pltr_data or separate xg, yg, [wrap] - if len(args) == 0: - # Default pltr_data - pltr_data = None - elif len(args) == 1: - #Must be pltr_data - pltr_data = args[0] - args = args[1:] - elif len(args) >= 2: - xg = Numeric.asarray(args[0]) - if len(xg.shape) < 1 or len(xg.shape) > 2: - raise ValueError, "xg must be 1D or 2D array" - yg = Numeric.asarray(args[1]) - if len(yg.shape) != len(xg.shape): - raise ValueError, "yg must have same number of dimensions as xg" - args = args[2:] - # wrap only relevant if xg and yg specified. - if len(args) > 0: - if type(args[0]) == types.IntType: - wrap = args[0] - args = args[1:] - if len(xg.shape) == 2 and len(yg.shape) == 2 and \ - z.shape == xg.shape and z.shape == yg.shape: - # handle wrap - if wrap == 1: - z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) - xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) - yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) - elif wrap == 2: - z = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) - xg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) - yg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) - elif wrap != 0: - raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." - elif wrap != 0: - raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" - else: - raise ValueError, "Specified wrap is not an integer" - pltr_data = (xg, yg) - else: - # default is identity transformation - pltr = pltr0 - pltr_data = None - if len(args) > 0: - raise ValueError, "Too many arguments for plcont" - if ifdefault_range: - # Default is to take full range (still using fortran convention - # for indices which is embedded in the PLplot library API) - kx = 1 - lx = z.shape[0] - ky = 1 - ly = z.shape[1] - _plcont(z, kx, lx, ky, ly, clev, pltr, pltr_data) -plcont.__doc__ = _plcont.__doc__ - -# Redefine plvect to have the user-friendly interface -# Allowable syntaxes: - -# plvect( u, v, scaling, [pltr, [pltr_data] or [xg, yg, [wrap]]]) -_plvect = plvect -def plvect(u, v, *args): - u = Numeric.asarray(u) - v = Numeric.asarray(v) - - if len(u.shape) != 2: - raise ValueError, "Expected 2D u array" - if len(v.shape) != 2: - raise ValueError, "Expected 2D v array" - if (u.shape[0] != v.shape[0]) or (u.shape[1] != v.shape[1]) : - raise ValueError, "Expected u and v arrays to be the same dimensions" - - if len(args) > 0 and type(args[0]) == types.FloatType : - scaling = args[0] - args = args[1:] - else: - raise ValueError, "Missing scaling argument" - - if len(args) > 0 and ( \ - type(args[0]) == types.StringType or \ - type(args[0]) == types.FunctionType or \ - type(args[0]) == types.BuiltinFunctionType): - pltr = args[0] - # Handle the string names for the callbacks though specifying the - # built-in function name directly (without the surrounding quotes) - # or specifying any user-defined transformation function - # (following above rules) works fine too. - if type(pltr) == types.StringType: - if pltr == "pltr0": - pltr = pltr0 - elif pltr == "pltr1": - pltr = pltr1 - elif pltr == "pltr2": - pltr = pltr2 - else: - raise ValueError, "pltr string is unrecognized" - - args = args[1:] - # Handle pltr_data or separate xg, yg, [wrap] - if len(args) == 0: - # Default pltr_data - pltr_data = None - elif len(args) == 1: - #Must be pltr_data - pltr_data = args[0] - args = args[1:] - elif len(args) >= 2: - xg = Numeric.asarray(args[0]) - if len(xg.shape) < 1 or len(xg.shape) > 2: - raise ValueError, "xg must be 1D or 2D array" - yg = Numeric.asarray(args[1]) - if len(yg.shape) != len(xg.shape): - raise ValueError, "yg must have same number of dimensions as xg" - args = args[2:] - # wrap only relevant if xg and yg specified. - if len(args) > 0: - if type(args[0]) == types.IntType: - wrap = args[0] - args = args[1:] - if len(xg.shape) == 2 and len(yg.shape) == 2 and \ - u.shape == xg.shape and u.shape == yg.shape: - # handle wrap - if wrap == 1: - u = Numeric.resize(u, (u.shape[0]+1, u.shape[1])) - v = Numeric.resize(v, (v.shape[0]+1, v.shape[1])) - xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) - yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) - elif wrap == 2: - u = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(u), (u.shape[1]+1, u.shape[0]))) - v = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(v), (v.shape[1]+1, v.shape[0]))) - xg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) - yg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) - elif wrap != 0: - raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." - elif wrap != 0: - raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" - else: - raise ValueError, "Specified wrap is not an integer" - pltr_data = (xg, yg) - else: - # default is identity transformation - pltr = pltr0 - pltr_data = None - if len(args) > 0: - raise ValueError, "Too many arguments for plvect" - _plvect(u, v, scaling, pltr, pltr_data) -plvect.__doc__ = _plvect.__doc__ - -# Redefine plshades to have the user-friendly interface -# Allowable syntaxes: - -# plshades(z, [xmin, xmax, ymin, ymax,] clev, \ -# fill_width, [cont_color, cont_width,], rect, \ -# [pltr, [pltr_data] or [xg, yg, [wrap]]]) - -_plshades = plshades -def plshades(z, *args): - z = Numeric.asarray(z) - if len(z.shape) != 2: - raise ValueError, "Expected 2D z array" - - if len(args) > 4 and \ - (type(args[0]) == types.FloatType or type(args[0]) == types.IntType) and \ - (type(args[1]) == types.FloatType or type(args[1]) == types.IntType) and \ - (type(args[2]) == types.FloatType or type(args[2]) == types.IntType) and \ - (type(args[3]) == types.FloatType or type(args[3]) == types.IntType): - # These 4 args are xmin, xmax, ymin, ymax - xmin, xmax, ymin, ymax = args[0:4] - args = args[4:] - else: - # These values are ignored if pltr and pltr_data are defined in any case. - # So pick some convenient defaults that work for the pltr0, None case - xmin = -1. - xmax = 1. - ymin = -1. - ymax = 1. - - # clev must be present. - if len(args) > 0: - clev = Numeric.asarray(args[0]) - if len(clev.shape) !=1: - raise ValueError, "Expected 1D clev array" - args = args[1:] - else: - raise ValueError, "Missing clev argument" - - # fill_width must be present - if len(args) > 0 and type(args[0]) == types.IntType: - fill_width = args[0] - args = args[1:] - else: - raise ValueError, "Missing fill_width argument" - - # cont_color and cont_width are optional. - if len(args) > 2 and \ - type(args[0]) == types.IntType and \ - type(args[1]) == types.IntType: - # These 2 args are - cont_color, cont_width = args[0:2] - args = args[2:] - else: - # Turn off contouring. - cont_color, cont_width = (0,0) - - # rect must be present. - if len(args) > 0 and type(args[0]) == types.IntType: - rect = args[0] - args = args[1:] - else: - raise ValueError, "Missing rect argument" - - if len(args) > 0 and ( \ - type(args[0]) == types.StringType or \ - type(args[0]) == types.FunctionType or \ - type(args[0]) == types.BuiltinFunctionType): - pltr = args[0] - # Handle the string names for the callbacks though specifying the - # built-in function name directly (without the surrounding quotes) - # or specifying any user-defined transformation function - # (following above rules) works fine too. - if type(pltr) == types.StringType: - if pltr == "pltr0": - pltr = pltr0 - elif pltr == "pltr1": - pltr = pltr1 - elif pltr == "pltr2": - pltr = pltr2 - else: - raise ValueError, "pltr string is unrecognized" - - args = args[1:] - # Handle pltr_data or separate xg, yg, [wrap] - if len(args) == 0: - # Default pltr_data - pltr_data = None - elif len(args) == 1: - #Must be pltr_data - pltr_data = args[0] - args = args[1:] - elif len(args) >= 2: - xg = Numeric.asarray(args[0]) - if len(xg.shape) < 1 or len(xg.shape) > 2: - raise ValueError, "xg must be 1D or 2D array" - yg = Numeric.asarray(args[1]) - if len(yg.shape) != len(xg.shape): - raise ValueError, "yg must have same number of dimensions as xg" - args = args[2:] - # wrap only relevant if xg and yg specified. - if len(args) > 0: - if type(args[0]) == types.IntType: - wrap = args[0] - args = args[1:] - if len(xg.shape) == 2 and len(yg.shape) == 2 and \ - z.shape == xg.shape and z.shape == yg.shape: - # handle wrap - if wrap == 1: - z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) - xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) - yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) - elif wrap == 2: - z = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) - xg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) - yg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) - elif wrap != 0: - raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." - elif wrap != 0: - raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" - else: - raise ValueError, "Specified wrap is not an integer" - pltr_data = (xg, yg) - else: - # default is identity transformation - pltr = pltr0 - pltr_data = None - if len(args) > 0: - raise ValueError, "Too many arguments for plshades" - - _plshades(z, xmin, xmax, ymin, ymax, clev, \ - fill_width, cont_color, cont_width, rect, pltr, pltr_data) -plshades.__doc__ = _plshades.__doc__ - -# Redefine plshade to have the user-friendly interface -# Allowable syntaxes: - -# _plshade(z, [xmin, xmax, ymin, ymax,] \ -# shade_min, shade_max, sh_cmap, sh_color, sh_width, \ -# [min_color, min_width, max_color, max_width,] rect, \ -# [pltr, [pltr_data] or [xg, yg, [wrap]]]) - -# plshade(z, [xmin, xmax, ymin, ymax,] clev, \ -# fill_width, [cont_color, cont_width,], rect, \ -# [pltr, [pltr_data] or [xg, yg, [wrap]]]) - -_plshade = plshade -def plshade(z, *args): - z = Numeric.asarray(z) - if len(z.shape) != 2: - raise ValueError, "Expected 2D z array" - - # Extra check on shade_min = float on end is absolutely necessary - # to unambiguously figure out where we are in the argument list. - if len(args) > 9 and \ - (type(args[0]) == types.FloatType or type(args[0]) == types.IntType) and \ - (type(args[1]) == types.FloatType or type(args[1]) == types.IntType) and \ - (type(args[2]) == types.FloatType or type(args[2]) == types.IntType) and \ - (type(args[3]) == types.FloatType or type(args[3]) == types.IntType) and \ - type(args[4]) == types.FloatType: - # These 4 args are xmin, xmax, ymin, ymax - xmin, xmax, ymin, ymax = args[0:4] - args = args[4:] - else: - # These values are ignored if pltr and pltr_data are defined in any case. - # So pick some convenient defaults that work for the pltr0, None case - xmin = -1. - xmax = 1. - ymin = -1. - ymax = 1. - - # shade_min, shade_max, sh_cmap, sh_color, sh_width, must be present. - # sh_color can be either integer or float. - if len(args) > 5 and \ - type(args[0]) == types.FloatType and \ - type(args[1]) == types.FloatType and \ - type(args[2]) == types.IntType and \ - (type(args[3]) == types.FloatType or type(args[3]) == types.IntType) and \ - type(args[4]) == types.IntType: - shade_min, shade_max, sh_cmap, sh_color, sh_width = args[0:5] - args = args[5:] - else: - raise ValueError, \ - "shade_min, shade_max, sh_cmap, sh_color, sh_width, must be present" - - # min_color, min_width, max_color, max_width are optional. - if len(args) > 4 and \ - type(args[0]) == types.IntType and \ - type(args[1]) == types.IntType and \ - type(args[2]) == types.IntType and \ - type(args[3]) == types.IntType: - # These 4 args are - min_color, min_width, max_color, max_width = args[0:4] - args = args[4:] - else: - # Turn off boundary colouring - min_color, min_width, max_color, max_width = (0,0,0,0) - - # rect must be present. - if len(args) > 0 and type(args[0]) == types.IntType: - rect = args[0] - args = args[1:] - else: - raise ValueError, "Missing rect argument" - - if len(args) > 0 and ( \ - type(args[0]) == types.StringType or \ - type(args[0]) == types.FunctionType or \ - type(args[0]) == types.BuiltinFunctionType): - pltr = args[0] - # Handle the string names for the callbacks though specifying the - # built-in function name directly (without the surrounding quotes) - # or specifying any user-defined transformation function - # (following above rules) works fine too. - if type(pltr) == types.StringType: - if pltr == "pltr0": - pltr = pltr0 - elif pltr == "pltr1": - pltr = pltr1 - elif pltr == "pltr2": - pltr = pltr2 - else: - raise ValueError, "pltr string is unrecognized" - - args = args[1:] - # Handle pltr_data or separate xg, yg, [wrap] - if len(args) == 0: - # Default pltr_data - pltr_data = None - elif len(args) == 1: - #Must be pltr_data - pltr_data = args[0] - args = args[1:] - elif len(args) >= 2: - xg = Numeric.asarray(args[0]) - if len(xg.shape) < 1 or len(xg.shape) > 2: - raise ValueError, "xg must be 1D or 2D array" - yg = Numeric.asarray(args[1]) - if len(yg.shape) != len(xg.shape): - raise ValueError, "yg must have same number of dimensions as xg" - args = args[2:] - # wrap only relevant if xg and yg specified. - if len(args) > 0: - if type(args[0]) == types.IntType: - wrap = args[0] - args = args[1:] - if len(xg.shape) == 2 and len(yg.shape) == 2 and \ - z.shape == xg.shape and z.shape == yg.shape: - # handle wrap - if wrap == 1: - z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) - xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) - yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) - elif wrap == 2: - z = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) - xg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) - yg = Numeric.transpose(Numeric.resize( \ - Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) - elif wrap != 0: - raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." - elif wrap != 0: - raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" - else: - raise ValueError, "Specified wrap is not an integer" - pltr_data = (xg, yg) - else: - # default is identity transformation - pltr = pltr0 - pltr_data = None - if len(args) > 0: - raise ValueError, "Too many arguments for plshade" - - _plshade(z, xmin, xmax, ymin, ymax, \ - shade_min, shade_max, sh_cmap, sh_color, sh_width, \ - min_color, min_width, max_color, max_width, rect, pltr, pltr_data) -plshade.__doc__ = _plshade.__doc__ - -# Redefine plscmap1l to have the user-friendly interface -# Allowable syntaxes: - -# plscmap1l(itype, pos, coord1, coord2, coord3[, rev]) - -_plscmap1l = plscmap1l -def plscmap1l(itype, pos, coord1, coord2, coord3, *args): - - pos = Numeric.asarray(pos) - if len(pos.shape) != 1: - raise ValueError, "Expected 1D pos array" - - if len(args) == 0: - # Default rev - rev = Numeric.zeros(pos.shape[0]-1) - elif len(args) == 1: - rev = Numeric.asarray(args[0]) - else: - raise ValueError, "Too many arguments to plscmap1l" - _plscmap1l(itype, pos, coord1, coord2, coord3, rev) -plscmap1l.__doc__ = _plscmap1l.__doc__ Copied: trunk/bindings/python/plplot.py.Numeric (from rev 7759, trunk/bindings/python/plplot.py) =================================================================== --- trunk/bindings/python/plplot.py.Numeric (rev 0) +++ trunk/bindings/python/plplot.py.Numeric 2007-07-23 14:02:11 UTC (rev 7760) @@ -0,0 +1,555 @@ +# Copyright 2002 Gary Bishop and Alan W. Irwin +# This file is part of PLplot. + +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as published by +# the Free Software Foundation; version 2 of the License. + +# PLplot 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 Library General Public License for more details. + +# You should have received a copy of the GNU Library General Public License +# along with the file PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# Wrap raw python interface to C API, plplotc, with this user-friendly version +# which implements some useful variations of the argument lists. + +from plplotc import * +import types +import Numeric + +# Redefine plcont to have the user-friendly interface +# Allowable syntaxes: + +# plcont( z, [kx, lx, ky, ly], clev, [pltr, [pltr_data] or [xg, yg, [wrap]]]) +# N.B. Brackets represent options here and not python lists! + +# All unbracketed arguments within brackets must all be present or all be +# missing. Furthermore, z must be a 2D array, kx, lx, ky, ly must all be +# integers, clev must be a 1D array, pltr can be a function reference or +# string, pltr_data is an optional arbitrary data object, xg and yg are +# optional 1D or 2D arrays and wrap (which only works if xg and yg +# are specified) is 0, 1, or 2. + +# If pltr is a string it must be either "pltr0", "pltr1", or "pltr2" to +# refer to those built-in transformation functions. Alternatively, the +# function names pltr0, pltr1, or pltr2 may be specified to refer to +# the built-in transformation functions or an arbitrary name for a +# user-defined transformation function may be specified. Such functions +# must have x, y, and optional pltr_data arguments and return arbitrarily +# transformed x' and y' in a tuple. The built-in pltr's such as pltr1 and +# pltr2 use pltr_data = tuple(xg, yg), and for this oft-used case (and any +# other user-defined pltr which uses a tuple of two arrays for pltr_data), +# we also provide optional xg and yg arguments separately as an alternative +# to the tuple method of providing these data. Note, that pltr_data cannot +# be in the argument list if xg and yg are there, and vice versa. Also note +# that the built-in pltr0 and some user-defined transformation functions +# ignore the auxiliary pltr_data (or the alternative xg and yg) in which +# case neither pltr_data nor xg and yg need to be specified. + +_plcont = plcont +def plcont(z, *args): + z = Numeric.asarray(z) + if len(z.shape) != 2: + raise ValueError, "Expected 2D z array" + + if len(args) > 4 and type(args[0]) == types.IntType: + for i in range(1,4): + if type(args[i]) != types.IntType: + raise ValueError, "Expected 4 ints for kx,lx,ky,ly" + + else: + # these 4 args are the kx, lx, ky, ly ints + ifdefault_range = 0 + kx,lx,ky,ly = args[0:4] + args = args[4:] + else: + ifdefault_range = 1 + + if len(args) > 0: + clev = Numeric.asarray(args[0]) + if len(clev.shape) !=1: + raise ValueError, "Expected 1D clev array" + args = args[1:] + else: + raise ValueError, "Missing clev argument" + + if len(args) > 0 and ( \ + type(args[0]) == types.StringType or \ + type(args[0]) == types.FunctionType or \ + type(args[0]) == types.BuiltinFunctionType): + pltr = args[0] + # Handle the string names for the callbacks though specifying the + # built-in function name directly (without the surrounding quotes) + # or specifying any user-defined transformation function + # (following above rules) works fine too. + if type(pltr) == types.StringType: + if pltr == "pltr0": + pltr = pltr0 + elif pltr == "pltr1": + pltr = pltr1 + elif pltr == "pltr2": + pltr = pltr2 + else: + raise ValueError, "pltr string is unrecognized" + + args = args[1:] + # Handle pltr_data or separate xg, yg, [wrap] + if len(args) == 0: + # Default pltr_data + pltr_data = None + elif len(args) == 1: + #Must be pltr_data + pltr_data = args[0] + args = args[1:] + elif len(args) >= 2: + xg = Numeric.asarray(args[0]) + if len(xg.shape) < 1 or len(xg.shape) > 2: + raise ValueError, "xg must be 1D or 2D array" + yg = Numeric.asarray(args[1]) + if len(yg.shape) != len(xg.shape): + raise ValueError, "yg must have same number of dimensions as xg" + args = args[2:] + # wrap only relevant if xg and yg specified. + if len(args) > 0: + if type(args[0]) == types.IntType: + wrap = args[0] + args = args[1:] + if len(xg.shape) == 2 and len(yg.shape) == 2 and \ + z.shape == xg.shape and z.shape == yg.shape: + # handle wrap + if wrap == 1: + z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) + xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) + yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) + elif wrap == 2: + z = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) + xg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) + yg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) + elif wrap != 0: + raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." + elif wrap != 0: + raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" + else: + raise ValueError, "Specified wrap is not an integer" + pltr_data = (xg, yg) + else: + # default is identity transformation + pltr = pltr0 + pltr_data = None + if len(args) > 0: + raise ValueError, "Too many arguments for plcont" + if ifdefault_range: + # Default is to take full range (still using fortran convention + # for indices which is embedded in the PLplot library API) + kx = 1 + lx = z.shape[0] + ky = 1 + ly = z.shape[1] + _plcont(z, kx, lx, ky, ly, clev, pltr, pltr_data) +plcont.__doc__ = _plcont.__doc__ + +# Redefine plvect to have the user-friendly interface +# Allowable syntaxes: + +# plvect( u, v, scaling, [pltr, [pltr_data] or [xg, yg, [wrap]]]) +_plvect = plvect +def plvect(u, v, *args): + u = Numeric.asarray(u) + v = Numeric.asarray(v) + + if len(u.shape) != 2: + raise ValueError, "Expected 2D u array" + if len(v.shape) != 2: + raise ValueError, "Expected 2D v array" + if (u.shape[0] != v.shape[0]) or (u.shape[1] != v.shape[1]) : + raise ValueError, "Expected u and v arrays to be the same dimensions" + + if len(args) > 0 and type(args[0]) == types.FloatType : + scaling = args[0] + args = args[1:] + else: + raise ValueError, "Missing scaling argument" + + if len(args) > 0 and ( \ + type(args[0]) == types.StringType or \ + type(args[0]) == types.FunctionType or \ + type(args[0]) == types.BuiltinFunctionType): + pltr = args[0] + # Handle the string names for the callbacks though specifying the + # built-in function name directly (without the surrounding quotes) + # or specifying any user-defined transformation function + # (following above rules) works fine too. + if type(pltr) == types.StringType: + if pltr == "pltr0": + pltr = pltr0 + elif pltr == "pltr1": + pltr = pltr1 + elif pltr == "pltr2": + pltr = pltr2 + else: + raise ValueError, "pltr string is unrecognized" + + args = args[1:] + # Handle pltr_data or separate xg, yg, [wrap] + if len(args) == 0: + # Default pltr_data + pltr_data = None + elif len(args) == 1: + #Must be pltr_data + pltr_data = args[0] + args = args[1:] + elif len(args) >= 2: + xg = Numeric.asarray(args[0]) + if len(xg.shape) < 1 or len(xg.shape) > 2: + raise ValueError, "xg must be 1D or 2D array" + yg = Numeric.asarray(args[1]) + if len(yg.shape) != len(xg.shape): + raise ValueError, "yg must have same number of dimensions as xg" + args = args[2:] + # wrap only relevant if xg and yg specified. + if len(args) > 0: + if type(args[0]) == types.IntType: + wrap = args[0] + args = args[1:] + if len(xg.shape) == 2 and len(yg.shape) == 2 and \ + u.shape == xg.shape and u.shape == yg.shape: + # handle wrap + if wrap == 1: + u = Numeric.resize(u, (u.shape[0]+1, u.shape[1])) + v = Numeric.resize(v, (v.shape[0]+1, v.shape[1])) + xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) + yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) + elif wrap == 2: + u = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(u), (u.shape[1]+1, u.shape[0]))) + v = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(v), (v.shape[1]+1, v.shape[0]))) + xg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) + yg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) + elif wrap != 0: + raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." + elif wrap != 0: + raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" + else: + raise ValueError, "Specified wrap is not an integer" + pltr_data = (xg, yg) + else: + # default is identity transformation + pltr = pltr0 + pltr_data = None + if len(args) > 0: + raise ValueError, "Too many arguments for plvect" + _plvect(u, v, scaling, pltr, pltr_data) +plvect.__doc__ = _plvect.__doc__ + +# Redefine plshades to have the user-friendly interface +# Allowable syntaxes: + +# plshades(z, [xmin, xmax, ymin, ymax,] clev, \ +# fill_width, [cont_color, cont_width,], rect, \ +# [pltr, [pltr_data] or [xg, yg, [wrap]]]) + +_plshades = plshades +def plshades(z, *args): + z = Numeric.asarray(z) + if len(z.shape) != 2: + raise ValueError, "Expected 2D z array" + + if len(args) > 4 and \ + (type(args[0]) == types.FloatType or type(args[0]) == types.IntType) and \ + (type(args[1]) == types.FloatType or type(args[1]) == types.IntType) and \ + (type(args[2]) == types.FloatType or type(args[2]) == types.IntType) and \ + (type(args[3]) == types.FloatType or type(args[3]) == types.IntType): + # These 4 args are xmin, xmax, ymin, ymax + xmin, xmax, ymin, ymax = args[0:4] + args = args[4:] + else: + # These values are ignored if pltr and pltr_data are defined in any case. + # So pick some convenient defaults that work for the pltr0, None case + xmin = -1. + xmax = 1. + ymin = -1. + ymax = 1. + + # clev must be present. + if len(args) > 0: + clev = Numeric.asarray(args[0]) + if len(clev.shape) !=1: + raise ValueError, "Expected 1D clev array" + args = args[1:] + else: + raise ValueError, "Missing clev argument" + + # fill_width must be present + if len(args) > 0 and type(args[0]) == types.IntType: + fill_width = args[0] + args = args[1:] + else: + raise ValueError, "Missing fill_width argument" + + # cont_color and cont_width are optional. + if len(args) > 2 and \ + type(args[0]) == types.IntType and \ + type(args[1]) == types.IntType: + # These 2 args are + cont_color, cont_width = args[0:2] + args = args[2:] + else: + # Turn off contouring. + cont_color, cont_width = (0,0) + + # rect must be present. + if len(args) > 0 and type(args[0]) == types.IntType: + rect = args[0] + args = args[1:] + else: + raise ValueError, "Missing rect argument" + + if len(args) > 0 and ( \ + type(args[0]) == types.StringType or \ + type(args[0]) == types.FunctionType or \ + type(args[0]) == types.BuiltinFunctionType): + pltr = args[0] + # Handle the string names for the callbacks though specifying the + # built-in function name directly (without the surrounding quotes) + # or specifying any user-defined transformation function + # (following above rules) works fine too. + if type(pltr) == types.StringType: + if pltr == "pltr0": + pltr = pltr0 + elif pltr == "pltr1": + pltr = pltr1 + elif pltr == "pltr2": + pltr = pltr2 + else: + raise ValueError, "pltr string is unrecognized" + + args = args[1:] + # Handle pltr_data or separate xg, yg, [wrap] + if len(args) == 0: + # Default pltr_data + pltr_data = None + elif len(args) == 1: + #Must be pltr_data + pltr_data = args[0] + args = args[1:] + elif len(args) >= 2: + xg = Numeric.asarray(args[0]) + if len(xg.shape) < 1 or len(xg.shape) > 2: + raise ValueError, "xg must be 1D or 2D array" + yg = Numeric.asarray(args[1]) + if len(yg.shape) != len(xg.shape): + raise ValueError, "yg must have same number of dimensions as xg" + args = args[2:] + # wrap only relevant if xg and yg specified. + if len(args) > 0: + if type(args[0]) == types.IntType: + wrap = args[0] + args = args[1:] + if len(xg.shape) == 2 and len(yg.shape) == 2 and \ + z.shape == xg.shape and z.shape == yg.shape: + # handle wrap + if wrap == 1: + z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) + xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) + yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) + elif wrap == 2: + z = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) + xg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) + yg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) + elif wrap != 0: + raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." + elif wrap != 0: + raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" + else: + raise ValueError, "Specified wrap is not an integer" + pltr_data = (xg, yg) + else: + # default is identity transformation + pltr = pltr0 + pltr_data = None + if len(args) > 0: + raise ValueError, "Too many arguments for plshades" + + _plshades(z, xmin, xmax, ymin, ymax, clev, \ + fill_width, cont_color, cont_width, rect, pltr, pltr_data) +plshades.__doc__ = _plshades.__doc__ + +# Redefine plshade to have the user-friendly interface +# Allowable syntaxes: + +# _plshade(z, [xmin, xmax, ymin, ymax,] \ +# shade_min, shade_max, sh_cmap, sh_color, sh_width, \ +# [min_color, min_width, max_color, max_width,] rect, \ +# [pltr, [pltr_data] or [xg, yg, [wrap]]]) + +# plshade(z, [xmin, xmax, ymin, ymax,] clev, \ +# fill_width, [cont_color, cont_width,], rect, \ +# [pltr, [pltr_data] or [xg, yg, [wrap]]]) + +_plshade = plshade +def plshade(z, *args): + z = Numeric.asarray(z) + if len(z.shape) != 2: + raise ValueError, "Expected 2D z array" + + # Extra check on shade_min = float on end is absolutely necessary + # to unambiguously figure out where we are in the argument list. + if len(args) > 9 and \ + (type(args[0]) == types.FloatType or type(args[0]) == types.IntType) and \ + (type(args[1]) == types.FloatType or type(args[1]) == types.IntType) and \ + (type(args[2]) == types.FloatType or type(args[2]) == types.IntType) and \ + (type(args[3]) == types.FloatType or type(args[3]) == types.IntType) and \ + type(args[4]) == types.FloatType: + # These 4 args are xmin, xmax, ymin, ymax + xmin, xmax, ymin, ymax = args[0:4] + args = args[4:] + else: + # These values are ignored if pltr and pltr_data are defined in any case. + # So pick some convenient defaults that work for the pltr0, None case + xmin = -1. + xmax = 1. + ymin = -1. + ymax = 1. + + # shade_min, shade_max, sh_cmap, sh_color, sh_width, must be present. + # sh_color can be either integer or float. + if len(args) > 5 and \ + type(args[0]) == types.FloatType and \ + type(args[1]) == types.FloatType and \ + type(args[2]) == types.IntType and \ + (type(args[3]) == types.FloatType or type(args[3]) == types.IntType) and \ + type(args[4]) == types.IntType: + shade_min, shade_max, sh_cmap, sh_color, sh_width = args[0:5] + args = args[5:] + else: + raise ValueError, \ + "shade_min, shade_max, sh_cmap, sh_color, sh_width, must be present" + + # min_color, min_width, max_color, max_width are optional. + if len(args) > 4 and \ + type(args[0]) == types.IntType and \ + type(args[1]) == types.IntType and \ + type(args[2]) == types.IntType and \ + type(args[3]) == types.IntType: + # These 4 args are + min_color, min_width, max_color, max_width = args[0:4] + args = args[4:] + else: + # Turn off boundary colouring + min_color, min_width, max_color, max_width = (0,0,0,0) + + # rect must be present. + if len(args) > 0 and type(args[0]) == types.IntType: + rect = args[0] + args = args[1:] + else: + raise ValueError, "Missing rect argument" + + if len(args) > 0 and ( \ + type(args[0]) == types.StringType or \ + type(args[0]) == types.FunctionType or \ + type(args[0]) == types.BuiltinFunctionType): + pltr = args[0] + # Handle the string names for the callbacks though specifying the + # built-in function name directly (without the surrounding quotes) + # or specifying any user-defined transformation function + # (following above rules) works fine too. + if type(pltr) == types.StringType: + if pltr == "pltr0": + pltr = pltr0 + elif pltr == "pltr1": + pltr = pltr1 + elif pltr == "pltr2": + pltr = pltr2 + else: + raise ValueError, "pltr string is unrecognized" + + args = args[1:] + # Handle pltr_data or separate xg, yg, [wrap] + if len(args) == 0: + # Default pltr_data + pltr_data = None + elif len(args) == 1: + #Must be pltr_data + pltr_data = args[0] + args = args[1:] + elif len(args) >= 2: + xg = Numeric.asarray(args[0]) + if len(xg.shape) < 1 or len(xg.shape) > 2: + raise ValueError, "xg must be 1D or 2D array" + yg = Numeric.asarray(args[1]) + if len(yg.shape) != len(xg.shape): + raise ValueError, "yg must have same number of dimensions as xg" + args = args[2:] + # wrap only relevant if xg and yg specified. + if len(args) > 0: + if type(args[0]) == types.IntType: + wrap = args[0] + args = args[1:] + if len(xg.shape) == 2 and len(yg.shape) == 2 and \ + z.shape == xg.shape and z.shape == yg.shape: + # handle wrap + if wrap == 1: + z = Numeric.resize(z, (z.shape[0]+1, z.shape[1])) + xg = Numeric.resize(xg, (xg.shape[0]+1, xg.shape[1])) + yg = Numeric.resize(yg, (yg.shape[0]+1, yg.shape[1])) + elif wrap == 2: + z = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(z), (z.shape[1]+1, z.shape[0]))) + xg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(xg), (xg.shape[1]+1, xg.shape[0]))) + yg = Numeric.transpose(Numeric.resize( \ + Numeric.transpose(yg), (yg.shape[1]+1, yg.shape[0]))) + elif wrap != 0: + raise ValueError, "Invalid wrap specifier, must be 0, 1 or 2." + elif wrap != 0: + raise ValueError, "Non-zero wrap specified and xg and yg are not 2D arrays" + else: + raise ValueError, "Specified wrap is not an integer" + pltr_data = (xg, yg) + else: + # default is identity transformation + pltr = pltr0 + pltr_data = None + if len(args) > 0: + raise ValueError, "Too many arguments for plshade" + + _plshade(z, xmin, xmax, ymin, ymax, \ + shade_min, shade_max, sh_cmap, sh_color, sh_width, \ + min_color, min_width, max_color, max_width, rect, pltr, pltr_data) +plshade.__doc__ = _plshade.__doc__ + +# Redefine plscmap1l to have the user-friendly interface +# Allowable syntaxes: + +# plscmap1l(itype, pos, coord1, coord2, coord3[, rev]) + +_plscmap1l = plscmap1l +def plscmap1l(itype, pos, coord1, coord2, coord3, *args): + + pos = Numeric.asarray(pos) + if len(pos.shape) != 1: + raise ValueError, "Expected 1D pos array" + + if len(args) == 0: + # Default rev + rev = Numeric.zeros(pos.shape[0]-1) + elif len(args) == 1: + rev = Numeric.asarray(args[0]) + else: + raise ValueError, "Too many arguments to plscmap1l" + _plscmap1l(itype, pos, coord1, coord2, coord3, rev) +plscmap1l.__doc__ = _plscmap1l.__doc__ Modified: trunk/cmake/modules/python.cmake =================================================================== --- trunk/cmake/modules/python.cmake 2007-07-20 17:21:47 UTC (rev 7759) +++ trunk/cmake/modules/python.cmake 2007-07-23 14:02:11 UTC (rev 7760) @@ -61,13 +61,36 @@ endif(ENABLE_python) if(ENABLE_python AND NOT NUMERIC_INCLUDE_PATH) - # Check for Python Numeric header in same include path or Numeric - # subdirectory of that path to avoid version mismatch. - find_path( - NUMERIC_INCLUDE_PATH - arrayobject.h - ${PYTHON_INCLUDE_PATH} ${PYTHON_INCLUDE_PATH}/Numeric + option(HAVE_NUMPY "New version of numpy available" OFF) + if (HAVE_NUMPY) + # First check for new version of numpy (replaces Numeric) + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.get_include()" + OUTPUT_VARIABLE NUMPY_INCLUDE_PATH + RESULT_VARIABLE NUMPY_ERR + OUTPUT_STRIP_TRAILING_WHITESPACE ) + if (NUMPY_ERR) + set(HAVE_NUMPY OFF) + endif (NUMPY_ERR) + endif (HAVE_NUMPY) + if (HAVE_NUMPY) + # Set include path to find numpy headers + set(NUMERIC_INCLUDE_PATH ${NUMPY_INCLUDE_PATH}/numpy CACHE PATH "Path to python Numeric/numpy include files") + set(PYTHON_NUMERIC_NAME numpy CACHE INTERNAL "") + else (HAVE_NUMPY) + # Check for Python Numeric header in same include path or Numeric + # subdirectory of that path to avoid version mismatch. + find_path( + NUMERIC_INCLUDE_PATH + arrayobject.h + ${PYTHON_INCLUDE_PATH} ${PYTHON_INCLUDE_PATH}/Numeric + ) + if (NUMERIC_INCLUDE_PATH) + set(PYTHON_NUMERIC_NAME Numeric CACHE INTERNAL "") + endif (NUMERIC_INCLUDE_PATH) + endif (HAVE_NUMPY) if(NUMERIC_INCLUDE_PATH) set( PYTHON_INCLUDE_PATH Modified: trunk/examples/python/CMakeLists.txt =================================================================== --- trunk/examples/python/CMakeLists.txt 2007-07-20 17:21:47 UTC (rev 7759) +++ trunk/examples/python/CMakeLists.txt 2007-07-23 14:02:11 UTC (rev 7760) @@ -43,30 +43,46 @@ ) set(python_SCRIPTS) +set(python_SCRIPTS_CREATE) set(python_DATA) +set(python_DATA_CREATE) foreach(STRING_INDEX ${python_STRING_INDICES}) + configure_file(xw${STRING_INDEX}.py.in ${CMAKE_CURRENT_BINARY_DIR}/xw${STRING_INDEX}.py) set(python_SCRIPTS ${python_SCRIPTS} x${STRING_INDEX}) - set(python_DATA ${python_DATA} xw${STRING_INDEX}.py) + set(python_DATA_CREATE ${python_DATA_CREATE} ${CMAKE_CURRENT_BINARY_DIR}/xw${STRING_INDEX}.py) endforeach(STRING_INDEX ${python_STRING_INDICES}) +configure_file(xw14.py.in ${CMAKE_CURRENT_BINARY_DIR}/xw14.py) +configure_file(xw17.py.in ${CMAKE_CURRENT_BINARY_DIR}/xw17.py) +configure_file(prova.py.in ${CMAKE_CURRENT_BINARY_DIR}/prova.py) +configure_file(qplplot.py.in ${CMAKE_CURRENT_BINARY_DIR}/qplplot.py) +if (ENABLE_pygcw) + configure_file(plplotcanvas_demo.py.in ${CMAKE_CURRENT_BINARY_DIR}/plplotcanvas_demo.py) + configure_file(plplotcanvas_animation.py.in ${CMAKE_CURRENT_BINARY_DIR}/plplotcanvas_animation.py) +endif (ENABLE_pygcw) + # This list contains standalone scripts which are executable and which # should be installed in the examples/python directory. set( python_SCRIPTS ${python_SCRIPTS} -prova.py pythondemos.py x14 x17 -xw14.py -xw17.py ) +set( +python_SCRIPTS_CREATE +${python_SCRIPTS_CREATE} +${CMAKE_CURRENT_BINARY_DIR}/prova.py +${CMAKE_CURRENT_BINARY_DIR}/xw14.py +${CMAKE_CURRENT_BINARY_DIR}/xw17.py +) if(ENABLE_pygcw) set( - python_SCRIPTS - ${python_SCRIPTS} - plplotcanvas_demo.py - plplotcanvas_animation.py + python_SCRIPTS_CREATE + ${python_SCRIPTS_CREATE} + ${CMAKE_CURRENT_BINARY_DIR}/plplotcanvas_demo.py + ${CMAKE_CURRENT_BINARY_DIR}/plplotcanvas_animation.py ) endif(ENABLE_pygcw) @@ -83,6 +99,10 @@ DESTINATION ${DATA_DIR}/examples/python PERMISSIONS ${PERM_SCRIPTS} ) +install(FILES ${python_SCRIPTS_CREATE} +DESTINATION ${DATA_DIR}/examples/python +PERMISSIONS ${PERM_SCRIPTS} +) # This list contains python modules which are not executable on their own and # data files that should be installed in the examples/python directory. @@ -91,8 +111,12 @@ python_DATA ${python_DATA} README.pythondemos -qplplot.py ) +set( +python_DATA_CREATE +${python_DATA_CREATE} +${CMAKE_CURRENT_BINARY_DIR}/qplplot.py +) if(ENABLE_pygcw) set( @@ -112,6 +136,10 @@ DESTINATION ${DATA_DIR}/examples/python PERMISSIONS ${PERM_DATA} ) +install(FILES ${python_DATA_CREATE} +DESTINATION ${DATA_DIR}/examples/python +PERMISSIONS ${PERM_DATA} +) if(BUILD_TEST AND NOT CMAKE_CURRENT_BINARY_DIR STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}" Deleted: trunk/examples/python/plplotcanvas_animation.py =================================================================== --- trunk/examples/python/plplotcanvas_animation.py 2007-07-20 17:21:47 UTC (rev 7759) +++ trunk/examples/python/plplotcanvas_animation.py 2007-07-23 14:02:11 UTC (rev 7760) @@ -1,238 +0,0 @@ -#!/usr/bin/env python -""" -animation.py - Demonstrates the use of the plplot canvas widget with gtk. - - Copyright (C) 2004, 2005 Thomas J. Duck - All rights reserved. - - Thomas J. Duck <tom...@da...> - Department of Physics and Atmospheric Science, - Dalhousie University, Halifax, Nova Scotia, Canada, B3H 3J5 - - $Author$ - $Revision$ - $Date$ - $Name$ - - -NOTICE - - This program is free software; you can 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 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301 USA - - -DESCRIPTION - - This program demonstrates the use of the plplot canvas widget with gtk. - Two graphs are draw in a window. When the Execute button is pressed, - two different waves progress through the graph in real time. Plotting - to the two graphs is handled in two different threads. -""" -import sys,threading -import Numeric -import plplot_python_start -import plplotcanvas -import plplot -import gtk - - -# The number of time steps -STEPS = 100 - -# The number of points and period for the first wave -NPTS = 100 -PERIOD = 30 - -# The width and height for each plot widget -WIDTH = 800 -HEIGHT = 300 - -# Run the plots in different threads -thread0 = None -thread1 = None - -# Create two different canvases -canvas0=None -canvas1=None - -# Create the x array -x = arange(NPTS) - -# Lock on the gtkstate so that we don't try to plot after gtk_main_quit -GTKSTATE_CONTINUE=True -GTKSTATE_QUIT=False -gtk_state_lock = threading.Lock() -gtk_state = GTKSTATE_CONTINUE - -# setup_plt - preparation for plotting an animation to a canvas -def setup_plot(canvas,title): - # Set up the viewport and window - canvas.vsta() - canvas.wind(x[0],x[NPTS-1],-2.,2.) - - # Set the pen width - canvas.wid(2) - - # The axes should be persistent, so that they don't have to be - # replotted every time (which would slow down the animation) - canvas.use_persistence(True); - - # Draw the axes - canvas.col0(15) - canvas.box("bcnst",0.,0,"bcnstv",0.,0); - canvas.lab("Phase","Amplitude",title); - - # Prepare for plotting - canvas.col0(canvas.get_stream_number()+8) - - # The animated data should not be persistent - canvas.use_persistence(False); - -# plot - draws a plot on a canvas -def plot(canvas,offset,title): - - global x - - # Get the stream number - Nstream = canvas.get_stream_number() - - # Generate the sinusoid - y = sin(2.*3.14*(x+offset*(Nstream+1))/PERIOD/(Nstream+1)) - - # Draw the line - canvas.line(x, y) - - # Advance the page - canvas.adv(0) - -# Delete event callback -def delete_event(widget, event, data=None): - return gtk.FALSE - -# Destroy event calback -def destroy(widget, data=None): - - global gtk_state - - gtk_state_lock.acquire() - gtk_state = GTKSTATE_QUIT - gtk_state_lock.release() - - gtk.main_quit() - -def plot_thread(canvas,title): - - # Draw plots in succession - for i in range(STEPS): - gtk.threads_enter() - - # Lock the current gtk state - gtk_state_lock.acquire() - - # Check to make sure gtk hasn't quit - if gtk_state == GTKSTATE_QUIT: - gtk_state_lock.release() - gtk.threads_leave() - return - - # Draw the plot - plot(canvas,i,title) - - # Release the lock - gtk_state_lock.release() - gtk.threads_leave() - -# Start threads callback from execute button -def start_threads(widget,data): - - global thread0 - global thread1 - - # Ignore call if threads are currently active - if (thread0!=None or thread1!=None) and \ - (thread0.isAlive() or thread1.isAlive()): return - - # Create the two plotting threads - thread0 = threading.Thread(None,plot_thread, - kwargs={"canvas":canvas0, - "title":"A phase-progressing wave"}) - thread0.start() - - thread1 = threading.Thread(None,plot_thread, - kwargs={"canvas":canvas1, - "title":"Another phase-progressing wave"}) - thread1.start() - -if __name__ == "__main__": - - # Parse the options - plplot.plparseopts(sys.argv,plplot.PL_PARSE_FULL); - - # Initialize - gtk.threads_init() - - # Create the first canvas, set its size, draw some axes on it, and - # place it in a frame - canvas0=plplotcanvas.Canvas() - canvas0.set_size(WIDTH,HEIGHT) - canvas0.adv(0) # Advance the page to finalize the plot - setup_plot(canvas0,"A phase-progressing wave") - canvas0frame=gtk.Frame() - canvas0frame.set_shadow_type(type=gtk.SHADOW_ETCHED_OUT) - canvas0frame.add(canvas0) - - # Create the second canvas, set its size, draw some axes on it, and - # place it in a frame - canvas1=plplotcanvas.Canvas() - canvas1.set_size(WIDTH,HEIGHT) - canvas1.adv(0) # Advance the page to finalize the plot - setup_plot(canvas1,"Another phase-progressing wave") - canvas1frame=gtk.Frame() - canvas1frame.set_shadow_type(type=gtk.SHADOW_ETCHED_OUT) - canvas1frame.add(canvas1) - - # Create a button and put it in a box - button = gtk.Button (stock=gtk.STOCK_EXECUTE); - button.connect("clicked", start_threads, None) - button.set_border_width(10) - buttonbox = gtk.HBox() - buttonbox.pack_start(button,True,False,0) - - # Create and fill the vbox with the widgets - vbox = gtk.VBox() - vbox.pack_start(canvas0frame,True,False,0) - vbox.pack_start(canvas1frame,True,False,10) - vbox.pack_start(buttonbox,True,False,0) - - # Create a new window - window = gtk.Window(gtk.WINDOW_TOPLEVEL) - - # Set the border width of the window - window.set_border_width(10) - - # Connect the signal handlers to the window decorations - window.connect("delete_event",delete_event) - window.connect("destroy",destroy) - - # Put the vbox into the window - window.add(vbox) - - # Display everything - window.show_all() - - # Start the gtk main loop - gtk.threads_enter() - gtk.main() - gtk.threads_leave() Copied: trunk/examples/python/plplotcanvas_animation.py.in (from rev 7759, trunk/examples/python/plplotcanvas_animation.py) =================================================================== --- trunk/examples/python/plplotcanvas_animation.py.in (rev 0) +++ trunk/examples/python/plplotcanvas_animation.py.in 2007-07-23 14:02:11 UTC (rev 7760) @@ -0,0 +1,238 @@ +#!/usr/bin/env python +""" +animation.py - Demonstrates the use of the plplot canvas widget with gtk. + + Copyright (C) 2004, 2005 Thomas J. Duck + All rights reserved. + + Thomas J. Duck <tom...@da...> + Department of Physics and Atmospheric Science, + Dalhousie University, Halifax, Nova Scotia, Canada, B3H 3J5 + + $Author$ + $Revision$ + $Date$ + $Name$ + + +NOTICE + + This program is free software; you can 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 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA + + +DESCRIPTION + + This program demonstrates the use of the plplot canvas widget with gtk. + Two graphs are draw in a window. When the Execute button is pressed, + two different waves progress through the graph in real time. Plotting + to the two graphs is handled in two different threads. +""" +import sys,threading +import ${PYTHON_NUMERIC_NAME} +import plplot_python_start +import plplotcanvas +import plplot +import gtk + + +# The number of time steps +STEPS = 100 + +# The number of points and period for the first wave +NPTS = 100 +PERIOD = 30 + +# The width and height for each plot widget +WIDTH = 800 +HEIGHT = 300 + +# Run the plots in different threads +thread0 = None +thread1 = None + +# Create two different canvases +canvas0=None +canvas1=None + +# Create the x array +x = ${PYTHON_NUMERIC_NAME}.arange(NPTS) + +# Lock on the gtkstate so that we don't try to plot after gtk_main_quit +GTKSTATE_CONTINUE=True +GTKSTATE_QUIT=False +gtk_state_lock = threading.Lock() +gtk_state = GTKSTATE_CONTINUE + +# setup_plt - preparation for plotting an animation to a canvas +def setup_plot(canvas,title): + # Set up the viewport and window + canvas.vsta() + canvas.wind(x[0],x[NPTS-1],-2.,2.) + + # Set the pen width + canvas.wid(2) + + # The axes should be persistent, so that they don't have to be + # replotted every time (which would slow down th... [truncated message content] |
From: <and...@us...> - 2007-07-27 08:28:21
|
Revision: 7765 http://plplot.svn.sourceforge.net/plplot/?rev=7765&view=rev Author: andrewross Date: 2007-07-27 01:28:21 -0700 (Fri, 27 Jul 2007) Log Message: ----------- Fix 64-bit issues with python bindings and PLINT. The bindings should now work with either numpy or Numeric on 32-bit and 64-bit systems. Modified Paths: -------------- trunk/bindings/python/plplotcmodule.i trunk/config.h.cmake Modified: trunk/bindings/python/plplotcmodule.i =================================================================== --- trunk/bindings/python/plplotcmodule.i 2007-07-27 08:21:24 UTC (rev 7764) +++ trunk/bindings/python/plplotcmodule.i 2007-07-27 08:28:21 UTC (rev 7765) @@ -58,7 +58,11 @@ #define PyArray_PLFLT PyArray_FLOAT #endif -#define PyArray_PLINT PyArray_LONG +#ifdef HAVE_NUMPY +#define PyArray_PLINT PyArray_INT32 +#else +#define PyArray_PLINT PyArray_INT +#endif /* python-1.5 compatibility mode? */ #define PySequence_Fast_GET_ITEM PySequence_GetItem #define PySequence_Size PySequence_Length @@ -70,7 +74,9 @@ typedef float PLFLT; #endif -typedef long PLINT; +/* This assumes that C int is 32-bit - swig doesn't know about int32_t */ +/* Ideally we should have a typemap for it */ +typedef int PLINT; typedef unsigned int PLUNICODE; typedef PLINT PLBOOL; @@ -105,9 +111,33 @@ PLINT arrays **********************************************************************************/ +/* If Python integers are not 32-bit then we need to do some casting */ +#if SIZEOF_LONG != 4 +%wrapper %{ +/* some really twisted stuff to allow calling a single precision library from python */ +PyArrayObject* myIntArray_ContiguousFromObject(PyObject* in, int type, int mindims, int maxdims) +{ + PyArrayObject* tmp = (PyArrayObject*)PyArray_ContiguousFromObject(in, PyArray_PLINT, + mindims, maxdims); + if (!tmp) { + /* could be an incoming long array which can't be "safely" converted, do it anyway */ + if(PyArray_Check(in)) { + PyErr_Clear(); + tmp = (PyArrayObject*)PyArray_Cast((PyArrayObject*)in, PyArray_PLINT); + } + } + return tmp; +} + %} +#else +%wrapper %{ +#define myIntArray_ContiguousFromObject PyArray_ContiguousFromObject + %} +#endif + /* With preceding count */ %typemap(in) (PLINT n, PLINT *Array) (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; $1 = Alen = tmp->dimensions[0]; $2 = (PLINT*)tmp->data; @@ -116,7 +146,7 @@ /* Trailing count and check consistency with previous */ %typemap(in) (PLINT *ArrayCk, PLINT n) (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; if(tmp->dimensions[0] != Alen) { PyErr_SetString(PyExc_ValueError, "Vectors must be same length."); @@ -129,7 +159,7 @@ /* No count but check consistency with previous */ %typemap(in) PLINT *ArrayCk (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; if(tmp->dimensions[0] != Alen) { PyErr_SetString(PyExc_ValueError, "Vectors must be same length."); @@ -141,7 +171,7 @@ /* Weird case to allow argument to be one shorter than others */ %typemap(in) PLINT *ArrayCkMinus1 (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; if(tmp->dimensions[0] < Alen-1) { PyErr_SetString(PyExc_ValueError, "Vector must be at least length of others minus 1."); @@ -152,7 +182,7 @@ %typemap(freearg) PLINT *ArrayCkMinus1 { Py_DECREF(tmp$argnum);} %typemap(in) PLINT *ArrayCkMinus1Null (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; if(tmp->dimensions[0] < Alen-1) { PyErr_SetString(PyExc_ValueError, "Vector must be at least length of others minus 1."); @@ -164,7 +194,7 @@ /* No length but remember size to check others */ %typemap(in) PLINT *Array (PyArrayObject* tmp) { - tmp = (PyArrayObject *)PyArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); + tmp = (PyArrayObject *)myIntArray_ContiguousFromObject($input, PyArray_PLINT, 1, 1); if(tmp == NULL) return NULL; Alen = tmp->dimensions[0]; $1 = (PLINT*)tmp->data; Modified: trunk/config.h.cmake =================================================================== --- trunk/config.h.cmake 2007-07-27 08:21:24 UTC (rev 7764) +++ trunk/config.h.cmake 2007-07-27 08:28:21 UTC (rev 7765) @@ -101,6 +101,9 @@ /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ #cmakedefine HAVE_NDIR_H 1 +/* Define if python numpy is available */ +#cmakedefine HAVE_NUMPY + /* Define if libpango is available */ #cmakedefine HAVE_PANGO This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2007-08-13 09:50:08
|
Revision: 7788 http://plplot.svn.sourceforge.net/plplot/?rev=7788&view=rev Author: andrewross Date: 2007-08-13 02:50:10 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Consistent with the release notes, make numpy the default numerical library for the python bindings. If you want to ensure you use the old Numeric library you will need to add -DHAVE_NUMPY=OFF. If numpy is not found, then plplot will fall back on trying Numeric anyway. Modified Paths: -------------- trunk/README.release trunk/cmake/modules/plplot.cmake trunk/cmake/modules/python.cmake Modified: trunk/README.release =================================================================== --- trunk/README.release 2007-08-12 00:55:05 UTC (rev 7787) +++ trunk/README.release 2007-08-13 09:50:10 UTC (rev 7788) @@ -74,7 +74,8 @@ 1.4 Python bindings The Python bindings have been updated to use numpy rather than the now -deprecated Numeric python numeric library. +deprecated Numeric python numeric library. If you need to revert to the old +Numeric support, then you should specify the cmake option -DHAVE_NUMPY=OFF. 1.5 Fortran95 documentation Modified: trunk/cmake/modules/plplot.cmake =================================================================== --- trunk/cmake/modules/plplot.cmake 2007-08-12 00:55:05 UTC (rev 7787) +++ trunk/cmake/modules/plplot.cmake 2007-08-13 09:50:10 UTC (rev 7788) @@ -278,6 +278,9 @@ "All language bindings are disabled by default" OFF ) + +option(HAVE_NUMPY "Use numpy rather than depreciated Numeric" ON) + # Load language specific files include(c++) include(fortran) Modified: trunk/cmake/modules/python.cmake =================================================================== --- trunk/cmake/modules/python.cmake 2007-08-12 00:55:05 UTC (rev 7787) +++ trunk/cmake/modules/python.cmake 2007-08-13 09:50:10 UTC (rev 7788) @@ -61,7 +61,6 @@ endif(ENABLE_python) if(ENABLE_python AND NOT NUMERIC_INCLUDE_PATH) - option(HAVE_NUMPY "New version of numpy available" OFF) if (HAVE_NUMPY) # First check for new version of numpy (replaces Numeric) execute_process( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hba...@us...> - 2007-08-14 00:22:26
|
Revision: 7790 http://plplot.svn.sourceforge.net/plplot/?rev=7790&view=rev Author: hbabcock Date: 2007-08-13 17:22:04 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Updated versions for 5.7.4 release. Modified Paths: -------------- trunk/cmake/modules/plplot_version.cmake trunk/configure.ac Modified: trunk/cmake/modules/plplot_version.cmake =================================================================== --- trunk/cmake/modules/plplot_version.cmake 2007-08-13 09:52:17 UTC (rev 7789) +++ trunk/cmake/modules/plplot_version.cmake 2007-08-14 00:22:04 UTC (rev 7790) @@ -1,15 +1,15 @@ # For now, must set this by hand before each release. This value affects # at least the documentation build and perhaps other parts of the release. -set(RELEASE_DATE "2007-03-25") +set(RELEASE_DATE "2007-08-13") # Version data that need review and possible modification for each release. -set(VERSION 5.7.3) +set(VERSION 5.7.4) # CPack version numbers for release tarball name. set(CPACK_PACKAGE_VERSION_MAJOR 5) set(CPACK_PACKAGE_VERSION_MINOR 7) -set(CPACK_PACKAGE_VERSION_PATCH 3) +set(CPACK_PACKAGE_VERSION_PATCH 4) # PLplot library version information. Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2007-08-13 09:52:17 UTC (rev 7789) +++ trunk/configure.ac 2007-08-14 00:22:04 UTC (rev 7790) @@ -41,7 +41,7 @@ dnl bootstrap.sh script. By the way, the line below can be changed using dnl options --version and --date-version of that script. ] -AC_INIT(plplot, 5.7.3, plp...@li...) +AC_INIT(plplot, 5.7.4, plp...@li...) AC_PREREQ(2.50) AC_REVISION($Revision$) @@ -49,7 +49,7 @@ dnl is by specifying one of the option --version of --date-version to dnl bootstrap.sh -RELEASE_DATE=2007-03-25 +RELEASE_DATE=2007-08-13 AC_SUBST(RELEASE_DATE) dnl Check if we are in the right directory (this used to be done by This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2007-08-16 07:49:02
|
Revision: 7807 http://plplot.svn.sourceforge.net/plplot/?rev=7807&view=rev Author: andrewross Date: 2007-08-16 00:49:05 -0700 (Thu, 16 Aug 2007) Log Message: ----------- Remove references to RandomArray for python Numeric bindings. This is only used for example 21, which doesn't currently work with Numeric anyway due to problems with griddata. Remove example 21 from the list of automatic tests since it only works with numpy. Modified Paths: -------------- trunk/examples/python/plplot_py_demos.py.numeric trunk/test/test_python.sh.in Modified: trunk/examples/python/plplot_py_demos.py.numeric =================================================================== --- trunk/examples/python/plplot_py_demos.py.numeric 2007-08-16 03:51:50 UTC (rev 7806) +++ trunk/examples/python/plplot_py_demos.py.numeric 2007-08-16 07:49:05 UTC (rev 7807) @@ -1,7 +1,9 @@ from plplot import * from Numeric import * -from RandomArray import random +# Random Array is only used for example 21, which currently doesn't +# work with Numeric anyway due to griddata problems. +#from RandomArray import random def isnan(x): return (x != x) Modified: trunk/test/test_python.sh.in =================================================================== --- trunk/test/test_python.sh.in 2007-08-16 03:51:50 UTC (rev 7806) +++ trunk/test/test_python.sh.in 2007-08-16 07:49:05 UTC (rev 7807) @@ -29,7 +29,7 @@ # Skip 19 because it is just a placeholder without a real implementation. # Skip 20, 21 and 25 because they are not (yet) implemented. # For 24 you need special fonts installed to get good result. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 21 22 23 24 26; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 26; do @PYTHON_EXECUTABLE@ $pythondir/x$index -dev $device -o ${OUTPUT_DIR}/x${index}p.$dsuffix $options status_code=$? if [ "$status_code" -ne 0 ]; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2007-08-17 07:24:04
|
Revision: 7810 http://plplot.svn.sourceforge.net/plplot/?rev=7810&view=rev Author: andrewross Date: 2007-08-17 00:24:04 -0700 (Fri, 17 Aug 2007) Log Message: ----------- Add python version of example 25. Modified Paths: -------------- trunk/examples/python/CMakeLists.txt trunk/test/test_python.sh.in Added Paths: ----------- trunk/examples/python/x25 trunk/examples/python/xw25.py Modified: trunk/examples/python/CMakeLists.txt =================================================================== --- trunk/examples/python/CMakeLists.txt 2007-08-17 06:57:13 UTC (rev 7809) +++ trunk/examples/python/CMakeLists.txt 2007-08-17 07:24:04 UTC (rev 7810) @@ -40,6 +40,7 @@ "22" "23" "24" +"25" "26" ) Added: trunk/examples/python/x25 =================================================================== --- trunk/examples/python/x25 (rev 0) +++ trunk/examples/python/x25 2007-08-17 07:24:04 UTC (rev 7810) @@ -0,0 +1,40 @@ +#!/usr/bin/env python + +# Copyright (C) 2004, 2005 Alan W. Irwin +# Copyright (C) 2004 Andrew Ross +# +# This file is part of PLplot. +# +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; version 2 of the License. +# +# PLplot 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 Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with the file PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +# Run all python plplot examples non-interactively. + +# Append to effective python path so that can find plplot modules. +from plplot_python_start import * + +import sys +from plplot import * + +# Parse and process command line arguments +plparseopts(sys.argv, PL_PARSE_FULL) + +# Initialize plplot +plinit() + +import xw25 + +# Terminate plplot +plend() + Property changes on: trunk/examples/python/x25 ___________________________________________________________________ Name: svn:executable + * Added: trunk/examples/python/xw25.py =================================================================== --- trunk/examples/python/xw25.py (rev 0) +++ trunk/examples/python/xw25.py 2007-08-17 07:24:04 UTC (rev 7810) @@ -0,0 +1,68 @@ +from plplot_py_demos import * + +# main +# +# Test program for filling polygons and proper clipping + + +def main(): + + plssub(3,3) + + xextreme = [ [ -120.0, 120.0 ], + [ -120.0, 120.0 ], + [ -120.0, 120.0 ], + [ -80.0, 80.0 ], + [ -220.0, -120.0 ], + [ -20.0, 20.0 ], + [ -20.0, 20.0 ], + [ -80.0, 80.0 ], + [ 20.0, 120.0 ] ] + + yextreme = [ [ -120.0, 120.0 ], + [ 20.0, 120.0 ], + [ -20.0, 120.0 ], + [ -20.0, 120.0 ], + [ -120.0, 120.0 ], + [ -120.0, 120.0 ], + [ -20.0, 20.0 ], + [ -80.0, 80.0 ], + [ -120.0, 120.0 ] ] + + for j in range(4): + + # Polygon 1: a diamond + if (j == 0): + x0 = [0, -100, 0, 100] + y0 = [-100, 0, 100, 0] + # Polygon 2: a diamond - reverse direction + elif (j == 1): + x0 = [100, 0, -100, 0] + y0 = [0, 100, 0, -100] + # Polygon 3: a square with punctures + elif (j == 2): + x0 = [-100, -100, 80, -100, -100, -80, 0, 80, 100, 100] + y0 = [-100, -80, 0, 80, 100, 100, 80, 100, 100, -100] + # Polygon 4: a square with punctures - reverse direction + elif (j == 3): + x0 = [100, 100, 80, 0, -80, -100, -100, 80, -100, -100] + y0 = [-100, 100, 100, 80, 100, 100, 80, 0, -80, -100] + + for i in range(9): + pladv(0) + plvsta() + plwind(xextreme[i][0], xextreme[i][1], yextreme[i][0], yextreme[i][1]) + + plbox("bc", 1.0, 0, "bcnv", 10.0, 0) + plcol0(1) + plpsty(0) + plfill(x0,y0) + plcol0(2) + pllsty(1) + plline(x0,y0) + + # Don't forget to call plend() to finish off! + + plend() + +main() Modified: trunk/test/test_python.sh.in =================================================================== --- trunk/test/test_python.sh.in 2007-08-17 06:57:13 UTC (rev 7809) +++ trunk/test/test_python.sh.in 2007-08-17 07:24:04 UTC (rev 7810) @@ -27,9 +27,10 @@ # paths in that file are relative to build tree. # Skip 14 and 17 because they are interactive. # Skip 19 because it is just a placeholder without a real implementation. -# Skip 20, 21 and 25 because they are not (yet) implemented. +# Skip 20 because it is not (yet) implemented. +# Skip 21 if using Numeric - it doesn't work # For 24 you need special fonts installed to get good result. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 26 @NUMPY_EXAMPLES@ ; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 @NUMPY_EXAMPLES@ ; do @PYTHON_EXECUTABLE@ $pythondir/x$index -dev $device -o ${OUTPUT_DIR}/x${index}p.$dsuffix $options status_code=$? if [ "$status_code" -ne 0 ]; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2007-08-22 09:29:39
|
Revision: 7819 http://plplot.svn.sourceforge.net/plplot/?rev=7819&view=rev Author: andrewross Date: 2007-08-22 02:29:40 -0700 (Wed, 22 Aug 2007) Log Message: ----------- Add python implementation of example 20 now that plGetCursor works properly. Include in the list of standard tests. Modified Paths: -------------- trunk/examples/python/CMakeLists.txt trunk/test/test_python.sh.in Added Paths: ----------- trunk/examples/python/x20 trunk/examples/python/xw20.py Modified: trunk/examples/python/CMakeLists.txt =================================================================== --- trunk/examples/python/CMakeLists.txt 2007-08-22 09:28:30 UTC (rev 7818) +++ trunk/examples/python/CMakeLists.txt 2007-08-22 09:29:40 UTC (rev 7819) @@ -36,6 +36,7 @@ "16" "18" "19" +"20" "21" "22" "23" Added: trunk/examples/python/x20 =================================================================== --- trunk/examples/python/x20 (rev 0) +++ trunk/examples/python/x20 2007-08-22 09:29:40 UTC (rev 7819) @@ -0,0 +1,40 @@ +#!/usr/bin/env python + +# Copyright (C) 2004 Alan W. Irwin +# Copyright (C) 2004 Andrew Ross +# +# This file is part of PLplot. +# +# PLplot is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; version 2 of the License. +# +# PLplot 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 Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with the file PLplot; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +# Run all python plplot examples non-interactively. + +# Append to effective python path so that can find plplot modules. +from plplot_python_start import * + +import sys +from plplot import * + +# Parse and process command line arguments +plparseopts(sys.argv, PL_PARSE_FULL) + +# Initialize plplot +plinit() + +import xw20 + +# Terminate plplot +plend() + Property changes on: trunk/examples/python/x20 ___________________________________________________________________ Name: svn:executable + * Added: trunk/examples/python/xw20.py =================================================================== --- trunk/examples/python/xw20.py (rev 0) +++ trunk/examples/python/xw20.py 2007-08-22 09:29:40 UTC (rev 7819) @@ -0,0 +1,255 @@ +# plimage demo +# +# Copyright (C) 2007 Andrew Ross + +from plplot_py_demos import * + +import os.path + +XDIM = 260 +YDIM = 220 + +dbg = 0 +nosombrero = 0 +nointeractive = 0 +f_name = "" + +def gray_cmap(num_col): + r = [0.0, 1.0] + g = [0.0, 1.0] + b = [0.0, 1.0] + pos = [0.0, 1.0] + + plscmap1n(num_col) + plscmap1l(1, pos, r, g, b) + + +def save_plot(fname): + # Get current stream and create a new one + cur_strm = plgstrm() + new_strm = plmkstrm() + + # Set new device type and file name - use a known existing driver + plsdev("psc") + plsfnam(fname) + + # Copy old stream parameters to new stream, do the save, + # then close new device. + plcpstrm(cur_strm,0) + plreplot() + plend1() + + # Return to previous stream + plsstrm(cur_strm) + +def read_img(fname): + + if (not os.path.exists(fname)): + return [1,[],0,0,0] + + fp = open(fname, mode='rb') + + # Check correct version + ver = fp.readline() + + if (ver != "P5\n"): + fp.close() + return [1,[],0,0,0] + + # Skip over comments + ptr = fp.tell() + while ( fp.read(1) == '#' ): + fp.readline() + ptr = fp.tell() + fp.seek(ptr) + + # Get width, height, num colors + [w, h] = fp.readline().split(' ') + w = int(w) + h = int(h) + nc = int(fp.readline()) + + tmp = fp.read(w*h) + + img = zeros(w*h) + for i in range(w): + for j in range(h): + img[i*h+j] = ord(tmp[(h-1-j)*w+i]) + + img = reshape(img,[w,h]) + + + fp.close() + return [0,img,w,h,nc] + + +def get_clip(xi, xe, yi, ye): + + + sx = zeros(5) + sy = zeros(5) + + start = 0 + + st = plxormod(1) + + if (st): + gin = PLGraphicsIn() + gin.button = 0 + while (1): + st = plxormod(0) + plGetCursor(gin) + st = plxormod(1) + + if (gin.button == 1): + xi = gin.wX + yi = gin.wY + if (start): + plline(sx,sy) # Clear previous rectangle + + start = 0 + sx[0] = xi + sy[0] = yi + sx[4] = xi + sy[4] = yi + + if (gin.state & 0x100): + xe = gin.wX + ye = gin.wY + if (start): + plline(sx,sy) + + start = 1 + + sx[2] = xe + sy[2] = ye + sx[1] = xe + sy[1] = yi + sx[3] = xi + sy[3] = ye + + plline(sx,sy) # Draw new rectangle + + if (gin.button == 3 or gin.keysym == 0x0D or gin.keysym == 'Q'): + if (start): + plline(sx,sy) # Clear previous rectangle + break + + st = plxormod(0) # Leave xor mode + + if (xe < xi): + t = xi + xi = xe + xe = t + + if (yi < ye): + t = yi + yi = ye + ye = t + + return [gin.keysym == 'Q', xi, xe, yi, ye] + + else: # Driver has no xormod capability, just do nothing + return [0, xi, xe, yi, ye] + +# main +# +# +def main(): + + z = reshape(zeros(XDIM*YDIM),[XDIM,YDIM]) + + # View image border pixels + if (dbg): + plenv(1.0, XDIM, 1.0, YDIM, 1, 1) + + for i in range(XDIM): + z[i][YDIM-1] = 1.0 + z[i][0] = 1.0 + + for j in range(YDIM): + z[0][j] = 1.0 + z[XDIM-1][j] = 1.0 + + + pllab("...around a blue square."," ","A ref border should appear...") + + plimage(z, 1.0, XDIM, 1.0, YDIM, 0.0, 0.0, 1.0, XDIM, 1.0, YDIM) + + pladv(0) + + if (not nosombrero): + plcol0(2) # Draw a yellow box, useful for diagnostics! + plenv(0.0, 2.0*pi, 0, 3.0*pi, 1, -1) + + + x = arange(XDIM)*2.0*pi/(XDIM-1) + y = arange(YDIM)*3.0*pi/(YDIM-1) + + r = sqrt( multiply.outer(x*x,ones(YDIM)) + multiply.outer(ones(XDIM),y*y)) + 1e-3 + z = sin(r) / r + + pllab("No, an amplitude clipped \"sombrero\"", "", "Saturn?"); + plptex(2., 2., 3., 4., 0., "Transparent image"); + plimage(z, 0., 2.*pi, 0, 3.*pi, 0.05, 1.,0., 2.*pi, 0, 3.*pi); + + # Save the plot + if (f_name != ""): + save_plot(f_name) + + pladv(0) + + # Read Lena image + # Note: we try two different locations to cover the case where + # this example is being run from the test_c.sh script + [err, img, width, height, num_col] = read_img("lena.pgm") + if (err): + [err, img, width, height, num_col] = read_img("../lena.pgm") + if (err): + plabort("No such file") + plend() + exit(1) + + # Set gray colormap + gray_cmap(num_col) + + # Display Lena + plenv(1., width, 1., height, 1, -1) + + if (not nointeractive): + pllab("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena...") + else: + pllab(""," ","Lena...") + + plimage(img, 1., width, 1., height, 0., 0., 1., width, 1., height) + + # selection/expansion demo + if (not nointeractive): + xi = 200. + xe = 330. + yi = 280. + ye = 220. + + [err, xi, xe, yi, ye] = get_clip(xi, xe, yi, ye) + if (err): + plend() + exit(0) + + plspause(0) + pladv(0) + + # display selection only + plimage(img, 1., width, 1., height, 0., 0., xi, xe, ye, yi) + + plspause(1) + pladv(0) + + # zoom in selection + plenv(xi, xe, ye, yi, 1, -1) + plimage(img, 1., width, 1., height, 0., 0., xi, xe, ye, yi) + pladv(0) + plend() + exit(0) + + +main() Modified: trunk/test/test_python.sh.in =================================================================== --- trunk/test/test_python.sh.in 2007-08-22 09:28:30 UTC (rev 7818) +++ trunk/test/test_python.sh.in 2007-08-22 09:29:40 UTC (rev 7819) @@ -30,7 +30,7 @@ # Skip 20 because it is not (yet) implemented. # Skip 21 if using Numeric - it doesn't work # For 24 you need special fonts installed to get good result. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 @NUMPY_EXAMPLES@ ; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 20 22 23 24 25 26 @NUMPY_EXAMPLES@ ; do @PYTHON_EXECUTABLE@ $pythondir/x$index -dev $device -o ${OUTPUT_DIR}/x${index}p.$dsuffix $options 2> test.error status_code=$? if [ "$status_code" -ne 0 ]; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-09-01 21:41:23
|
Revision: 7826 http://plplot.svn.sourceforge.net/plplot/?rev=7826&view=rev Author: airwin Date: 2007-09-01 14:41:24 -0700 (Sat, 01 Sep 2007) Log Message: ----------- As discussed on list, plmeta is not built now unless the user specifically requests it. Furthermore, do not build plrender and do not install plrender or its man page unless the user has specifically requested device plmeta. Modified Paths: -------------- trunk/cmake/modules/drivers-init.cmake trunk/doc/CMakeLists.txt trunk/utils/CMakeLists.txt Modified: trunk/cmake/modules/drivers-init.cmake =================================================================== --- trunk/cmake/modules/drivers-init.cmake 2007-09-01 16:17:56 UTC (rev 7825) +++ trunk/cmake/modules/drivers-init.cmake 2007-09-01 21:41:24 UTC (rev 7826) @@ -91,7 +91,11 @@ "pbm:pbm:ON" "pdf:pdf:OFF" "pdfcairo:cairo:OFF" -"plmeta:plmeta:ON" +# (2007-09-01) As discussed on list, don't enable plmeta until we sort +# out the known issues (e.g., strings, aspect ratio, and TrueType fonts). +# This is going to take time/energy for some volunteer who has not volunteered +# yet.... :-) +"plmeta:plmeta:OFF" "pngcairo:cairo:OFF" "ps:ps:ON" "pscairo:cairo:OFF" Modified: trunk/doc/CMakeLists.txt =================================================================== --- trunk/doc/CMakeLists.txt 2007-09-01 16:17:56 UTC (rev 7825) +++ trunk/doc/CMakeLists.txt 2007-09-01 21:41:24 UTC (rev 7826) @@ -1,6 +1,10 @@ set(core_manpages plm2gif.1 plpr.1 pltek.1 pstex2eps.1) -set(tcl_manpages plrender.1 plserver.1 pltcl.1) +if(PLD_plmeta) + set(core_manpages ${core_manpages} plrender.1) +endif(PLD_plmeta) +set(tcl_manpages plserver.1 pltcl.1) + set(manpages ${core_manpages}) if (ENABLE_tcl) set(manpages ${manpages} ${tcl_manpages}) Modified: trunk/utils/CMakeLists.txt =================================================================== --- trunk/utils/CMakeLists.txt 2007-09-01 16:17:56 UTC (rev 7825) +++ trunk/utils/CMakeLists.txt 2007-09-01 21:41:24 UTC (rev 7826) @@ -25,24 +25,29 @@ ${CMAKE_BINARY_DIR}/include ) -add_executable(plrender plrender.c) -if(WIN32 AND BUILD_SHARED_LIBS) - SET_SOURCE_FILES_PROPERTIES(plrender.c - PROPERTIES COMPILE_FLAGS "-DUSINGDLL" ) -endif(WIN32 AND BUILD_SHARED_LIBS) +if(PLD_plmeta) + add_executable(plrender plrender.c) + + if(WIN32 AND BUILD_SHARED_LIBS) + SET_SOURCE_FILES_PROPERTIES(plrender.c + PROPERTIES COMPILE_FLAGS "-DUSINGDLL" + ) + endif(WIN32 AND BUILD_SHARED_LIBS) -target_link_libraries(plrender plplot${LIB_TAG}) + target_link_libraries(plrender plplot${LIB_TAG}) -if(USE_RPATH) - get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) - set_target_properties(plrender - PROPERTIES - INSTALL_RPATH "${LIB_INSTALL_RPATH}" - ) -endif(USE_RPATH) -install(TARGETS plrender DESTINATION ${BIN_DIR}) + if(USE_RPATH) + get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH) + set_target_properties(plrender + PROPERTIES + INSTALL_RPATH "${LIB_INSTALL_RPATH}" + ) + endif(USE_RPATH) + install(TARGETS plrender DESTINATION ${BIN_DIR}) +endif(PLD_plmeta) + add_executable(pltek pltek.c) if(WIN32 AND BUILD_SHARED_LIBS) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2007-09-04 19:41:55
|
Revision: 7831 http://plplot.svn.sourceforge.net/plplot/?rev=7831&view=rev Author: arjenmarkus Date: 2007-09-04 12:41:53 -0700 (Tue, 04 Sep 2007) Log Message: ----------- Added information on removing sys/win32/msdev Removed EQUIVALENCE in Fortran 95 bindings Modified Paths: -------------- trunk/README.release trunk/bindings/f95/configurable.f90 trunk/bindings/f95/sfstubs.f90 trunk/bindings/f95/sfstubs.h trunk/bindings/f95/sfstubsf95.f90 trunk/sys/win32/msdev/README.TXT Modified: trunk/README.release =================================================================== --- trunk/README.release 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/README.release 2007-09-04 19:41:53 UTC (rev 7831) @@ -1,9 +1,9 @@ PLplot Release 5.8.0 ~~~~~~~~~~~~~~~~~~~~ -This is a stable release of PLplot. It represents the ongoing efforts of the -community to improve the PLplot plotting package. Development releases in the -5.9.x series will be available every few months. The next stable release will +This is a stable release of PLplot. It represents the ongoing efforts of the +community to improve the PLplot plotting package. Development releases in the +5.9.x series will be available every few months. The next stable release will be 5.10.0. If you encounter a problem that is not already documented in the @@ -20,11 +20,19 @@ CMake-based build system (see below), and nobody has been willing to spend time maintaining our old autotools-based build system. +Note for Windows users: +The same holds for the old Windows build system in sys/win32/msdev. This +build system is much less flexible than the CMake-based system. It also +lacks a larger number of important features - freetype text, language +bindings and so on. With the 5.9.0 release the source distribution will +no longer contain this directory. Hence you should switch to the new +build system described below. + INDEX 1. Changes relative to PLplot 5.7.4 ... - + 2. Changes relative to PLplot 5.6.1 2.1 CVS to Subversion conversion 2.2 CMake build system @@ -115,7 +123,7 @@ PLplot core has been modified to buffer plot commands in memory rather than via a unix pipe or temporary file. Testing has shown that there is 20-30% improvement in plotting performance (i.e. speed). This is likely to be system -dependent and some may see a much larger benefit. This also resolves a problem +dependent and some may see a much larger benefit. This also resolves a problem with some windows platforms where the temporary files were not getting deleted. 2.4 Updated INSTALL/README @@ -127,7 +135,7 @@ 2.5 malloc/calloc clean up Checks have been added to many (all?) of the calls to calloc and malloc in -the PLplot core. The purpose of the check is to verify that the memory +the PLplot core. The purpose of the check is to verify that the memory requested was actually allocated prior to attempting to use it. 2.6 Documentation @@ -135,9 +143,9 @@ The API section has been expanded to include information about how to call the functions from Fortran95, Java, Perl/PDL and Python. Since array dimension information is typically redundant in these languages it is dropped in many -of the relevant function. Additionally, some of the Perl/PDL function calls -have a different argument order than their C equivalent. This section has also -been expanded to include a list of which examples each function is used in +of the relevant function. Additionally, some of the Perl/PDL function calls +have a different argument order than their C equivalent. This section has also +been expanded to include a list of which examples each function is used in (if any). The Fortran95 documentation has been updated. @@ -147,25 +155,25 @@ The functions plptex3 and plmtex3 have been added to the PLplot API. These allow the user to draw text in "3D" on the 3D plots. plptex3 is the 3D equivalent of plptex and plmtex3 is the 3D equivalent of plmtex. - + 2.8 Language bindings 2.8.1 ADA - Jerry Bauck has donated bindings to the ADA programming language. + Jerry Bauck has donated bindings to the ADA programming language. These bindings have been included into the CMake build system, and should be generated automatically if you have an ADA compiler and - you specify the cmake option -DENABLE_ada=ON. The ADA bindings are now - considered complete and the current focus is on implementing all of the + you specify the cmake option -DENABLE_ada=ON. The ADA bindings are now + considered complete and the current focus is on implementing all of the examples in ADA to help test the bindings. 2.8.2 wxwidgets applications bindings - The wxWidgets bindings provide an interface to the PLplot API and a - simple widget to be used in a wxWidgets application. The class + The wxWidgets bindings provide an interface to the PLplot API and a + simple widget to be used in a wxWidgets application. The class 'wxPLplotstream' inherited from the PLplot class 'plstream' allows access to the complete PLplot API. 'wxPLplotWindow' is a simple wxWidget which takes care of some preparatory work for convenient use of the PLplot Library within a wxWidgets application. - + 2.8.3 Python bindings The Python bindings have been updated to use numpy rather than the now deprecated Numeric python numeric library. @@ -173,7 +181,7 @@ 2.9 Updated examples The examples have been checked over to make sure that they all work -and to make them more consistent across different programming languages. +and to make them more consistent across different programming languages. 2.10 Drivers 2.10.1 psttf @@ -182,7 +190,7 @@ version of FreeType library) on which to choose. 2.10.2 svg - This is a new device driver that creates Scalable Vector Graphics files + This is a new device driver that creates Scalable Vector Graphics files (http://www.w3.org/Graphics/SVG/). SVG is a XML language describing graphics that is supported directly or via plug-ins in most modern web browsers. The driver is off by default as its text handling has not been @@ -196,20 +204,20 @@ now handle filled polygons and window resizing. 2.10.4 pdf - A basic version of a pdf driver was added to the latest PLplot release. - This driver is based on the libharu library - (http://libharu.sourceforge.net/). At present only the Hershey fonts are - used and there is no support for pdf or TrueType fonts. Compression of the pdf - output is not enabled and the paper size can't be chosen. All these issues + A basic version of a pdf driver was added to the latest PLplot release. + This driver is based on the libharu library + (http://libharu.sourceforge.net/). At present only the Hershey fonts are + used and there is no support for pdf or TrueType fonts. Compression of the pdf + output is not enabled and the paper size can't be chosen. All these issues will be addressed in later releases. 2.10.5 gd, wingcc (freetype) Improved anti-aliasing routines have been added to PLplot's freetype - font rendering engine. The gd and wingcc drivers have been modified in + font rendering engine. The gd and wingcc drivers have been modified in turn to take advantage of these new routines, leading to improved text rendering. - 2.10.6 cairo + 2.10.6 cairo This is a family of drivers that use the Cairo graphics library to render text and graphics. The graphics and the text are both anti-aliased which yields some outstanding-looking results. This driver @@ -232,7 +240,7 @@ aside from bounding box issues seems to be working well. Should be useful for Latex enthusiasts. - 2.10.8 plmeta driver + 2.10.8 plmeta driver The combination of the plmeta device and the plrender application that renders plmeta results is unmaintained and has some known issues with strings, aspect ratio changes, and fonts. Therefore, the plmeta device Modified: trunk/bindings/f95/configurable.f90 =================================================================== --- trunk/bindings/f95/configurable.f90 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/bindings/f95/configurable.f90 2007-09-04 19:41:53 UTC (rev 7831) @@ -42,6 +42,7 @@ do 10 iargs = 0, numargs call getarg(iargs, arg) call plstrf2c(arg, string1, maxlen) + s1 = transfer( string1, s1 ) do 5 index = 1, maxindex iargsarr(index, iargs+1) = s1(index) 5 continue Modified: trunk/bindings/f95/sfstubs.f90 =================================================================== --- trunk/bindings/f95/sfstubs.f90 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/bindings/f95/sfstubs.f90 2007-09-04 19:41:53 UTC (rev 7831) @@ -45,6 +45,8 @@ call plstrf2c(opt, string1, maxlen) call plstrf2c(optarg, string2, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string2, s2 ) call plsetopt7(s1, s2) end subroutine @@ -59,6 +61,7 @@ include 'sfstubs.h' call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plsdev7(s1) end subroutine @@ -87,6 +90,7 @@ include 'sfstubs.h' call plstrf2c(fnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plsfnam7(s1) end subroutine @@ -115,6 +119,7 @@ include 'sfstubs.h' call plgver7(s1) + string1 = transfer( s1, string1 ) call plstrc2f(string1, ver) end subroutine @@ -133,6 +138,8 @@ call plstrf2c(xopt, string1, maxlen) call plstrf2c(yopt, string2, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string2, s2 ) call plaxes7(x0,y0,s1,xtick,nxsub,s2,ytick,nysub) end subroutine @@ -151,6 +158,8 @@ call plstrf2c(xopt, string1, maxlen) call plstrf2c(yopt, string2, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string1, s2 ) call plbox7(s1,xtick,nxsub,s2,ytick,nysub) end subroutine @@ -174,6 +183,12 @@ call plstrf2c(zopt, string5, maxlen) call plstrf2c(zlabel, string6, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string1, s2 ) + s3 = transfer( string1, s3 ) + s4 = transfer( string1, s4 ) + s5 = transfer( string1, s5 ) + s6 = transfer( string1, s6 ) call plbox37(s1,s2,xtick,nxsub, & s3,s4,ytick,nysub, & s5,s6,ztick,nzsub) @@ -359,6 +374,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshade07(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & shade_min, shade_max, & @@ -387,6 +403,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshade17(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & shade_min, shade_max, & @@ -416,6 +433,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshade27(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & shade_min, shade_max, & @@ -443,6 +461,7 @@ include 'sfstubs.h' + s1 = transfer( string1, s1 ) call plshade7(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & shade_min, shade_max, & @@ -468,6 +487,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshades07(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & clevel, size(clevel), fill_width, & @@ -493,6 +513,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshades17(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & clevel, size(clevel), fill_width, & @@ -518,6 +539,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshades27(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & clevel, size(clevel), fill_width, & @@ -543,6 +565,7 @@ ! call plstrf2c(dnam, string1, maxlen) + s1 = transfer( string1, s1 ) call plshades7(z, size(z,1), size(z,2), s1, & xmin, xmax, ymin, ymax, & clevel, size(clevel), fill_width, & @@ -563,6 +586,9 @@ call plstrf2c(ylab, string2, maxlen) call plstrf2c(title, string3, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string2, s2 ) + s3 = transfer( string3, s3 ) call pllab7(s1,s2,s3) end subroutine @@ -580,6 +606,8 @@ call plstrf2c(side, string1, maxlen) call plstrf2c(text, string2, maxlen) + s1 = transfer( string1, s1 ) + s2 = transfer( string2, s2 ) call plmtex7(s1,disp,pos,xjust,s2) end subroutine @@ -596,6 +624,7 @@ call plstrf2c(text, string1, maxlen) + s1 = transfer( string1, s1 ) call plptex7(x,y,dx,dy,xjust,s1) end subroutine @@ -612,6 +641,7 @@ call plstrf2c(devname, string1, maxlen) + s1 = transfer( string1, s1 ) call plstart7(s1, nx, ny) end subroutine @@ -630,6 +660,7 @@ call plstrf2c(mapname, string1, maxlen) call plsetmapformc(mapform) + s1 = transfer( string1, s1 ) call plmapc(s1,minx,maxx,miny,maxy) end subroutine Modified: trunk/bindings/f95/sfstubs.h =================================================================== --- trunk/bindings/f95/sfstubs.h 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/bindings/f95/sfstubs.h 2007-09-04 19:41:53 UTC (rev 7831) @@ -25,17 +25,17 @@ character*(maxlen) string4, string5, string6 character*(maxlen) string7, string8, string9 integer s1(80), s2(80), s3(80), s4(80), s5(80), s6(80), s7(80), s8(80), s9(80) - equivalence ( s1, string1 ), ( s2, string2 ) - equivalence ( s3, string3 ), ( s4, string4 ) - equivalence ( s5, string5 ), ( s6, string6 ) - equivalence ( s7, string7 ), ( s8, string8 ) - equivalence ( s9, string9 ) - common /zzplstr1/ string1 - common /zzplstr2/ string2 - common /zzplstr3/ string3 - common /zzplstr4/ string4 - common /zzplstr5/ string5 - common /zzplstr6/ string6 - common /zzplstr7/ string7 - common /zzplstr8/ string8 - common /zzplstr9/ string9 +! equivalence ( s1, string1 ), ( s2, string2 ) +! equivalence ( s3, string3 ), ( s4, string4 ) +! equivalence ( s5, string5 ), ( s6, string6 ) +! equivalence ( s7, string7 ), ( s8, string8 ) +! equivalence ( s9, string9 ) +! common /zzplstr1/ string1 +! common /zzplstr2/ string2 +! common /zzplstr3/ string3 +! common /zzplstr4/ string4 +! common /zzplstr5/ string5 +! common /zzplstr6/ string6 +! common /zzplstr7/ string7 +! common /zzplstr8/ string8 +! common /zzplstr9/ string9 Modified: trunk/bindings/f95/sfstubsf95.f90 =================================================================== --- trunk/bindings/f95/sfstubsf95.f90 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/bindings/f95/sfstubsf95.f90 2007-09-04 19:41:53 UTC (rev 7831) @@ -1024,7 +1024,7 @@ enddo call plscmap1lf77( type, size(intensity), intensity, coord1, coord2, coord3, irev ) end subroutine plscmap1l - + subroutine plscmap1la( rgbtype, intensity, coord1, coord2, coord3) logical :: rgbtype real(kind=plflt), dimension(:) :: intensity, coord1, coord2, coord3 @@ -1063,6 +1063,15 @@ iy_ascl = convert_to_int( y_ascl ) iacc = convert_to_int( acc ) + s1 = transfer( string1, s1 ) + s2 = transfer( string2, s2 ) + s3 = transfer( string3, s3 ) + s4 = transfer( string4, s4 ) + s5 = transfer( string5, s5 ) + s6 = transfer( string6, s6 ) + s7 = transfer( string7, s7 ) + s8 = transfer( string8, s8 ) + s9 = transfer( string9, s9 ) call plstripcf77(id, s1, s2, xmin, xmax, xjump, & ymin, ymax, xlpos, ylpos, iy_ascl, iacc, & colbox, collab, colline, styline, & Modified: trunk/sys/win32/msdev/README.TXT =================================================================== --- trunk/sys/win32/msdev/README.TXT 2007-09-03 02:43:45 UTC (rev 7830) +++ trunk/sys/win32/msdev/README.TXT 2007-09-04 19:41:53 UTC (rev 7831) @@ -1,10 +1,19 @@ README file for the win32/msdev port of plplot ============================================== -Belongs to PLplot version: 5.6.0 -Information updated: april 2006 +Belongs to PLplot version: 5.8.0 +Information updated: september 2007 +Information dd. september 2007 +------------------------------ +This is the last release to contain the Windows-specific build +system. With the adoption of CMake, it is no longer necessary +to use this system. As it is much less capable than the +CMake-based build system, we strongly advise you to switch to +that system. + + Information dd. april 2006 -------------------------- Since version 5.5.3 the most important changes to the win32/msdev This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2007-09-07 22:21:06
|
Revision: 7844 http://plplot.svn.sourceforge.net/plplot/?rev=7844&view=rev Author: airwin Date: 2007-09-07 15:21:10 -0700 (Fri, 07 Sep 2007) Log Message: ----------- Generalize configured plplot-test.sh to use all PLplot devices that are file devices. Modified Paths: -------------- trunk/drivers/README.drivers trunk/test/plplot-test.sh.cmake Modified: trunk/drivers/README.drivers =================================================================== --- trunk/drivers/README.drivers 2007-09-07 22:10:29 UTC (rev 7843) +++ trunk/drivers/README.drivers 2007-09-07 22:21:10 UTC (rev 7844) @@ -13,8 +13,8 @@ plplot/include/drivers.h plplot/include/plDevs.h.cmake plplot/include/plcore.h +plplot/test/plplot-test.sh.cmake - The following are some short notes on what you need to add to these files to add a new driver (which we'll call foo) to PLplot. @@ -40,6 +40,11 @@ plD_dispatch_init_foo, #endif +6. For each _file_ device of the driver add the following line to +test/plplot-test.sh.cmake. For completeness you may want to specify +the interactive devices there as well but be sure to comment them out since +the configured plplot-test.sh script does not work with interactive devices. +PLD_foo=@PLD_foo@ If the driver requires additional additional files or external libraries for compiling and linking then you should add a file called foo.cmake to Modified: trunk/test/plplot-test.sh.cmake =================================================================== --- trunk/test/plplot-test.sh.cmake 2007-09-07 22:10:29 UTC (rev 7843) +++ trunk/test/plplot-test.sh.cmake 2007-09-07 22:21:10 UTC (rev 7844) @@ -46,8 +46,7 @@ Usage: plplot-test.sh [OPTIONS] Options: - [--device=DEVICE] (DEVICE = one of psc [default], ps, psttfc, psttf, pstex, - png, gif, jpeg, cgm,svg, xfig, or plmeta) + [--device=DEVICE] (DEVICE = any cmake-enabled device. psc is the default) [--front-end=FE] (FE = one of c, cxx, f77, f95 java, octave, python, tcl, perl, or ada) If this option is not specified, then all front-ends will be tested. More than one front-end may be given, like @@ -169,61 +168,93 @@ fe="" +# List of non-interactive (i.e., file) devices for PLplot that +# _might_ be enabled. For completeness you may want to specify all devices +# here, but be sure to comment out the interactive ones since the configured +# plplot-test.sh script does not work with interactive devices. + +#interactive PLD_aqt=@PLD_aqt@ +PLD_cgm=@PLD_cgm@ +PLD_conex=@PLD_conex@ +PLD_dg300=@PLD_dg300@ +#interactive PLD_gcw=@PLD_gcw@ +PLD_gif=@PLD_gif@ +#interactive PLD_gnome=@PLD_gnome@ +PLD_hp7470=@PLD_hp7470@ +PLD_hp7580=@PLD_hp7580@ +PLD_imp=@PLD_imp@ +PLD_jpeg=@PLD_jpeg@ +PLD_linuxvga=@PLD_linuxvga@ +PLD_lj_hpgl=@PLD_lj_hpgl@ +PLD_ljii=@PLD_ljii@ +PLD_ljiip=@PLD_ljiip@ +#not a file device PLD_mem=@PLD_mem@ +#not a file device PLD_memcairo=@PLD_memcairo@ +PLD_mskermit=@PLD_mskermit@ +#interactive PLD_ntk=@PLD_ntk@ +PLD_null=@PLD_null@ +PLD_pbm=@PLD_pbm@ +PLD_pdf=@PLD_pdf@ +PLD_pdfcairo=@PLD_pdfcairo@ +PLD_plmeta=@PLD_plmeta@ +PLD_png=@PLD_png@ +PLD_pngcairo=@PLD_pngcairo@ +PLD_ps=@PLD_ps@ +# special case +PLD_psc=@PLD_ps@ +PLD_pscairo=@PLD_pscairo@ +PLD_pstex=@PLD_pstex@ +PLD_psttf=@PLD_psttf@ +# special case +PLD_psttfc=@PLD_psttf@ +PLD_svg=@PLD_svg@ +PLD_svgcairo=@PLD_svgcairo@ +PLD_tek4010=@PLD_tek4010@ +PLD_tek4010f=@PLD_tek4010f@ +PLD_tek4107=@PLD_tek4107@ +PLD_tek4107f=@PLD_tek4107f@ +#interactive PLD_tk=@PLD_tk@ +#interactive PLD_tkwin=@PLD_tkwin@ +PLD_versaterm=@PLD_versaterm@ +PLD_vlt=@PLD_vlt@ +#interactive PLD_wingcc=@PLD_wingcc@ +#interactive PLD_wxwidgets=@PLD_wxwidgets@ +#interactive PLD_xcairo=@PLD_xcairo@ +PLD_xfig=@PLD_xfig@ +PLD_xterm=@PLD_xterm@ +#interactive PLD_xwin=@PLD_xwin@ + +eval pld_device='$'PLD_$device +if test -z "$pld_device" ; then +echo ' +Never heard of this file '"$device"'. Either this is not a legitimate +file device (i.e. non-interactive) device for PLplot or else +plplot-test.sh.cmake needs some maintenance to include this file device in +the list of possible PLplot file devices. +' +exit 1 +fi + +if test ! "$pld_device" = ON; then +echo ' +PLD_'"$device"' is defined as '"$pld_device"'. It must be ON (i.e., enabled +by your cmake configuration and built properly) before you can use this +script with DEVICE='"$device"'. +' +exit 1 +fi + +# Some devices require familying others do not. case "$device" in - ps|psc) - dsuffix=ps - options= - export dsuffix options - ;; - pstex) - dsuffix=eps - options= - export dsuffix options - ;; - psttf|psttfc) - dsuffix=psttf - options= - export dsuffix options - ;; - png) - dsuffix=png + png|pngcairo|gif|jpeg|xfig) options="-fam -fflen 2" - export dsuffix options ;; - gif) - dsuffix=gif - options="-fam -fflen 2" - export dsuffix options - ;; - jpeg) - dsuffix=jpeg - options="-fam -fflen 2" - export dsuffix options - ;; - svg) - dsuffix=svg + *) options= - export dsuffix options ;; - cgm) - dsuffix=cgm - options= - export dsuffix options - ;; - xfig) - dsuffix=fig - options="-fam -fflen 2" - export dsuffix options - ;; - plmeta) - dsuffix=plmeta - options= - export dsuffix options - ;; - *) - usage 1 1>&2 - ;; esac +dsuffix=$device +export dsuffix options # Find out what front-ends have been configured if test -z "$FRONT_END" ; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |