Browse Source

* enabled proj4 for linux (other platforms will follow)
* finished proj4 translation

git-svn-id: trunk@12563 -

ivost 16 years ago
parent
commit
7dfe21ce07
3 changed files with 571 additions and 337 deletions
  1. 62 9
      packages/Makefile
  2. 1 1
      packages/Makefile.fpc
  3. 508 327
      packages/proj4/src/proj.pas

+ 62 - 9
packages/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/01/02]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/01/16]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
@@ -263,7 +263,7 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
 endif
 PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph libc unixutil graph pxlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph libc unixutil graph pxlib
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv graph unzip gdbint
@@ -323,7 +323,7 @@ ifeq ($(FULL_TARGET),i386-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg httpd13 httpd20 httpd22 pxlib numlib users iconvenc
@@ -347,7 +347,7 @@ ifeq ($(FULL_TARGET),m68k-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
@@ -368,7 +368,7 @@ ifeq ($(FULL_TARGET),powerpc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
@@ -380,7 +380,7 @@ ifeq ($(FULL_TARGET),sparc-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick gdbint libpng x11 gdbm tcl syslog libcurl opengl cairo  bfd aspell svgalib imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl graph gnome1 gtk1 gtk2 librsvg httpd13 httpd20 httpd22 pxlib numlib users iconvenc
@@ -395,7 +395,7 @@ ifeq ($(FULL_TARGET),x86_64-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  palmunits
@@ -419,7 +419,7 @@ ifeq ($(FULL_TARGET),arm-symbian)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib graph
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc postgres sqlite pthreads imagemagick libpng gdbm tcl syslog libcurl bfd aspell utmp fftw pcap openssl numlib iconvenc opengl x11 cairo gtk1 gtk2 librsvg fpgtk xforms gnome1 httpd13 httpd20 httpd22 imlib
@@ -431,7 +431,7 @@ ifeq ($(FULL_TARGET),avr-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic
@@ -1582,6 +1582,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -2470,6 +2471,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -2840,6 +2842,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3140,6 +3143,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3368,6 +3372,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3649,6 +3654,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -3933,6 +3939,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -4120,6 +4127,7 @@ TARGET_DIRS_CDROM=1
 TARGET_DIRS_USERS=1
 TARGET_DIRS_ICONVENC=1
 TARGET_DIRS_LIBXML=1
+TARGET_DIRS_PROJ4=1
 TARGET_DIRS_IMLIB=1
 TARGET_DIRS_UTMP=1
 TARGET_DIRS_FPGTK=1
@@ -6861,6 +6869,51 @@ libxml:
 	$(MAKE) -C libxml all
 .PHONY: libxml_all libxml_debug libxml_smart libxml_release libxml_units libxml_examples libxml_shared libxml_install libxml_sourceinstall libxml_exampleinstall libxml_distinstall libxml_zipinstall libxml_zipsourceinstall libxml_zipexampleinstall libxml_zipdistinstall libxml_clean libxml_distclean libxml_cleanall libxml_info libxml_makefiles libxml
 endif
+ifdef TARGET_DIRS_PROJ4
+proj4_all:
+	$(MAKE) -C proj4 all
+proj4_debug:
+	$(MAKE) -C proj4 debug
+proj4_smart:
+	$(MAKE) -C proj4 smart
+proj4_release:
+	$(MAKE) -C proj4 release
+proj4_units:
+	$(MAKE) -C proj4 units
+proj4_examples:
+	$(MAKE) -C proj4 examples
+proj4_shared:
+	$(MAKE) -C proj4 shared
+proj4_install:
+	$(MAKE) -C proj4 install
+proj4_sourceinstall:
+	$(MAKE) -C proj4 sourceinstall
+proj4_exampleinstall:
+	$(MAKE) -C proj4 exampleinstall
+proj4_distinstall:
+	$(MAKE) -C proj4 distinstall
+proj4_zipinstall:
+	$(MAKE) -C proj4 zipinstall
+proj4_zipsourceinstall:
+	$(MAKE) -C proj4 zipsourceinstall
+proj4_zipexampleinstall:
+	$(MAKE) -C proj4 zipexampleinstall
+proj4_zipdistinstall:
+	$(MAKE) -C proj4 zipdistinstall
+proj4_clean:
+	$(MAKE) -C proj4 clean
+proj4_distclean:
+	$(MAKE) -C proj4 distclean
+proj4_cleanall:
+	$(MAKE) -C proj4 cleanall
+proj4_info:
+	$(MAKE) -C proj4 info
+proj4_makefiles:
+	$(MAKE) -C proj4 makefiles
+proj4:
+	$(MAKE) -C proj4 all
+.PHONY: proj4_all proj4_debug proj4_smart proj4_release proj4_units proj4_examples proj4_shared proj4_install proj4_sourceinstall proj4_exampleinstall proj4_distinstall proj4_zipinstall proj4_zipsourceinstall proj4_zipexampleinstall proj4_zipdistinstall proj4_clean proj4_distclean proj4_cleanall proj4_info proj4_makefiles proj4
+endif
 ifdef TARGET_DIRS_IMLIB
 imlib_all:
 	$(MAKE) -C imlib all

+ 1 - 1
packages/Makefile.fpc

@@ -41,7 +41,7 @@ dirs_openbsd=fv fcl-web fcl-async ibase mysql ncurses zlib oracle odbc  postgres
                imlib utmp  fpgtk xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 dirs_linux=fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc postgres sqlite pthreads imagemagick \
                gdbint libpng x11 uuid ldap modplug dts mad  gdbm tcl syslog libcurl opengl cairo gtk1 gtk2 librsvg \
-               a52 bfd aspell svgalib newt cdrom users  iconvenc libxml \
+               a52 bfd aspell svgalib newt cdrom users  iconvenc libxml proj4 \
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 dirs_win32=fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                gdbint libpng mad tcl opengl gtk1 gtk2 librsvg a52 cdrom fpgtk openal fftw lua \

+ 508 - 327
packages/proj4/src/proj.pas

@@ -4,14 +4,14 @@
 }
 
 (******************************************************************************
- * $Id: projects.h 1504 2009-01-06 02:11:57Z warmerdam $
+ * $Id: proj_api.h,v 1.17 2008/07/21 20:47:09 fwarmerdam Exp $
  *
  * Project:  PROJ.4
- * Purpose:  Primary (private) include file for PROJ.4 library.
- * Author:   Gerald Evenden
+ * Purpose:  Public (application) include file for PROJ.4 API, and constants.
+ * Author:   Frank Warmerdam, <[email protected]>
  *
  ******************************************************************************
- * Copyright (c) 2000, Frank Warmerdam
+ * Copyright (c) 2001, Frank Warmerdam <[email protected]>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -30,12 +30,13 @@
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
- *****************************************************************************)
+ ******************************************************************************)
 
 unit proj;
 
 {$mode objfpc}
 {$MINENUMSIZE 4}
+{$h+}
 
 interface
 
@@ -59,343 +60,523 @@ const
   {$LINKLIB proj}
 {$ENDIF}
 
+{ List of projections (proj=)
+        aea : Albers Equal Area
+        	Conic Sph&Ell
+        	lat_1= lat_2=
+        aeqd : Azimuthal Equidistant
+        	Azi, Sph&Ell
+        	lat_0 guam
+        airy : Airy
+        	Misc Sph, no inv.
+        	no_cut lat_b=
+        aitoff : Aitoff
+        	Misc Sph
+        alsk : Mod. Stererographics of Alaska
+        	Azi(mod)
+        apian : Apian Globular I
+        	Misc Sph, no inv.
+        august : August Epicycloidal
+        	Misc Sph, no inv.
+        bacon : Bacon Globular
+        	Misc Sph, no inv.
+        bipc : Bipolar conic of western hemisphere
+        	Conic Sph.
+        boggs : Boggs Eumorphic
+        	PCyl., no inv., Sph.
+        bonne : Bonne (Werner lat_1=90)
+        	Conic Sph&Ell
+        	lat_1=
+        cass : Cassini
+        	Cyl, Sph&Ell
+        cc : Central Cylindrical
+        	Cyl, Sph
+        cea : Equal Area Cylindrical
+        	Cyl, Sph&Ell
+        	lat_ts=
+        chamb : Chamberlin Trimetric
+        	Misc Sph, no inv.
+        	lat_1= lon_1= lat_2= lon_2= lat_3= lon_3=
+        collg : Collignon
+        	PCyl, Sph.
+        crast : Craster Parabolic (Putnins P4)
+        	PCyl., Sph.
+        denoy : Denoyer Semi-Elliptical
+        	PCyl., no inv., Sph.
+        eck1 : Eckert I
+        	PCyl., Sph.
+        eck2 : Eckert II
+        	PCyl. Sph.
+        eck3 : Eckert III
+        	PCyl, Sph.
+        eck4 : Eckert IV
+        	PCyl, Sph.
+        eck5 : Eckert V
+        	PCyl, Sph.
+        eck6 : Eckert VI
+        	PCyl, Sph.
+        eqc : Equidistant Cylindrical (Plate Caree)
+        	Cyl, Sph
+        	lat_ts=
+        eqdc : Equidistant Conic
+        	Conic, Sph&Ell
+        	lat_1= lat_2=
+        euler : Euler
+        	Conic, Sph
+        	lat_1= and lat_2=
+        fahey : Fahey
+        	Pcyl, Sph.
+        fouc : Foucaut
+        	PCyl., Sph.
+        fouc_s : Foucaut Sinusoidal
+        	PCyl., Sph.
+        gall : Gall (Gall Stereographic)
+        	Cyl, Sph
+        geos : Geostationary Satellite View
+        	Azi, Sph&Ell
+        	h=
+        gins8 : Ginsburg VIII (TsNIIGAiK)
+        	PCyl, Sph., no inv.
+        gn_sinu : General Sinusoidal Series
+        	PCyl, Sph.
+        	m= n=
+        gnom : Gnomonic
+        	Azi, Sph.
+        goode : Goode Homolosine
+        	PCyl, Sph.
+        gs48 : Mod. Stererographics of 48 U.S.
+        	Azi(mod)
+        gs50 : Mod. Stererographics of 50 U.S.
+        	Azi(mod)
+        hammer : Hammer & Eckert-Greifendorff
+        	Misc Sph, no inv.
+        	W= M=
+        hatano : Hatano Asymmetrical Equal Area
+        	PCyl, Sph.
+        imw_p : International Map of the World Polyconic
+        	Mod. Polyconic, Ell
+        	lat_1= and lat_2= [lon_1=]
+        kav5 : Kavraisky V
+        	PCyl., Sph.
+        kav7 : Kavraisky VII
+        	PCyl, Sph.
+        krovak : Krovak
+        	PCyl., Ellps.
+        labrd : Laborde
+        	Cyl, Sph
+        	Special for Madagascar
+        laea : Lambert Azimuthal Equal Area
+        	Azi, Sph&Ell
+        lagrng : Lagrange
+        	Misc Sph, no inv.
+        	W=
+        larr : Larrivee
+        	Misc Sph, no inv.
+        lask : Laskowski
+        	Misc Sph, no inv.
+        lonlat : Lat/long (Geodetic)
+
+        latlon : Lat/long (Geodetic alias)
+
+        lcc : Lambert Conformal Conic
+        	Conic, Sph&Ell
+        	lat_1= and lat_2= or lat_0
+        lcca : Lambert Conformal Conic Alternative
+        	Conic, Sph&Ell
+        	lat_0=
+        leac : Lambert Equal Area Conic
+        	Conic, Sph&Ell
+        	lat_1= south
+        lee_os : Lee Oblated Stereographic
+        	Azi(mod)
+        loxim : Loximuthal
+        	PCyl Sph
+        lsat : Space oblique for LANDSAT
+        	Cyl, Sph&Ell
+        	lsat= path=
+        mbt_s : McBryde-Thomas Flat-Polar Sine (No. 1)
+        	PCyl., Sph.
+        mbt_fps : McBryde-Thomas Flat-Pole Sine (No. 2)
+        	Cyl., Sph.
+        mbtfpp : McBride-Thomas Flat-Polar Parabolic
+        	Cyl., Sph.
+        mbtfpq : McBryde-Thomas Flat-Polar Quartic
+        	Cyl., Sph.
+        mbtfps : McBryde-Thomas Flat-Polar Sinusoidal
+        	PCyl, Sph.
+        merc : Mercator
+        	Cyl, Sph&Ell
+        	lat_ts=
+        mil_os : Miller Oblated Stereographic
+        	Azi(mod)
+        mill : Miller Cylindrical
+        	Cyl, Sph
+        moll : Mollweide
+        	PCyl., Sph.
+        murd1 : Murdoch I
+        	Conic, Sph
+        	lat_1= and lat_2=
+        murd2 : Murdoch II
+        	Conic, Sph
+        	lat_1= and lat_2=
+        murd3 : Murdoch III
+        	Conic, Sph
+        	lat_1= and lat_2=
+        nell : Nell
+        	PCyl., Sph.
+        nell_h : Nell-Hammer
+        	PCyl., Sph.
+        nicol : Nicolosi Globular
+        	Misc Sph, no inv.
+        nsper : Near-sided perspective
+        	Azi, Sph
+        	h=
+        nzmg : New Zealand Map Grid
+        	fixed Earth
+        ob_tran : General Oblique Transformation
+        	Misc Sph
+        	o_proj= plus parameters for projection
+        	o_lat_p= o_lon_p= (new pole) or
+        	o_alpha= o_lon_c= o_lat_c= or
+        	o_lon_1= o_lat_1= o_lon_2= o_lat_2=
+        ocea : Oblique Cylindrical Equal Area
+        	Cyl, Sphlonc= alpha= or
+        	lat_1= lat_2= lon_1= lon_2=
+        oea : Oblated Equal Area
+        	Misc Sph
+        	n= m= theta=
+        omerc : Oblique Mercator
+        	Cyl, Sph&Ell
+        	 no_rot rot_conv no_uoff and
+        	alpha= lonc= or
+        	 lon_1= lat_1= lon_2= lat_2=
+        ortel : Ortelius Oval
+        	Misc Sph, no inv.
+        ortho : Orthographic
+        	Azi, Sph.
+        pconic : Perspective Conic
+        	Conic, Sph
+        	lat_1= and lat_2=
+        poly : Polyconic (American)
+        	Conic, Sph&Ell
+        putp1 : Putnins P1
+        	PCyl, Sph.
+        putp2 : Putnins P2
+        	PCyl., Sph.
+        putp3 : Putnins P3
+        	PCyl., Sph.
+        putp3p : Putnins P3'
+        	PCyl., no inv., Sph.
+        putp4p : Putnins P4'
+        	PCyl., Sph.
+        putp5 : Putnins P5
+        	PCyl., Sph.
+        putp5p : Putnins P5'
+        	PCyl., Sph.
+        putp6 : Putnins P6
+        	PCyl., Sph.
+        putp6p : Putnins P6'
+        	PCyl., Sph.
+        qua_aut : Quartic Authalic
+        	PCyl., Sph.
+        robin : Robinson
+        	PCyl., Sph.
+        rouss : Roussilhe Stereographic
+        	Azi., Ellps.
+        rpoly : Rectangular Polyconic
+        	Conic, Sph., no inv.
+        	lat_ts=
+        sinu : Sinusoidal (Sanson-Flamsteed)
+        	PCyl, Sph&Ell
+        somerc : Swiss. Obl. Mercator
+        	Cyl, Ell
+        	For CH1903
+        stere : Stereographic
+        	Azi, Sph&Ell
+        	lat_ts=
+        sterea : Oblique Stereographic Alternative
+        	Azimuthal, Sph&Ell
+        tcc : Transverse Central Cylindrical
+        	Cyl, Sph, no inv.
+        tcea : Transverse Cylindrical Equal Area
+        	Cyl, Sph
+        tissot : Tissot
+        	Conic, Sph
+        	lat_1= and lat_2=
+        tmerc : Transverse Mercator
+        	Cyl, Sph&Ell
+        tpeqd : Two Point Equidistant
+        	Misc Sph
+        	lat_1= lon_1= lat_2= lon_2=
+        tpers : Tilted perspective
+        	Azi, Sph
+        	tilt= azi= h=
+        ups : Universal Polar Stereographic
+        	Azi, Sph&Ell
+        	south
+        urm5 : Urmaev V
+        	PCyl., Sph.
+        	n= q= alphi=
+        urmfps : Urmaev Flat-Polar Sinusoidal
+        	PCyl, Sph.
+        	n=
+        utm : Universal Transverse Mercator (UTM)
+        	Cyl, Sph
+        	zone= south
+        vandg : van der Grinten (I)
+        	Misc Sph
+        vandg2 : van der Grinten II
+        	Misc Sph, no inv.
+        vandg3 : van der Grinten III
+        	Misc Sph, no inv.
+        vandg4 : van der Grinten IV
+        	Misc Sph, no inv.
+        vitk1 : Vitkovsky I
+        	Conic, Sph
+        	lat_1= and lat_2=
+        wag1 : Wagner I (Kavraisky VI)
+        	PCyl, Sph.
+        wag2 : Wagner II
+        	PCyl., Sph.
+        wag3 : Wagner III
+        	PCyl., Sph.
+        	lat_ts=
+        wag4 : Wagner IV
+        	PCyl., Sph.
+        wag5 : Wagner V
+        	PCyl., Sph.
+        wag6 : Wagner VI
+        	PCyl, Sph.
+        wag7 : Wagner VII
+        	Misc Sph, no inv.
+        weren : Werenskiold I
+        	PCyl., Sph.
+        wink1 : Winkel I
+        	PCyl., Sph.
+        	lat_ts=
+        wink2 : Winkel II
+        	PCyl., Sph., no inv.
+        	lat_1=
+        wintri : Winkel Tripel
+        	Misc Sph
+        	lat_1
+}
 
-(***********************************************************************)
-(* Header : projects.h                                                 *)
-(***********************************************************************)
-
-(* prototype hypot for systems where absent *)
-#ifndef _WIN32
-extern double hypot(double, double);
-#endif
+type
+  size_t = ptrint;
 
-#ifdef _WIN32_WCE
-#  include <wce_stdlib.h>
-#  include <wce_stdio.h>
-#  define rewind wceex_rewind
-#  define getenv wceex_getenv
-#  define strdup _strdup
-#  define hypot _hypot
-#endif
 
-(* some useful constants *)
+(* Try to update this every version! *)
 const
-  HALFPI    = 1.5707963267948966;
-  FORTPI    = 0.78539816339744833;
-  PI        = 3.14159265358979323846;
-  TWOPI     = 6.2831853071795864769;
+  PJ_VERSION = 461;
 
-(* maximum tag id length for +init and default files *)
-  ID_TAG_MAX = 50;
+//extern char const pj_release[]; /* global release id string */
 
-(* directory delimiter for DOS support *)
-{$IFDEF WINDOWS}
-  DIR_CHAR = '\\';
-{$ELSE}
-  DIR_CHAR = '/';
-{$ENDIF}
+const
+  RAD_TO_DEG = 57.29577951308232;
+  DEG_TO_RAD = 0.0174532925199432958;
 
-(* datum_type values *)
-  PJD_UNKNOWN   = 0;
-  PJD_3PARAM    = 1;   
-  PJD_7PARAM    = 2;  
-  PJD_GRIDSHIFT = 3;
-  PJD_WGS84     = 4;   (* WGS84 (or anything considered equivelent) *)
 
-(* datum system errors *)
-  PJD_ERR_GEOCENTRIC = -45;
+//extern int pj_errno;	/* global error return code */
 
 type
   projUV = record
-    u,v: double;
+    u, v: cdouble;
   end;
 
-  COMPLEX = record
-    r,i: double;
-  end;
+  projPJ = pointer;
+  projXY = projUV;
+  projLP = projUV;
 
-(*#ifndef PJ_LIB__
-#define XY projUV
-#define LP projUV
-#else
-typedef struct { double x, y; }     XY;
-typedef struct { double lam, phi; } LP;
-#endif*)
-
-typedef union { double  f; int  i; char *s; } PVALUE;
-struct PJconsts;
-    
-struct PJ_LIST {
-  char  *id;    (* projection keyword *)
-  struct PJconsts *(*proj)(struct PJconsts*);(* projection entry point *)
-  char  * const *descr; (* description text *)
-};
-struct PJ_ELLPS {
-  char  *id;  (* ellipse keyword name *)
-  char  *major; (* a= value *)
-  char  *ell; (* elliptical parameter *)
-  char  *name;  (* comments *)
-};
-struct PJ_UNITS {
-  char  *id;  (* units keyword *)
-  char  *to_meter;  (* multiply by value to get meters *)
-  char  *name;  (* comments *)
-};
-
-struct PJ_DATUMS {
-    char    *id;     (* datum keyword *)
-    char    *defn;   (* ie. "to_wgs84=..." *)
-    char    *ellipse_id; (* ie from ellipse table *)
-    char    *comments; (* EPSG code, etc *)
-};
-
-struct PJ_PRIME_MERIDIANS {
-    char    *id;     (* prime meridian keyword *)
-    char    *defn;   (* offset from greenwich in DMS format. *)
-};
-
-struct DERIVS {
-    double x_l, x_p; (* derivatives of x for lambda-phi *)
-    double y_l, y_p; (* derivatives of y for lambda-phi *)
-};
-    
-struct FACTORS {
-  struct DERIVS der;
-  double h, k;  (* meridinal, parallel scales *)
-  double omega, thetap; (* angular distortion, theta prime *)
-  double conv;  (* convergence *)
-  double s;   (* areal scale factor *)
-  double a, b;  (* max-min scale error *)
-  int code;   (* info as to analytics, see following *)
-};
-#define IS_ANAL_XL_YL 01  (* derivatives of lon analytic *)
-#define IS_ANAL_XP_YP 02  (* derivatives of lat analytic *)
-#define IS_ANAL_HK  04    (* h and k analytic *)
-#define IS_ANAL_CONV 010  (* convergence analytic *)
-    (* parameter list struct *)
-typedef struct ARG_list {
-  struct ARG_list *next;
-  char used;
-  char param[1]; } paralist;
-  (* base projection data structure *)
-
-
-typedef struct PJconsts {
-  XY  (*fwd)(LP, struct PJconsts *);
-  LP  (*inv)(XY, struct PJconsts *);
-  void (*spc)(LP, struct PJconsts *, struct FACTORS *);
-  void (*pfree)(struct PJconsts *);
-  const char *descr;
-  paralist *params;   (* parameter list *)
-  int over;   (* over-range flag *)
-  int geoc;   (* geocentric latitude flag *)
-        int is_latlong; (* proj=latlong ... not really a projection at all *)
-        int is_geocent; (* proj=geocent ... not really a projection at all *)
-  double
-    a,  (* major axis or radius if es==0 *)
-                a_orig, (* major axis before any +proj related adjustment *)
-    es, (* e ^ 2 *)
-                es_orig, (* es before any +proj related adjustment *)
-    e,  (* eccentricity *)
-    ra, (* 1/A *)
-    one_es, (* 1 - e^2 *)
-    rone_es, (* 1/one_es *)
-    lam0, phi0, (* central longitude, latitude *)
-    x0, y0, (* easting and northing *)
-    k0, (* general scaling factor *)
-    to_meter, fr_meter; (* cartesian scaling *)
-    
-        int     datum_type; (* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 *)
-        double  datum_params[7];
-        double  from_greenwich; (* prime meridian offset (in radians) *)
-        double  long_wrap_center; (* 0.0 for -180 to 180, actually in radians*)
-        
-#ifdef PROJ_PARMS__
-PROJ_PARMS__
-#endif (* end of optional extensions *)
-} PJ;
-
-(* public API *)
-#include "proj_api.h"
-
-(* Generate pj_list external or make list from include file *)
-#ifndef PJ_LIST_H
-extern struct PJ_LIST pj_list[];
-#else
-#define PROJ_HEAD(id, name) \
-    struct PJconsts *pj_##id(struct PJconsts*); extern char * const pj_s_##id;
-    
-#ifndef lint
-#define DO_PJ_LIST_ID
-#endif
-#include PJ_LIST_H
-#ifndef lint
-#undef DO_PJ_LIST_ID
-#endif
-#undef PROJ_HEAD
-#define PROJ_HEAD(id, name) {#id, pj_##id, &pj_s_##id},
-  struct PJ_LIST
-pj_list[] = {
-#include PJ_LIST_H
-    {0,     0,  0},
-  };
-#undef PROJ_HEAD
-#endif
-
-#ifndef PJ_ELLPS__
-extern struct PJ_ELLPS pj_ellps[];
-#endif
-
-#ifndef PJ_UNITS__
-extern struct PJ_UNITS pj_units[];
-#endif
-
-#ifndef PJ_DATUMS__
-extern struct PJ_DATUMS pj_datums[];
-extern struct PJ_PRIME_MERIDIANS pj_prime_meridians[];
-#endif
-
-#ifdef PJ_LIB__
-    (* repeatative projection code *)
-#define PROJ_HEAD(id, name) static const char des_##id [] = name
-#define ENTRYA(name) \
-        C_NAMESPACE_VAR const char * const pj_s_##name = des_##name; \
-  C_NAMESPACE PJ *pj_##name(PJ *P) { if (!P) { \
-  if( (P = (PJ*) pj_malloc(sizeof(PJ))) != NULL) { \
-  P->pfree = freeup; P->fwd = 0; P->inv = 0; \
-  P->spc = 0; P->descr = des_##name;
-#define ENTRYX } return P; } else {
-#define ENTRY0(name) ENTRYA(name) ENTRYX
-#define ENTRY1(name, a) ENTRYA(name) P->a = 0; ENTRYX
-#define ENTRY2(name, a, b) ENTRYA(name) P->a = 0; P->b = 0; ENTRYX
-#define ENDENTRY(p) } return (p); }
-#define E_ERROR(err) { pj_errno = err; freeup(P); return(0); }
-#define E_ERROR_0 { freeup(P); return(0); }
-#define F_ERROR { pj_errno = -20; return(xy); }
-#define I_ERROR { pj_errno = -20; return(lp); }
-#define FORWARD(name) static XY name(LP lp, PJ *P) { XY xy = {0.0,0.0}
-#define INVERSE(name) static LP name(XY xy, PJ *P) { LP lp = {0.0,0.0}
-#define FREEUP static void freeup(PJ *P) {
-#define SPECIAL(name) static void name(LP lp, PJ *P, struct FACTORS *fac)
-#endif
-#define MAX_TAB_ID 80
-typedef struct { float lam, phi; } FLP;
-typedef struct { int lam, phi; } ILP;
-
-struct CTABLE {
-  char id[MAX_TAB_ID]; (* ascii info *)
-  LP ll;      (* lower left corner coordinates *)
-  LP del;     (* size of cells *)
-  ILP lim;    (* limits of conversion matrix *)
-  FLP *cvs;   (* conversion matrix *)
-};
-
-typedef struct _pj_gi {
-    char *gridname;   (* identifying name of grid, eg "conus" or ntv2_0.gsb *)
-    char *filename;   (* full path to filename *)
-    
-    const char *format; (* format of this grid, ie "ctable", "ntv1", 
-                           "ntv2" or "missing". *)
-
-    int   grid_offset; (* offset in file, for delayed loading *)
-
-    struct CTABLE *ct;
-
-    struct _pj_gi *next;
-    struct _pj_gi *child;
-} PJ_GRIDINFO;
 
 (* procedure prototypes *)
-double dmstor(const char *, char **);
-void set_rtodms(int, int);
-char *rtodms(char *, double, int, int);
-double adjlon(double);
-double aacos(double), aasin(double), asqrt(double), aatan2(double, double);
-PVALUE pj_param(paralist *, char *);
-paralist *pj_mkparam(char *);
-int pj_ell_set(paralist *, double *, double *);
-int pj_datum_set(paralist *, PJ *);
-int pj_prime_meridian_set(paralist *, PJ *);
-int pj_angular_units_set(paralist *, PJ *);
-double *pj_enfn(double);
-double pj_mlfn(double, double, double, double *);
-double pj_inv_mlfn(double, double, double *);
-double pj_qsfn(double, double, double);
-double pj_tsfn(double, double, double);
-double pj_msfn(double, double, double);
-double pj_phi2(double, double);
-double pj_qsfn_(double, PJ *);
-double *pj_authset(double);
-double pj_authlat(double, double *);
-COMPLEX pj_zpoly1(COMPLEX, COMPLEX *, int);
-COMPLEX pj_zpolyd1(COMPLEX, COMPLEX *, int, COMPLEX *);
-FILE *pj_open_lib(char *, char *);
-
-int pj_deriv(LP, double, PJ *, struct DERIVS *);
-int pj_factors(LP, PJ *, double, struct FACTORS *);
-
-struct PW_COEF {(* row coefficient structure *)
-    int m;    (* number of c coefficients (=0 for none) *)
-    double *c;  (* power coefficients *)
-};
- 
-(* Approximation structures and procedures *)
-typedef struct {  (* Chebyshev or Power series structure *)
-  projUV a, b;    (* power series range for evaluation *)
-          (* or Chebyshev argument shift/scaling *)
-  struct PW_COEF *cu, *cv;
-  int mu, mv;   (* maximum cu and cv index (+1 for count) *)
-  int power;    (* != 0 if power series, else Chebyshev *)
-} Tseries;
-Tseries *mk_cheby(projUV, projUV, double, projUV *, projUV (*)(projUV), int, int, int);
-projUV bpseval(projUV, Tseries *);
-projUV bcheval(projUV, Tseries *);
-projUV biveval(projUV, Tseries *);
-void *vector1(int, int);
-void **vector2(int, int, int);
-void freev2(void **v, int nrows);
-int bchgen(projUV, projUV, int, int, projUV **, projUV(*)(projUV));
-int bch2bps(projUV, projUV, projUV **, int, int);
-(* nadcon related protos *)
-LP nad_intr(LP, struct CTABLE *);
-LP nad_cvt(LP, int, struct CTABLE *);
-struct CTABLE *nad_init(char *);
-struct CTABLE *nad_ctable_init( FILE * fid );
-int nad_ctable_load( struct CTABLE *, FILE * fid );
-void nad_free(struct CTABLE *);
-
-(* higher level handling of datum grid shift files *)
-
-PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *, int * );
-void pj_deallocate_grids();
-
-PJ_GRIDINFO *pj_gridinfo_init( const char * );
-int pj_gridinfo_load( PJ_GRIDINFO * );
-void pj_gridinfo_free( PJ_GRIDINFO * );
-
-void *proj_mdist_ini(double);
-double proj_mdist(double, double, double, const void *);
-double proj_inv_mdist(double, const void *);
-void *pj_gauss_ini(double, double, double *,double *);
-LP pj_gauss(LP, const void *);
-LP pj_inv_gauss(LP, const void *);
-
-extern char const pj_release[];
-
-struct PJ_ELLPS *pj_get_ellps_ref( void );
-struct PJ_DATUMS *pj_get_datums_ref( void );
-struct PJ_UNITS *pj_get_units_ref( void );
-struct PJ_LIST  *pj_get_list_ref( void );
-struct PJ_PRIME_MERIDIANS  *pj_get_prime_meridians_ref( void );
- 
-#ifndef DISABLE_CVSID
-#  define PJ_CVSID(string)     static char pj_cvsid[] = string; \
-static char *cvsid_aw() { return( cvsid_aw() ? ((char *) NULL) : pj_cvsid ); }
-#else
-#  define PJ_CVSID(string)
-#endif
-
-#ifdef __cplusplus
-}
+function pj_fwd(val: projLP; proj: projPJ): projXY; cdecl; external;
+function pj_inv(val: projXY; proj: projPJ): projLP; cdecl; external;
+function pj_transform(src, dst: projPJ; point_count: clong; point_offset: cint; x,y,z: pcdouble): cint; cdecl; external;
+function pj_datum_transform(src, dst: projPJ; point_count: clong; point_offset: cint; x,y,z: pcdouble): cint; cdecl; external;
+function pj_geocentric_to_geodetic(a, es: cdouble; point_count: clong; point_offset: cint; x,y,z: pcdouble): cint; cdecl; external;
+function pj_geodetic_to_geocentric(a, es: cdouble; point_count: clong; point_offset: cint; x,y,z: pcdouble): cint; cdecl; external;
+function pj_compare_datums(srcdefn: projPJ; dstdefn: projPJ): cint; cdecl; external;
+function pj_apply_gridshift(c: pchar; i: cint; point_count: clong; point_offset: cint; x,y,z: pcdouble): cint; cdecl; external;
+
+type
+  projFinder = function(s: pchar): pchar; cdecl;
+
+procedure pj_deallocate_grids; cdecl; external;
+function pj_is_latlong(proj: projPJ): cint; cdecl; external;
+function pj_is_geocent(proj: projPJ): cint; cdecl; external;
+procedure pj_pr_list(proj: projPJ); cdecl; external;
+procedure pj_free(proj: projPJ); cdecl; external;
+procedure pj_set_finder(finder: projFinder); cdecl; external;
+procedure pj_set_searchpath(count: cint; path: ppchar); cdecl; external;
+function pj_init(argc: cint; argv: ppchar): projPJ; cdecl; external;
+function pj_init_plus(args: pchar): projPJ; cdecl; external;
+function pj_get_def(proj: projPJ; i: cint): pchar; cdecl; external;
+function pj_latlong_from_proj(proj: projPJ): projPJ; cdecl; external;
+function pj_malloc(size: size_t): pointer; cdecl; external;
+procedure pj_dalloc(ptr: pointer); cdecl; external;
+function pj_strerrno(err: cint): pchar; cdecl; external;
+function pj_get_errno_ref: pcint; cdecl; external;
+function pj_get_release: pchar; cdecl; external;
+
+
+
+(***************************************************************************)
+(* RSC IDENTIFIER:  GEOCENTRIC
+ *
+ * ABSTRACT
+ *
+ *    This component provides conversions between Geodetic coordinates (latitude,
+ *    longitude in radians and height in meters) and Geocentric coordinates
+ *    (X, Y, Z) in meters.
+ *
+ * ERROR HANDLING
+ *
+ *    This component checks parameters for valid values.  If an invalid value
+ *    is found, the error code is combined with the current error code using
+ *    the bitwise or.  This combining allows multiple error codes to be
+ *    returned. The possible error codes are:
+ *
+ *      GEOCENT_NO_ERROR        : No errors occurred in function
+ *      GEOCENT_LAT_ERROR       : Latitude out of valid range
+ *                                 (-90 to 90 degrees)
+ *      GEOCENT_LON_ERROR       : Longitude out of valid range
+ *                                 (-180 to 360 degrees)
+ *      GEOCENT_A_ERROR         : Semi-major axis less than or equal to zero
+ *      GEOCENT_B_ERROR         : Semi-minor axis less than or equal to zero
+ *      GEOCENT_A_LESS_B_ERROR  : Semi-major axis less than semi-minor axis
+ *
+ *
+ * REUSE NOTES
+ *
+ *    GEOCENTRIC is intended for reuse by any application that performs
+ *    coordinate conversions between geodetic coordinates and geocentric
+ *    coordinates.
+ *
+ *
+ * REFERENCES
+ *
+ *    An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion,
+ *    Ralph Toms, February 1996  UCRL-JC-123138.
+ *
+ *    Further information on GEOCENTRIC can be found in the Reuse Manual.
+ *
+ *    GEOCENTRIC originated from : U.S. Army Topographic Engineering Center
+ *                                 Geospatial Information Division
+ *                                 7701 Telegraph Road
+ *                                 Alexandria, VA  22310-3864
+ *
+ * LICENSES
+ *
+ *    None apply to this component.
+ *
+ * RESTRICTIONS
+ *
+ *    GEOCENTRIC has no restrictions.
+ *
+ * ENVIRONMENT
+ *
+ *    GEOCENTRIC was tested and certified in the following environments:
+ *
+ *    1. Solaris 2.5 with GCC version 2.8.1
+ *    2. Windows 95 with MS Visual C++ version 6
+ *
+ * MODIFICATIONS
+ *
+ *    Date              Description
+ *    ----              -----------
+ *
+ *
+ *)
+
+
+(***************************************************************************)
+(*
+ *                              DEFINES
+ *)
+const
+  GEOCENT_NO_ERROR        = $0000;
+  GEOCENT_LAT_ERROR       = $0001;
+  GEOCENT_LON_ERROR       = $0002;
+  GEOCENT_A_ERROR         = $0004;
+  GEOCENT_B_ERROR         = $0008;
+  GEOCENT_A_LESS_B_ERROR  = $0010;
+
+
+(***************************************************************************)
+(*
+ *                              FUNCTION PROTOTYPES
+ *)
+
+type
+  PGeocentricInfo = ^GeocentricInfo;
+  GeocentricInfo = record
+    Geocent_a   : cdouble;       (* Semi-major axis of ellipsoid in meters *)
+    Geocent_b   : cdouble;       (* Semi-minor axis of ellipsoid *)
+    Geocent_a2  : cdouble;       (* Square of semi-major axis *)
+    Geocent_b2  : cdouble;       (* Square of semi-minor axis *)
+    Geocent_e2  : cdouble;       (* Eccentricity squared  *)
+    Geocent_ep2 : cdouble;       (* 2nd eccentricity squared *)
+  end;
+
+
+procedure pj_Init_Geocentric(var gi: GeocentricInfo); cdecl; external;
+function pj_Set_Geocentric_Parameters(var gi: GeocentricInfo; a, b: cdouble): clong; cdecl; external;
+
+(*
+ * The function Set_Geocentric_Parameters receives the ellipsoid parameters
+ * as inputs and sets the corresponding state variables.
+ *
+ *    a  : Semi-major axis, in meters.          (input)
+ *    b  : Semi-minor axis, in meters.          (input)
+ *)
+
+
+procedure pj_Get_Geocentric_Parameters(var gi: GeocentricInfo; var a, b: cdouble); cdecl; external;
+
+(*
+ * The function Get_Geocentric_Parameters returns the ellipsoid parameters
+ * to be used in geocentric coordinate conversions.
+ *
+ *    a  : Semi-major axis, in meters.          (output)
+ *    b  : Semi-minor axis, in meters.          (output)
+ *)
+
+
+function pj_Convert_Geodetic_To_Geocentric(var gi: GeocentricInfo; Latitude, Longitude, Height: cdouble;
+  var X, Y, Z: cdouble): clong; cdecl; external;
+
+(*
+ * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
+ * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
+ * according to the current ellipsoid parameters.
+ *
+ *    Latitude  : Geodetic latitude in radians                     (input)
+ *    Longitude : Geodetic longitude in radians                    (input)
+ *    Height    : Geodetic height, in meters                       (input)
+ *    X         : Calculated Geocentric X coordinate, in meters.   (output)
+ *    Y         : Calculated Geocentric Y coordinate, in meters.   (output)
+ *    Z         : Calculated Geocentric Z coordinate, in meters.   (output)
+ *
+ *)
+
+
+procedure pj_Convert_Geocentric_To_Geodetic(var gi: GeocentricInfo; X, Y, Z: cdouble;
+  var Latitude, Longitude, Height: cdouble); cdecl; external;
+
+(*
+ * The function Convert_Geocentric_To_Geodetic converts geocentric
+ * coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude,
+ * and height), according to the current ellipsoid parameters.
+ *
+ *    X         : Geocentric X coordinate, in meters.         (input)
+ *    Y         : Geocentric Y coordinate, in meters.         (input)
+ *    Z         : Geocentric Z coordinate, in meters.         (input)
+ *    Latitude  : Calculated latitude value in radians.       (output)
+ *    Longitude : Calculated longitude value in radians.      (output)
+ *    Height    : Calculated height value, in meters.         (output)
+ *)
+
+implementation
 
 end.