freetype-commit
[Top][All Lists]
Advanced

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

[freetype2-demos] ftinspect-grayscale 10fefaa5 2/2: * src/ftinspect/engi


From: Werner Lemberg
Subject: [freetype2-demos] ftinspect-grayscale 10fefaa5 2/2: * src/ftinspect/engine/rendering.cpp: Support gray level scaling.
Date: Thu, 2 Mar 2023 12:34:08 -0500 (EST)

branch: ftinspect-grayscale
commit 10fefaa522a538340673c29594cc7d5e502d0835
Author: Charlie Jiang <w@chariri.moe>
Commit: Charlie Jiang <w@chariri.moe>

    * src/ftinspect/engine/rendering.cpp: Support gray level scaling.
    
    See 746d5be5: Convert to 256 grays.
---
 src/ftinspect/engine/rendering.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/ftinspect/engine/rendering.cpp 
b/src/ftinspect/engine/rendering.cpp
index 0b3db536..23a529aa 100644
--- a/src/ftinspect/engine/rendering.cpp
+++ b/src/ftinspect/engine/rendering.cpp
@@ -144,6 +144,23 @@ RenderingEngine::convertBitmapTo8Bpp(FT_Bitmap* bitmap)
   {
     // XXX handling?
   }
+
+  // Scale gray values, too.
+  auto buf = reinterpret_cast<uint32_t*>(out.buffer);
+  uint32_t scale = 255U / (out.num_grays - 1);
+
+  // Four bytes at a time.
+  unsigned i = 0;
+  unsigned size = std::abs(out.pitch) * out.rows;
+  for (; i <= size - 4; i += 4, buf++)
+    *buf *= scale;
+
+  // The remaining bytes.
+  for (; i < size; i++ )
+    out.buffer[i] *= scale;
+
+  out.num_grays = 256;
+
   return out;
 }
 



reply via email to

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