Commit 96c926c1 authored by Axel Beckert's avatar Axel Beckert

Imported Upstream version 0.9.5

parent 42ffc776
This diff is collapsed.
......@@ -165,17 +165,17 @@ foreach(component ${ImageMagick_FIND_COMPONENTS}
)
if(component STREQUAL "Magick++")
FIND_IMAGEMAGICK_API(Magick++ Magick++.h
Magick++ CORE_RL_Magick++_ Magick++-6.Q16 Magick++-Q16 Magick++-6.Q8 Magick++-Q8
Magick++ CORE_RL_Magick++_ Magick++-6.Q16 Magick++-Q16 Magick++-6.Q8 Magick++-Q8 Magick++-6.Q16HDRI Magick++-Q16HDRI Magick++-6.Q8HDRI Magick++-Q8HDRI
)
list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_Magick++_LIBRARY)
elseif(component STREQUAL "MagickWand")
FIND_IMAGEMAGICK_API(MagickWand wand/MagickWand.h
Wand MagickWand CORE_RL_wand_ MagickWand-6.Q16 MagickWand-Q16 MagickWand-6.Q8 MagickWand-Q8
Wand MagickWand CORE_RL_wand_ MagickWand-6.Q16 MagickWand-Q16 MagickWand-6.Q8 MagickWand-Q8 MagickWand-6.Q16HDRI MagickWand-Q16HDRI MagickWand-6.Q8HDRI MagickWand-Q8HDRI
)
list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickWand_LIBRARY)
elseif(component STREQUAL "MagickCore")
FIND_IMAGEMAGICK_API(MagickCore magick/MagickCore.h
Magick MagickCore CORE_RL_magick_ MagickCore-6.Q16 MagickCore-Q16 MagickCore-6.Q8 MagickCore-Q8
Magick MagickCore CORE_RL_magick_ MagickCore-6.Q16 MagickCore-Q16 MagickCore-6.Q8 MagickCore-Q8 MagickCore-6.Q16HDRI MagickCore-Q16HDRI MagickCore-6.Q8HDRI MagickCore-Q8HDRI
)
list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickCore_LIBRARY)
else()
......@@ -230,6 +230,22 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(ImageMagick
# Maintain consistency with all other variables.
set(ImageMagick_FOUND ${IMAGEMAGICK_FOUND})
if (ImageMagick_FOUND)
# run the Magick++ config program to get cxxflags
execute_process(
COMMAND sh "${ImageMagick_EXECUTABLE_DIR}/MagickCore-config" "--cxxflags"
OUTPUT_VARIABLE IMAGEMAGICK_CXX_FLAGS
RESULT_VARIABLE RET
ERROR_QUIET
)
if(RET EQUAL 0)
string(STRIP "${IMAGEMAGICK_CXX_FLAGS}" IMAGEMAGICK_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IMAGEMAGICK_CXX_FLAGS}")
else()
DBG_MSG_V("MagickCore-config --cxxflags command FAILED with RET=${RET}")
endif()
endif()
#---------------------------------------------------------------------
# DEPRECATED: Setting variables for backward compatibility.
#---------------------------------------------------------------------
......@@ -253,3 +269,4 @@ mark_as_advanced(
IMAGEMAGICK_MONTAGE_EXECUTABLE
IMAGEMAGICK_COMPOSITE_EXECUTABLE
)
......@@ -7,7 +7,8 @@
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# for use of version from:
# http://home.comcast.net/~gevenden56/proj/
find_library(LIBPROJ4_LIBRARIES NAMES proj4)
find_path(LIBPROJ4_INCLUDE_DIR NAMES lib_proj.h)
......
#
# copyright : (c) 2010 Maxime Lenoir, Alain Coulais,
# Sylwester Arabas and Orion Poplawski
#
# 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.
#
# for use of version from:
# http://trac.osgeo.org/proj/
find_library(LIBPROJ4_LIBRARIES NAMES proj)
find_path(LIBPROJ4_INCLUDE_DIR NAMES proj_api.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LIBPROJ4 DEFAULT_MSG LIBPROJ4_LIBRARIES LIBPROJ4_INCLUDE_DIR)
mark_as_advanced(
LIBPROJ4_LIBRARIES
LIBPROJ4_INCLUDE_DIR
)
......@@ -23,7 +23,7 @@ endif (PYTHON_NUMPY_INCLUDE_DIR)
IF(PYTHON_EXECUTABLE)
EXEC_PROGRAM ("${PYTHON_EXECUTABLE}"
ARGS "-c 'import numpy; print numpy.get_include()'"
ARGS "-c \"import numpy; print (numpy.get_include())\""
OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIR
RETURN_VALUE PYTHON_NUMPY_NOT_FOUND)
......
#
# 2014/Jun/25 Jeongbin Park added this file; to support Windows platform.
#
# 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.
#
find_path(PDCURSES_INCLUDE_DIR curses.h)
find_library(PDCURSES_LIBRARY pdcurses)
set(PDCURSES_LIBRARIES ${PDCURSES_LIBRARY})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PDCurses DEFAULT_MSG PDCURSES_LIBRARY PDCURSES_LIBRARIES PDCURSES_INCLUDE_DIR)
mark_as_advanced(PDCURSES_LIBRARY PDCURSES_LIBRARIES PDCURSES_INCLUDE_DIR)
......@@ -8,8 +8,8 @@ if(LIBPSPKG)
find_package_handle_standard_args(LIBPS DEFAULT_MSG LIBPS_LIBRARIES)
endif(LIBPS_FOUND)
else(LIBPSPKG) # no libps.pc file
find_library(LIBPS_LIBRARIES NAMES libps)
find_path(LIBPS_INCLUDE_DIRS NAMES pslib.h)
find_library(LIBPS_LIBRARIES NAMES libps pslib)
find_path(LIBPS_INCLUDE_DIRS NAMES libps/pslib.h)
find_package_handle_standard_args(LIBPS DEFAULT_MSG LIBPS_LIBRARIES)
endif(LIBPSPKG)
......
This diff is collapsed.
......@@ -20,18 +20,18 @@ general, it performs a proper cleanup of the newly created object.
Of course the guard must be informed when some other entity takes care of the
new heap object (e. g. it is returned from a function).
GDL provides serveral kinds of such guards:
for normal objects auto_ptr is used (to set the guarded object free
release() must be called). For array objects (destroyed by "delete[]" instead
of "delete") GDL provides the ArrayGuard class. For objects with a cleanup
function (e. g. GSL objects) the use of use GDLGuard is recommended.
Please see the source code for examples.
for normal objects Guard<> is used (to set the guarded object free
Release() must be called). For array objects (destroyed by "delete[]" instead
of "delete") GDL provides the templated ArrayGuard<> class.
For objects with a cleanup function (e. g. GSL objects) the use of use
GDLGuard is recommended. Please see the source code for examples.
As this is not a proper place to discuss exception save programming in detail,
here are just some rules of thumb, when this might concern a code contributor:
- you need almost always a guard when using (operator) new somwhere in
your code
- objects returned from Convert2(..., COPY) methods are to be guarded as well
- same goes for objects created with Dup() methods.
- same for objects created with Dup() methods.
......@@ -56,14 +56,10 @@ Extensions can be also done in python. See file PYTHON.txt for details.
In the distribution there is an empty file: new.cpp
This file is part of the project (will be compiled and linked). It is
intended for extensions to GDL. Furthermore there is a new.hpp file
which is included (#include "new.hpp") in libinit.cpp (see below).
If you use these files, you don't need to edit the Makefile for your
extension. Please put in the header the real filename you intend to
give to your extension. If you send this two files then to me, I will
rename them and make the renamed files part of the project.
I think as long as there are not that many contributors, this way is
easier than putting the code into CVS.
intended for quick and easy extensions to GDL. Furthermore there is a new.hpp
file which is included (#include "new.hpp") in libinit.cpp (see below).
If you use these files, you don't need to edit any build system related files
for your extension.
This hacking guide isn't far from complete yet and intended to be extended.
Please send questions.
......@@ -87,7 +83,8 @@ Add (preferable at the bottom) in libinit.cpp:
new DLibPro( subroutine name, GDL name, max. number of arguments, keyword list);
if the max. number of args is -1 an arbitrary number is allowed (like for
the PRINT procedure)
(new DLibFun( subroutine name ...) for functions)
(new DLibFunRetNew( subroutine name ...) for functions,
new DLibFun( subroutine name ...) for functions which might return an existing value)
For the keyword list look at libinit.cpp for examples.
......@@ -131,8 +128,7 @@ minPar is the minimal number of paramters the function needs
raise an exception from within a library function
automatically cares for adding line/column info and the
function name. 's' should be set to the 'raw' error message
saves some typing :-)
function name. 's' should be set to the 'raw' error message:
void Throw( const std::string& s);
......@@ -155,7 +151,16 @@ Eg.:
Note that all guarded objects are deleted with 'delete', ie. you
cannot guard arrays this way (which require 'delete[]').
cannot guard arrays this way (which require 'delete[]', see
ArrayGuard<> class).
New since GDL 0.9.4: In the rare case that a library function returns an
existing variable (as opposed to a new one), it must notify the interprefer
about it by calling EnvBaseT::SetPtrToReturnValue( BaseGDL** ptrToRetVal).
Such a function must be a declared (in libinit.cpp) as a DLibFun, never as
DLibFunRetNew. While any other library function should be declared as
DLibFunRetNew.
for library functions (keyword must be an exact match)
......@@ -415,6 +420,7 @@ There is a simple example in "src/dll/two.cpp".
To use it:
1. Build the shared library:
g++ -I/(GDL header file directory) -c two.cpp
(64 bit: g++ -DHAVE_64BIT_OS -I/(GDL header file directory) -c two.cpp -fpic)
g++ -shared -lm -lc -o two.so two.o
2. Run LINKIMAGE:
......
Be sure that you have at least cmake v. 2.6 (cmake --version)
Be sure that you have at least CMake 2.6 (cmake --version)
Create a new directory where the objets and executables will be built.
e.g. `mkdir build; cd !$'
Create a new directory where the objects and executables
will be built, e.g.
$ mkdir build; cd !$
Then you can run cmake on the root directory of gdl.
e.g. `cmake ..'
Then run cmake pointing it to the root directory of gdl:
$ cmake ..
You can also specify an install directory `cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../install'
You can optionally specify a custom install prefix, e.g.:
$ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../install
The default buid mode is "Release", to use the "Debug" mode try `cmake ... -DCMAKE_BUILD_TYPE=Debug'
The default build mode is "Release" which enables compiler
optimisations and disables storing debugging symbols in
the GDL binary. To use the "Debug" mode type:
$ cmake .. -DCMAKE_BUILD_TYPE=Debug
You can choose to pass parameters to cmake in the manner of configure.
For each non-mandatory module, you can choose to enable/disable it
(default values are the same than in configure)
e.g. `cmake .. -DREADLINE=OFF' to disable readline.
The following lists the parameters that can be used as boolean values
(ON,YES,Y,OFF,NO,N, case insensitive)
FFTW
GRIB
GSHHS
HDF5
HDF
LIBPROJ4
MAGICK
MPICH
NETCDF
OPENMP
PYTHON
PYTHON_MODULE
READLINE
UDUNITS
WXWIDGETS
To use a non-default C++ compiler, one needs to call e.g.:
$ cmake .. -DCMAKE_CXX_COMPILER=clang++
You can also specify a path to different libraries :
FFTWDIR
GRIBDIR
GSHHSDIR
HDF5DIR
HDFDIR
LIBPROJ4DIR
MAGICKDIR
MPICHDIR
NETCDFDIR
PYTHONDIR
READLINEDIR
UDUNITSDIR
WXWIDGETSDIR
Numerous features of GDL rely on external libraries. These
features can be enabled or disabled using CMake options.
Few other options are available in order to help cmake to find
(extra) libraries (if you don't know what these libraries are,
then you probably don't have to care about it)
JASPERDIR
JPEGDIR
SZIPDIR
PYTHONVERSION
OLDPLPLOT
Most of the optional features have a flag that controls
enabling/disabling the feature (e.g. EIGEN3, FFTW, HDF5,
MAGICK, PSLIB, GRAPHICSMAGICK, GRIB, GSHHS, HDF, ...)
and a flag that allows to specify a custom location of a
given package (e.g. EIGEN3DIR, FFTWDIR, HDF5DIR, ...).
Both the on/off and the path-spec options are passed
to CMake as command=line options prefixed with "-D", e.g.:
$ cmake .. -DREADLINE=OFF' # to disable readline
$ cmake .. -DFFTWDIR=/opt/local/ # alternative FFTW path
Results are cached. So if you need to specify a new libraries that have already been
found you have to delete CMakeCache.txt and rerun cmake.
Other options include:
- PYTHONVERSION to chose a particular Python version if
multiple are installed on the system,
- OLDPLPLOT to switch off features requiring newer plplot
versions,
- GDL_DATA_DIR (default: /share/gnudatalanguage) to specify
a custom installation location for GDL files
(a subdirectory of the main installation prefix)
If you are on a Unix system, you can run `make'
For other systems, a native project file should be produced.
The list of all GDL-related options accepted by CMake along
with their default values can be obtained by calling:
$ cmake .. -LAH | grep -A1 "// GDL: "
To launch the tests, run `make check'.
To install, type `make install'.
Results are cached. So if you need to specify a new
libraries that have already been found you have to
delete CMakeCache.txt and rerun cmake.
Usefull commands :
`make help' to view different targets.
`make edit_cache' to edit cache results (variables defined in advanced mode shouldn't be edited)
If you are on a Unix system, you can run `make' to begin
compilation (optionally with the number of concurrent
processes specified using the -j option):
$ make -j 3
For other systems, a native project file will be produced.
To launch the tests, run:
$ make check
To install, type:
$ make install
Other useful commands include `make help' to view a list
of targets and `make edit_cache' to edit cache results
(variables defined in advanced mode shouldn't be edited).
===========================================================================
To provide map projections support your first need to make sure the libproj4
library is installed. The source code for this can be found at:
Revised version by Gilles Duvert on July 2014
To provide map projections support your first need to make sure the
proj.4 library is installed. There are two libraries, the 'classic
PROJ.4' library maintained by the original author, G. Evenden:
http://home.comcast.net/~gevenden56/proj/
(http://home.comcast.net/~gevenden56/proj/libproj4.3_20081120.tar.bz2)
The "--with-libproj4=DIR" switch in configure can be used give the location
of this library.
The following additional PRO files must be acquired and placed in the
appropriate directories:
map_grid.pro
map_horizon.pro
map_image.pro
map_patch.pro
map_point_valid.pro
map_proj_image.pro
map_proj_info.pro
map_proj_init_commonblock.pro
map_proj_init_common.pro
map_proj_init.pro
map_set.pro
map_struct_append.pro
These files can be found by entering the following URL into your web
browser:
http://idlastro.gsfc.nasa.gov/cgi-bin/idllibsrch?keyword=map_
clicking on the appropriate file and saving it to your computer.
They can be placed in any directory within you GDL path.
and a more complete (but by no means bug free!) fork of this library
available at http://trac.osgeo.org/proj.
Both work with GDL and provide all projection-related internal
facilities. We tend to prefer G. Evenden's trimmed classical version
since it handles correctly rotations and has fever
crashes. Unfortunately the fancy interrupted Goode Homomsine is not
present in GE's library. It is recommendend to recompile either of
these libraries instead of using the version that may come with your
software distribution (but it can work, too).
If GDL does not find (lib)proj4 files automatically, use
"-DLIBPROJ4=YES" "-DLIBPROJ4DIR=DIR" as arguments for cmake.
(were 'DIR' is the location of the compiled library.
To finish the support of projections in GDL, first the following
additional PRO files must be acquired and placed in a directory of the
GDL PATH:
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_grid.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_horizon.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_image.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_patch.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_point_valid.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_proj_image.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_proj_info.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_proj_init_commonblock.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_proj_init_common.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_proj_init.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_satellite_limit.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_set.pro
http://idlastro.gsfc.nasa.gov/ftp/exelislib/map_struct_append.pro
(cd src/pro/ ; mkdir map; cd map; grep 'gsfc.nasa' ../../../MAP* | xargs wget)
Note that 'map_continents.pro' is not in this list. map_continents is
inside GDL. If these .pro files are not available, google is your
friend;^). These are proprietary files and not part of the GDL
distribution. They do lots of complicated things in a
not-very-general way, and should be rewritten completely for GDL. As
GDL uses Proj.4 and Proj know all the tricks used in these procedures,
it should not be such a terrible job. Help would be most
appreciated. See below for an example where new projections are used
that do not need the above procedures...
===========================================================================
MAP_CONTINENTS is implemented in GDL using the GSHHS (Global
Self-consistent, Hierarchical, High-resolution Shoreline Database)
MAP_CONTINENTS is implemented in GDL using the GSHHSG (Global
Self-consistent, Hierarchical, High-resolution Geography Database)
available under the GNU GPL. To provide support for MAP_CONTINENTS the
database files and one header file (gshhs.h) need to be downloaded e.g. from:
ftp://ftp.soest.hawaii.edu/pwessel/gshhs
ftp://ftp.soest.hawaii.edu/pwessel/gshhsg
see file ftp://ftp.soest.hawaii.edu/pwessel/gshhg/README.TXT for
complete description.
The header file for the 2.0 dataset is in the gshhs_1.12_src.zip file.
The datafiles (*.b) are in the gshhs_2.0.tbz file.
When compiling GDL, the --with-gshhs option must be given (not enabled
by default), optionally with an argument pointing to the GSHHS installation
prefix:
--with-gshhs : searches gshhs.h in the default include path of the compiler
--with-gshhs=/usr/local : searches for /usr/local/include/gshhs.h
GDL searches for the GSHHS datafiles (gshhs_f.b, gshhs_l.b, etc...) in the
$GDLDATADIR/../gshhs/ directory (we need a better solution - FIXME!)
When compiling GDL, the "-DGSHHS=YES" option must be given (not
enabled by default), optionally with an argument pointing to the GSHHS
installation prefix: -DGSHHSDIR="DIR"
Warning: At execution time, GDL will look for the GSHHS datafiles
(gshhs_f.b, gshhs_l.b, etc...) in the $GSHHS_DATA_DIR. Before running
GDL you can setup this variable (e.g. in bash :
export GSHHS_DATA_DIR=/my/path/to/gshhs/).
When GDL is compiled, if $GSHHS_DATA_DIR unknown, if $GDLDATADIR
exists and if $GDLDATADIR/../gshhs/ exist too, this path is used as a
defaut directory for gshhs data. So the files can/must be put there.
(we need a more flexible solution - FIXME!)
Reference:
Wessel, P. and Smith, W.H.F., 1996. A global, self-consistent, hierarchical,
high-resolution shoreline database. J. Geophys. Res., 101(B4): 8741--8743.
===========================================================================
NOTE ON PROJECTION-RELATED PROCEDURES IN GDL (and IDL)
===========================================================================
The following projections are at least partially supported
(numbers defined in the map_sep.pro file itself):
Stereographic Projection: (1)
Orthographic Projection: (2)
Lambert Conformal Conic: (3)
Lambert Equal Area Conic: (4)
Gnomonic: (5)
Azimuthal Equidistant: (6)
Satellite: (7) (add 28/07/2008)
Cylindrical Equidistant: (8)
Mercator: (9)
Aitoff: (12)
Robinson: (17) (add 28/07/2008)
NOTE: Map projection support in GDL is a work in progress. There are
BUGS!! These will be fixed as time permits. Additional projections
will also be added in the same manner. Bug reports and projection
requests are appreciated.
Joel Gales
PS (by AC): a demo ("test_map.pro") is now available in the testsuite/.
If not in the PATH, you must provide the root of the path to the database files
(if file "plow.dat" is here /opt/GDL/lib_GDL_0.9/resource/maps/low/plow.dat
--> you must provide /opt/GDL/lib_GDL_0.9/ to "test_map"
or you can call it via "test_map, dir='/opt/GDL/lib_GDL_0.9/')
This demo has been succesfully tested on Linux x86_32 and x86_64.
Please reports BUG with as simple as possible code giving it !
All the historical projections are supported fully (Godde's Homolosine
will not be truncated if you link with G.Evenden's library). The GCTP
supplementary projections are at least partially supported. They lack
the proper initialisation of the map.pipeline array, which governs the
clipping and avoids spurious lines. Moreover, ALL the projections in
the PROJ.4 library linked with GDL are supported via a trick: passing
a valid PROJ.4 command line in the projection name of a map structure,
with the projection number set to 999
example:
a=!map
a.up_name="+proj=mbtfpq +a=1"
a.projection=999
map_clip_set,/TRANSFORM,map=a
b=map_proj_forward(lon, lat,map=a)
a.uv_box=[min(b(0,*)),min(b(1,*)),max(b(0,*)),max(b(1,*))];
(lon and lat being a table of "test" longitudes and latitudes)
plot, a.uv_box[[0,2]],a.uv_box[[1,3]],/NODATA, /ISOTROPIC, XSTYLE=1, YSTYLE=1
map_continents,map=a
map_grid,map=a
Some warnings:
- MAP_SET is straightforward to use but is restricted to historical
projections.
- MAP_PROJ_INIT is very long to compile (GDL bug!) but gives access to
all projections. However some projections may crash with
MAP_PROJ_INIT since proj.4 is not protected at all (against null
pointers, unknown projection inverses, etc...). We recommend
G.Ewenden's library which is not so "good programmer practice" but has
more "good sense"!
Joel Gales, Gilles Duvert
PS (by AC): a demo ("test_map.pro") is now available in the testsuite/
\ No newline at end of file
......@@ -582,35 +582,60 @@
it must in turn set this OBJREF parameter (the variable) to a POINTER to
the heap variable to access.
- .RESET_SESSION and .FULL_RESET_SESSION commands
- CHOLSOL/CHOLDC and LA_CHOLSOL/LA_CHOLDC using Eigen3 (sub-optimal)
- large change in various graphic/plotting keywords:
- PLOT, OPLOT: All keywords supported except Z and T3D,
Correct handling of log/DATA/NORMAL/DEVICE coordinates and CLIPPING.
- PSYMs shapes now identical to IDL's.
- PLOTS: idem as above, plus /CONTINUE
- XYOUTS: idem as above, one-argument support (XYOUTS,"string").
Enhancement wrt. reference program: color,size,angle,etc
of text are vectors.
- CONTOUR: Support of all options except ZVALUE, ZAXIS,CELL_FILL,
C_ANNOTATIONS, CLOSED, DOWNHILL, IRREGULAR, TRIANGULATION,PATH_***
Correct implementation of Z, [X,Y], i.e., contours may be skewed,
rotated, etc depending on X and Y.
Better than IDL:
- a new ZLOG option makes log contours as well.
- C_ORIENTATION, C_SPACING are also vectors.
- log axes give better results
- good contouring of Not-A-Number values in Z and
MIN_VALUE/MAX_VALUE
- CLIPPING ok.
- Automatic limits in some cases still different from IDL.
- AXIS and boxes in plots: all [XYZ]TICK[***] options supported except TICKV
and a few TICKFORMAT specifics.
- CURSOR: full support for CURSOR command, which is interruptible by control-c
and has all the options.
- Added cursor-related functions TVCRS and command EMPTY.
- Added DEVICE options CURSOR_CROSSHAIR, CURSOR_STANDARD, CURSOR_ORIGINAL and
GET/SET_GRAPHICS_FUNCTION (GXoR, GXand, etc).
- Disabled by default the focus in the X11 graphics windows as IDL does and
repositioned WINDOWS by default to top-right of screen.
- CHOLSOL/CHOLDC using Eigen3 (sub-optimal but efficient for big matrix on multicores) (LA_CHOLSOL/LA_CHOLDC removed for technical issues)
- large change in various graphic/plotting keywords (see below). 3D options supported,
but some limitations due to the use of the plplot library.
- PLOT, OPLOT: All keywords supported except FONT and CHANNEL,
Correct handling of log/DATA/NORMAL/DEVICE coordinates and CLIPPING.
- PSYMs shapes now identical to IDL's.
- PLOTS: idem as above, all keywords now supported.
- XYOUTS: idem as above, one-argument support (XYOUTS,"string").
Enhancement wrt. reference program: color,size,angle,etc
of text are vectors. FONT and TEXT_AXES not supported.
- CONTOUR: Support of all options except CELL_FILL, C_ANNOTATIONS, CLOSED, DOWNHILL,
IRREGULAR, TRIANGULATION,PATH_***
Correct implementation of Z, [X,Y], i.e., contours may be skewed,
rotated, etc depending on X and Y.
Better than IDL:
- a new ZLOG option makes log contours as well.
- C_ORIENTATION, C_SPACING are also vectors.
- log axes give better results
- good contouring of Not-A-Number values in Z and MIN_VALUE/MAX_VALUE
- CLIPPING ok.
- Automatic limits in some cases still different from IDL.
- AXIS and boxes in plots: all [XYZ]TICK[***] options supported except TICKV
and a few TICKFORMAT specifics.
- CURSOR: full support for CURSOR command, which is interruptible by control-c
and has all the options.
- SURFACE: all Keywords supported except "LEGO" and "CHANNEL".
- Added SHADE_SURF (slow and imperfect shading from the plplot library).
- Added cursor-related functions TVCRS and command EMPTY.
- Added DEVICE options CURSOR_CROSSHAIR, CURSOR_STANDARD, CURSOR_ORIGINAL and
GET/SET_GRAPHICS_FUNCTION (GXoR, GXand, etc).
- Disabled by default the focus in the X11 graphics windows as IDL does and
repositioned WINDOWS by default to top-right of screen. Screen size and behaviour
using GDL_GR_X_WIDTH, GDL_GR_Y_WIDTH and GDL_GR_X_QSCREEN environment variables (X window)
(GDL_GR_WIN_WIDTH, GDL_GR_WIN_WIDTH and GDL_GR_WIN_QSCREEN under windows)
- WSHOW works irregularly, depending on the window manager.
0.9.5:
- lot of improvments in Widgets related code. Available widgets:
WIDGET_DRAW(!), WIDGET_BASE, WIDGET_BUTTON,
WIDGET_DROPLIST, WIDGET_COMBOBOX, WIDGET_LIST,
WIDGET_SLIDER, WIDGET_TAB, WIDGET_TEXT,
WIDGET_LABEL, CW_BGROUP
(Note: Not all keywords are supported yet (however, they are accepted) but almost all functional keywords.
This means: Programs using these widgets should work but maybe look a bit different)
Controlling routines:
WIDGET_EVENT, WIDGET_CONTROL, XMANAGER
- TIC and TOC
- !CONST system variable
- initial import of NetCDF-4 related codes:
NCDF_GROUPSINQ, NCDF_GROUPNAME, NCDF_GROUPDEF, NCDF_FULLGROUPNAME,
NCDF_GROUPPARENT, NCDF_DIMIDSINQ, NCDF_NCIDINQ, NCDF_VARIDSINQ
- introducing the NULL device type, better result on Unix like system without X11
(e. g. computing nodes on HPC)
- better free format for print, preserving precision digits.
- ISA() and TYPENAME()
- support for projections now complete. See MAP_INSTALL for details.
......@@ -41,7 +41,8 @@ Not yet supported:
simplified property access on objects (e. g. object.aProperty = value & print,object.aProperty)
GUI support (widgets) is now officially provided (not complete yet).
GUI support (widgets) is now officially provided
(most WIDGET_... routines are implemented).
The file input output system is fully implemented including full support of
F77_UNFORMATTED.
......@@ -135,9 +136,9 @@ See below if you have an older version of plplot.
To download plplot please look here:
http://plplot.sourceforge.net/source/index.html