[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master ff5435e 22/22: [graph/x11] Gray multiplication tricks.,
Werner Lemberg <=