[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;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] ftinspect-grayscale 10fefaa5 2/2: * src/ftinspect/engine/rendering.cpp: Support gray level scaling.,
Werner Lemberg <=