[mapserver-commits] r11110 - trunk/mapserver

svn at osgeo.org svn at osgeo.org
Mon Mar 7 13:19:50 EST 2011


Author: warmerdam
Date: 2011-03-07 10:19:50 -0800 (Mon, 07 Mar 2011)
New Revision: 11110

Modified:
   trunk/mapserver/mapresample.c
Log:
msSourceSample() needs to take alpha into account in source weighting (#3715)

Modified: trunk/mapserver/mapresample.c
===================================================================
--- trunk/mapserver/mapresample.c	2011-03-07 17:36:31 UTC (rev 11109)
+++ trunk/mapserver/mapresample.c	2011-03-07 18:19:50 UTC (rev 11110)
@@ -275,20 +275,24 @@
     {
         assert(rb);
         if(rb->type == MS_BUFFER_GD) {
-        	assert(!gdImageTrueColor(rb->data.gd_img) );
+            assert(!gdImageTrueColor(rb->data.gd_img) );
             padfPixelSum[0] += (dfWeight * rb->data.gd_img->pixels[iSrcY][iSrcX]);
             *pdfWeightSum += dfWeight;
         } else if(rb->type == MS_BUFFER_BYTE_RGBA) {
-        	rgbaArrayObj *rgba = &(rb->data.rgba);
-        	int rb_off = iSrcX * rgba->pixel_step + iSrcY * rgba->row_step;
+            rgbaArrayObj *rgba = &(rb->data.rgba);
+            int rb_off = iSrcX * rgba->pixel_step + iSrcY * rgba->row_step;
 
-			if( rgba->a == NULL || rgba->a[rb_off] > 1 )
-			{
-				padfPixelSum[0] += rgba->r[rb_off] * dfWeight;
-				padfPixelSum[1] += rgba->g[rb_off] * dfWeight;
-				padfPixelSum[2] += rgba->b[rb_off] * dfWeight;
-				*pdfWeightSum += dfWeight; /* should we be using src alpha? */
-			}
+            if( rgba->a == NULL || rgba->a[rb_off] > 1 )
+            {
+                padfPixelSum[0] += rgba->r[rb_off] * dfWeight;
+                padfPixelSum[1] += rgba->g[rb_off] * dfWeight;
+                padfPixelSum[2] += rgba->b[rb_off] * dfWeight;
+                
+                if( rgba->a == NULL )
+                    *pdfWeightSum += dfWeight;
+                else
+                    *pdfWeightSum += dfWeight * (rgba->a[rb_off] / 255.0);
+            }
         }
     }
     else if( MS_RENDERER_RAWDATA(psSrcImage->format) )



More information about the mapserver-commits mailing list