freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 850cb19 1/2: * graph/gblbgra.h: Make it wotk fo


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 850cb19 1/2: * graph/gblbgra.h: Make it wotk for all destination targets.
Date: Mon, 21 May 2018 23:04:50 -0400 (EDT)

branch: master
commit 850cb199d5a23e5171f110d5cc67c7a90c7d503b
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>

    * graph/gblbgra.h: Make it wotk for all destination targets.
---
 ChangeLog       |  4 ++++
 graph/gblany.h  |  2 --
 graph/gblbgra.h | 39 ++++++++++++++++++++-------------------
 3 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index fe64aef..4a50165 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-05-21  Alexei Podtelezhnikov  <address@hidden>
+
+       * graph/gblbgra.h: Make it wotk for all destination targets.
+
 2018-05-19  Alexei Podtelezhnikov  <address@hidden>
 
        [graph] Fast "powerless" gamma ramps.
diff --git a/graph/gblany.h b/graph/gblany.h
index 0e4173a..21a1721 100644
--- a/graph/gblany.h
+++ b/graph/gblany.h
@@ -119,8 +119,6 @@ static void
 GCONCAT( _gblender_blit_bgra_, GDST_TYPE )( GBlenderBlit   blit,
                                             GBlenderPixel  color )
 {
-  GBlender  blender = blit->blender;
-
   (void)color; /* unused */
 
 #include "gblbgra.h"
diff --git a/graph/gblbgra.h b/graph/gblbgra.h
index 1cdb1ea..c7a60b6 100644
--- a/graph/gblbgra.h
+++ b/graph/gblbgra.h
@@ -3,8 +3,6 @@
   const unsigned char*  src_line = blit->src_line;
   unsigned char*        dst_line = blit->dst_line;
 
-  gblender_use_channels( blender, 0 );
-
   do
   {
     const unsigned char*  src = src_line + blit->src_x * 4;
@@ -13,12 +11,10 @@
 
     do
     {
-      unsigned int  a  = GBLENDER_SHADE_INDEX(src[3]);
-      unsigned int  ra = src[3];
-
-      unsigned int  b = src[0];
-      unsigned int  g = src[1];
-      unsigned int  r = src[2];
+      unsigned int  pix_b = src[0];
+      unsigned int  pix_g = src[1];
+      unsigned int  pix_r = src[2];
+      unsigned int  a = src[3];
 
 
       if ( a == 0 )
@@ -27,21 +23,27 @@
       }
       else if ( a == 255 )
       {
-        dst[0] = (unsigned char)r;
-        dst[1] = (unsigned char)g;
-        dst[2] = (unsigned char)b;
+        GDST_STOREC(dst,pix_r,pix_g,pix_b);
       }
       else
       {
-        unsigned int  ba = 255 - ra;
-        unsigned int  br = dst[0];
-        unsigned int  bb = dst[1];
-        unsigned int  bg = dst[2];
+        GBlenderPixel  back;
+
+        GDST_READ(dst,back);
 
+        {
+          unsigned int  ba = 255 - a;
+          unsigned int  back_r = (back >> 16) & 255;
+          unsigned int  back_g = (back >> 8) & 255;
+          unsigned int  back_b = (back) & 255;
 
-        dst[0] = (unsigned char)(br * ba / 255 + r);
-        dst[1] = (unsigned char)(bg * ba / 255 + g);
-        dst[2] = (unsigned char)(bb * ba / 255 + b);
+
+          pix_r = (back_r * ba / 255 + pix_r);
+          pix_g = (back_g * ba / 255 + pix_g);
+          pix_b = (back_b * ba / 255 + pix_b);
+        }
+
+        GDST_STOREC(dst,pix_r,pix_g,pix_b);
       }
 
       src += 4;
@@ -53,4 +55,3 @@
     dst_line += blit->dst_pitch;
 
   } while ( --h > 0 );
-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]