sw_engine raster: code refactoring
[platform/core/graphics/tizenvg.git] / src / lib / sw_engine / tvgSwRasterC.h
index b634edf..9b46361 100644 (file)
  */
 
 
-static inline void cRasterRGBA32(uint32_t *dst, uint32_t val, uint32_t offset, int32_t len)
+static void cRasterRGBA32(uint32_t *dst, uint32_t val, uint32_t offset, int32_t len)
 {
     dst += offset;
     while (len--) *dst++ = val;
 }
 
 
-static inline bool cRasterTranslucentRle(SwSurface* surface, const SwRleData* rle, uint32_t color)
+static bool cRasterTranslucentRle(SwSurface* surface, const SwRleData* rle, uint32_t color)
 {
     auto span = rle->spans;
     uint32_t src;
 
-    for (uint32_t i = 0; i < rle->size; ++i) {
+    for (uint32_t i = 0; i < rle->size; ++i, ++span) {
         auto dst = &surface->buffer[span->y * surface->stride + span->x];
 
         if (span->coverage < 255) src = ALPHA_BLEND(color, span->coverage);
         else src = color;
 
-        auto ialpha = 255 - surface->blender.alpha(src);
-
-        for (uint32_t x = 0; x < span->len; ++x)
-            dst[x] = src + ALPHA_BLEND(dst[x], ialpha);
-
-        ++span;
+        for (uint32_t x = 0; x < span->len; ++x, ++dst) {
+            *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src));
+        }
     }
     return true;
 }
 
-static inline bool cRasterTranslucentRect(SwSurface* surface, const SwBBox& region, uint32_t color)
+
+static bool cRasterTranslucentRect(SwSurface* surface, const SwBBox& region, uint32_t color)
 {
     auto buffer = surface->buffer + (region.min.y * surface->stride) + region.min.x;
     auto h = static_cast<uint32_t>(region.max.y - region.min.y);
     auto w = static_cast<uint32_t>(region.max.x - region.min.x);
-    auto ialpha = 255 - surface->blender.alpha(color);
+    auto ialpha = surface->blender.ialpha(color);
 
     for (uint32_t y = 0; y < h; ++y) {
         auto dst = &buffer[y * surface->stride];
-        for (uint32_t x = 0; x < w; ++x) {
-            dst[x] = color + ALPHA_BLEND(dst[x], ialpha);
+        for (uint32_t x = 0; x < w; ++x, ++dst) {
+            *dst = color + ALPHA_BLEND(*dst, ialpha);
         }
     }
     return true;