Hamish wrote:

> I am trying to add this as "g.region -n" now, some questions:
> 
> 1) local_proto.h: what's next in this series:
> #define PRINT_REG    0x01
> #define PRINT_SH     0x02
> #define PRINT_LL     0x04
> #define PRINT_EXTENT 0x08
> #define PRINT_CENTER 0x10
> #define PRINT_METERS 0x20
> #define PRINT_3D     0x40
> #define PRINT_MBBOX  0x80
> 
> #define PRINT_NANGLE 0x ???

#define PRINT_NANGLE 0x100

> 2) #include <projects.h> to get LP, FACTOR, and pj_factors() ?

Yes.

> 3) The compiler complains that arg 2 of pj_factors(, oproj.pj,) is of
> an incompatible pointer type. If I make it *oproj.pj it doesn't complain
> but the output fact.conv is always 0.00000.

This is a bug in GRASS' gprojects.h. It uses projPJ* where it should
use projPJ. projPJ is already a pointer:

        #if !defined(PROJECTS_H)
            ...
            typedef void *projPJ;
            ...
        #else
            ...
            typedef PJ *projPJ;
            ...
        #endif

I've applied this in 7.0:

        --- include/gprojects.h (revision 33947)
        +++ include/gprojects.h (working copy)
        @@ -32,7 +32,7 @@
         
         struct pj_info
         {
        -    projPJ *pj;
        +    projPJ pj;
             double meters;
             int zone;
             char proj[100];

It doesn't result in a warning in GRASS because PROJECTS_H isn't
defined, so the void* version is used, and implicit casts to/from
void* never generate a warning.

Your code should be using oproj.pj, not *oproj.pj.

-- 
Glynn Clements <[EMAIL PROTECTED]>
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to