[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