[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