freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] master ff5435e 22/22: [graph/x11] Gray multiplication


From: Werner Lemberg
Subject: [freetype2-demos] master ff5435e 22/22: [graph/x11] Gray multiplication tricks.
Date: Fri, 5 Mar 2021 11:18:41 -0500 (EST)

branch: master
commit ff5435e44b93dd191c2de43f7596f49cdaa19a9a
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    [graph/x11] Gray multiplication tricks.
    
    * graph/x11/grx11.c (gr_x11_convert_gray_to_rgb{555,565,0888,8880}):
    Combine multiple shifts into multiplication.
---
 ChangeLog         |  7 +++++++
 graph/x11/grx11.c | 32 +++++---------------------------
 2 files changed, 12 insertions(+), 27 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 74594ee..5576140 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2021-02-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [graph/x11] Gray multiplication tricks.
+
+       * graph/x11/grx11.c (gr_x11_convert_gray_to_rgb{555,565,0888,8880}):
+       Combine multiple shifts into multiplication.
+
 2021-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
 
        [ftdiff] Make it agnostic to display mode.
diff --git a/graph/x11/grx11.c b/graph/x11/grx11.c
index 2648d98..6989226 100644
--- a/graph/x11/grx11.c
+++ b/graph/x11/grx11.c
@@ -257,9 +257,8 @@
         unsigned int  p = lread[0];
 
 
-        lwrite[0] = (unsigned short)( ( ( p << 8 ) & 0xF800U ) |
-                                      ( ( p << 3 ) & 0x07E0  ) |
-                                      ( ( p >> 3 ) & 0x001F  ) );
+        lwrite[0] = (unsigned short)( ( ( p >> 3 ) * 0x0801U ) |
+                                      ( ( p >> 2 ) * 0x0020U ) );
       }
 
       line_read  += blit->src_pitch;
@@ -382,14 +381,7 @@
 
 
       for ( ; x > 0; x--, lread++, lwrite++ )
-      {
-        unsigned int  p = lread[0];
-
-
-        lwrite[0] = (unsigned short)( ( ( p << 7 ) & 0x7C00 ) |
-                                      ( ( p << 2 ) & 0x03E0 ) |
-                                      ( ( p >> 3 ) & 0x001F ) );
-      }
+        *lwrite = (unsigned short)( ( *lread >> 3 ) * 0x0421U );
 
       line_read  += blit->src_pitch;
       line_write += blit->dst_pitch;
@@ -619,14 +611,7 @@
 
 
       for ( ; x > 0; x--, lread++, lwrite++ )
-      {
-        uint32_t  p = lread[0];
-
-
-        *lwrite = ( p << 24 ) |
-                  ( p << 16 ) |
-                  ( p <<  8 );
-      }
+        *lwrite = *lread * 0x01010100U;
 
       line_read  += blit->src_pitch;
       line_write += blit->dst_pitch;
@@ -699,14 +684,7 @@
 
 
       for ( ; x > 0; x--, lread++, lwrite++ )
-      {
-        uint32_t  p = lread[0];
-
-
-        *lwrite = ( p << 16 ) |
-                  ( p <<  8 ) |
-                  ( p <<  0 );
-      }
+        *lwrite = *lread * 0x010101U;
 
       line_read  += blit->src_pitch;
       line_write += blit->dst_pitch;



reply via email to

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