[postgis-commits] svn - r3655 - spike/wktraster/rt_pg

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Fri Feb 6 00:46:13 PST 2009


Author: strk
Date: 2009-02-06 00:46:13 -0800 (Fri, 06 Feb 2009)
New Revision: 3655

Modified:
   spike/wktraster/rt_pg/rt_pg.c
Log:
cleanup warnings in pgsql connector

Modified: spike/wktraster/rt_pg/rt_pg.c
===================================================================
--- spike/wktraster/rt_pg/rt_pg.c	2009-02-06 08:39:37 UTC (rev 3654)
+++ spike/wktraster/rt_pg/rt_pg.c	2009-02-06 08:46:13 UTC (rev 3655)
@@ -55,16 +55,9 @@
 
 /* Internal funcs */
 static rt_context get_rt_context(FunctionCallInfoData *fcinfo);
-static void swap_char(unsigned char *a, unsigned char *b);
-static void flip_endian_16(unsigned char *d);
-static void flip_endian_32(unsigned char *d);
-static void flip_endian_64(unsigned char *i);
 static void *rt_pgalloc(size_t size);
 static void *rt_pgrealloc(void *mem, size_t size);
 static void rt_pgfree(void *mem);
-static rt_pgraster* rt_pgraster_from_hexwkb(char* hexwkb);
-static rt_raster rt_pgraster_deserialize(rt_context ctx,
-                                         rt_pgraster *pgraster);
 
 
 /* Prototypes */
@@ -199,38 +192,6 @@
     return ctx;
 }
 
-static void
-swap_char(unsigned char *a, unsigned char *b)
-{
-        unsigned char c;
-
-        c = *a;
-        *a=*b;
-        *b=c;
-}
-
-static void
-flip_endian_16(unsigned char *d)
-{
-        swap_char(d, d+1);
-}
-
-static void
-flip_endian_32(unsigned char *d)
-{
-        swap_char(d, d+3);
-        swap_char(d+1, d+2);
-}
-
-static void
-flip_endian_64(unsigned char *d)
-{
-        swap_char(d+7, d);
-        swap_char(d+6, d+1);
-        swap_char(d+5, d+2);
-        swap_char(d+4, d+3);
-}
-
 /*
  * Input is a string with hex chars in it. 
  * Convert to binary and put in the result
@@ -238,14 +199,10 @@
 PG_FUNCTION_INFO_V1(RASTER_in);
 Datum RASTER_in(PG_FUNCTION_ARGS)
 {
-    uint8_t* wkb;
-    uint32_t wkbsize;
-    uint32_t hexwkbsize;
     rt_raster raster;
     char *hexwkb = PG_GETARG_CSTRING(0);
     void *result;
     rt_context ctx = get_rt_context(fcinfo);
-    uint32_t i;
 
     raster = rt_raster_from_hexwkb(ctx, hexwkb, strlen(hexwkb));
     result = rt_raster_serialize(ctx, raster);
@@ -262,7 +219,6 @@
 {
     rt_pgraster *pgraster = (rt_pgraster *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
     rt_raster raster;
-    uint8_t* wkb;
     uint32_t hexwkbsize;
     char *hexwkb;
     rt_context ctx = get_rt_context(fcinfo);
@@ -287,154 +243,6 @@
     PG_RETURN_CSTRING(hexwkb);
 }
 
-static rt_raster
-rt_pgraster_deserialize(rt_context ctx, rt_pgraster *pgraster)
-{
-    rt_raster raster;
-    uint16_t i;
-    unsigned char *ptr, *firstBandPtr;
-
-    raster = rt_raster_new(ctx, pgraster->width,
-            pgraster->height);
-    if ( ! raster ) {
-        lwerror("Could not create raster "
-                "during deserialization of rt_pgraster");
-        return 0;
-    }
-
-    rt_raster_set_pixel_sizes(ctx, raster, pgraster->scaleX, pgraster->scaleY);
-    rt_raster_set_offsets(ctx, raster, pgraster->ipX, pgraster->ipY);
-    rt_raster_set_rotations(ctx, raster, pgraster->skewX, pgraster->skewY);
-    rt_raster_set_srid(ctx, raster, pgraster->srid);
-
-    assert(sizeof(rt_pgraster) == 64);
-    firstBandPtr = ptr = (uint8_t*)pgraster + sizeof(rt_pgraster);
-
-    for (i=0; i<pgraster->numBands; ++i)
-    {
-        rt_pgband* pgband;
-        rt_band band;
-        rt_pixtype pixtype;
-        uint8_t* data;
-        size_t pixbytes;
-        double nodata;
-
-        /*
-         * this cast is only safe if ptr is aligned to sizeof(rt_pgband)
-         * bytes. Since rt_pgband size is 2 bytes, we need rt_pgraster's
-         * data member to be aligned there, plus any band be padded 
-         * as much as required so that next rt_pgband is aligned too
-         *
-         */
-        pgband = (rt_pgband*)ptr;
-
-        pixtype = pgband->pixtype;
-        lwnotice("Pixtype of band %d is %s", i, rt_pixtype_name(ctx, pixtype));
-
-        switch (pixtype)
-        {
-            case PT_1BB:
-                data = ((rt_pgband8*)pgband)->data;
-                nodata = (*(int8_t*)data) & 0x01;
-                pixbytes = 1; data += pixbytes;
-                break;
-
-            case PT_2BUI:
-                data = ((rt_pgband8*)pgband)->data;
-                nodata = (*(int8_t*)data) & 0x03;
-                pixbytes = 1; data += pixbytes;
-                break;
-
-            case PT_4BUI:
-                data = ((rt_pgband8*)pgband)->data;
-                nodata = (*(int8_t*)data) & 0x0F;
-                pixbytes = 1; data += pixbytes;
-                break;
-
-            case PT_8BSI:
-                data = ((rt_pgband8*)pgband)->data;
-                nodata = *(int8_t*)data;
-                pixbytes = 1; data += pixbytes;
-                break;
-
-            case PT_8BUI:
-                data = ((rt_pgband8*)pgband)->data;
-                nodata = *(uint8_t*)data;
-                pixbytes = 1; data += pixbytes;
-                break;
-
-            case PT_16BSI:
-                data = ((rt_pgband16*)pgband)->data;
-                nodata = *(int16_t*)data;
-                pixbytes = 2; data += pixbytes;
-                break;
-
-            case PT_16BUI:
-                data = ((rt_pgband16*)pgband)->data;
-                nodata = *(uint16_t*)data;
-                pixbytes = 2; data += pixbytes;
-                break;
-
-            case PT_16BF:
-                data = ((rt_pgband16*)pgband)->data;
-                abort(); // FIXME: implement reading 16BF!
-                nodata = *(int16_t*)data;
-                pixbytes = 2; data += pixbytes;
-                break;
-
-            case PT_32BSI:
-                data = ((rt_pgband32*)pgband)->data;
-                nodata = *(int32_t*)data;
-                pixbytes = 4; data += pixbytes;
-                break;
-
-            case PT_32BUI:
-                data = ((rt_pgband32*)pgband)->data;
-                nodata = *(uint32_t*)data;
-                pixbytes = 4; data += pixbytes;
-                break;
-
-            case PT_32BF:
-                data = ((rt_pgband32*)pgband)->data;
-                nodata = *(float*)data;
-                pixbytes = 4; data += pixbytes;
-                break;
-
-            case PT_64BF:
-                data = ((rt_pgband64*)pgband)->data;
-                nodata = *(double*)data;
-                pixbytes = 8; data += pixbytes;
-                break;
-
-            default:
-                lwerror("Unknown pixtype at %s:%d", __FILE__, __LINE__);
-                return 0;
-                break;
-        }
-
-        band = rt_band_new_inline(ctx, pgraster->width, pgraster->height,
-                                  pixtype, nodata, data);
-        if ( ! band ) {
-            lwerror("Could not create band "
-                "during deserialization of rt_pgraster");
-            return 0;
-        }
-
-        /* This one currently reallocs */
-        rt_raster_add_band(ctx, raster, band);
-
-        /* Add total size of raster data */
-        ptr = data + pgraster->width*pgraster->height*pixbytes;
-
-        /* pad to reach next 8-bytes boundary */
-        ptr +=  8 - ((ptr - firstBandPtr)%8);
-
-    }
-    
-
-    return raster;
-}
-
 /* ---------------------------------------------------------------- */
 /*  Memory allocation / error reporting hooks                       */
 /* ---------------------------------------------------------------- */



More information about the postgis-commits mailing list