Pārlūkot izejas kodu

Fix drawing transparent cells over opaque cells
(cairo uses pre-multiplied alpha)


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@40501 15284696-431f-4ddb-bdfa-cd5b030d7da7

Glynn Clements 15 gadi atpakaļ
vecāks
revīzija
314d2a35bf
1 mainītis faili ar 10 papildinājumiem un 7 dzēšanām
  1. 10 7
      lib/cairodriver/Raster.c

+ 10 - 7
lib/cairodriver/Raster.c

@@ -91,13 +91,16 @@ int Cairo_raster(int n, int row,
     G_debug(3, "Cairo_raster: %d %d", n, row);
 
     for (i = 0; i < n; i++) {
-	unsigned int r = red[i];
-	unsigned int g = grn[i];
-	unsigned int b = blu[i];
-	unsigned int a = (masked && nul && nul[i])
-	    ? 0x00 : 0xFF;
-
-	*dst++ = (a << 24) + (r << 16) + (g << 8) + (b << 0);
+	if (masked && nul && nul[i])
+	    *dst++ = 0;
+	else {
+	    unsigned int r = red[i];
+	    unsigned int g = grn[i];
+	    unsigned int b = blu[i];
+	    unsigned int a = 0xFF;
+
+	    *dst++ = (a << 24) + (r << 16) + (g << 8) + (b << 0);
+	}
     }
 
     return row + 1;