fix smooth scaler to not round down incorrectly.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 1 Dec 2010 09:46:26 +0000 (09:46 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 1 Dec 2010 09:46:26 +0000 (09:46 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@55114 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/engines/common/evas_scale_smooth_scaler_downx.c
src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
src/lib/engines/common/evas_scale_smooth_scaler_downy.c

index f413b22..466135f 100644 (file)
                            g += ((gg - g) * yap) >> 8;
                            b += ((bb - b) * yap) >> 8;
                         }
-                      *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
+                       *pbuf++ = ARGB_JOIN(((a + (1 << 3)) >> 4),
+                                           ((r + (1 << 3)) >> 4),
+                                           ((g + (1 << 3)) >> 4),
+                                           ((b + (1 << 3)) >> 4));
                       xp++;  xapp++;
                    }
 
                                 g += ((gg - g) * yap) >> 8;
                                 b += ((bb - b) * yap) >> 8;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                            *pbuf++ = ARGB_JOIN(0xff,
+                                                ((r + (1 << 3)) >> 4),
+                                                ((g + (1 << 3)) >> 4),
+                                                ((b + (1 << 3)) >> 4));
                            xp++;  xapp++;
                         }
                    }
                                 g += ((gg - g) * yap) >> 8;
                                 b += ((bb - b) * yap) >> 8;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                            *pbuf++ = ARGB_JOIN(0xff,
+                                                ((r + (1 << 3)) >> 4),
+                                                ((g + (1 << 3)) >> 4),
+                                                ((b + (1 << 3)) >> 4));
                            xp++;  xapp++;
                         }
 
index f830187..bfe47d7 100644 (file)
                            g += (gx * j) >> 14;
                            b += (bx * j) >> 14;
                         }
-                      *pbuf++ = ARGB_JOIN(a >> 5, r >> 5, g >> 5, b >> 5);
+                      *pbuf++ = ARGB_JOIN(((a + (1 << 4)) >> 5), 
+                                           ((r + (1 << 4)) >> 5), 
+                                           ((g + (1 << 4)) >> 5), 
+                                           ((b + (1 << 4)) >> 5));
                       xp++;  xapp++;
                    }
                  
                                 g += (gx * j) >> 14;
                                 b += (bx * j) >> 14;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 5, g >> 5, b >> 5);
+                            *pbuf++ = ARGB_JOIN(0xff, 
+                                                ((r + (1 << 4)) >> 5), 
+                                                ((g + (1 << 4)) >> 5), 
+                                                ((b + (1 << 4)) >> 5));
                            xp++;  xapp++;
                         }
                    }
                                 g += (gx * j) >> 14;
                                 b += (bx * j) >> 14;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 5, g >> 5, b >> 5);
+                            *pbuf++ = ARGB_JOIN(0xff, 
+                                                ((r + (1 << 4)) >> 5), 
+                                                ((g + (1 << 4)) >> 5), 
+                                                ((b + (1 << 4)) >> 5));
                            xp++;  xapp++;
                         }
                       
index 89cc883..a6cf34c 100644 (file)
                            g += ((gg - g) * xap) >> 8;
                            b += ((bb - b) * xap) >> 8;
                         }
-                      *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
+                       *pbuf++ = ARGB_JOIN(((a + (1 << 3)) >> 4),
+                                           ((r + (1 << 3)) >> 4),
+                                           ((g + (1 << 3)) >> 4),
+                                           ((b + (1 << 3)) >> 4));
                       xp++;  xapp++;
                    }
 
                                 g += ((gg - g) * xap) >> 8;
                                 b += ((bb - b) * xap) >> 8;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                            *pbuf++ = ARGB_JOIN(0xff,
+                                                ((r + (1 << 3)) >> 4),
+                                                ((g + (1 << 3)) >> 4),
+                                                ((b + (1 << 3)) >> 4));
                            xp++;  xapp++;
                         }
                    }
                                 g += ((gg - g) * xap) >> 8;
                                 b += ((bb - b) * xap) >> 8;
                              }
-                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                            *pbuf++ = ARGB_JOIN(0xff,
+                                                ((r + (1 << 3)) >> 4),
+                                                ((g + (1 << 3)) >> 4),
+                                                ((b + (1 << 3)) >> 4));
                            xp++;  xapp++;
                         }