[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 9f86444: [ftinspect] Support gray level scaling
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] master 9f86444: [ftinspect] Support gray level scaling. |
Date: |
Wed, 15 Mar 2023 00:59:21 -0400 (EDT) |
branch: master
commit 9f864441089971c002790314c724501357980c52
Author: Charlie Jiang <w@chariri.moe>
Commit: Werner Lemberg <wl@gnu.org>
[ftinspect] Support gray level scaling.
See commit 746d5be5: Convert to 256 grays. Slightly tweaked code style.
* src/ftinspect/engine/rendering.cpp (RenderingEngine::convertBitmapTo8Bpp):
Implement it.
---
src/ftinspect/engine/rendering.cpp | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/ftinspect/engine/rendering.cpp
b/src/ftinspect/engine/rendering.cpp
index 524f0a5..1c14dea 100644
--- a/src/ftinspect/engine/rendering.cpp
+++ b/src/ftinspect/engine/rendering.cpp
@@ -143,6 +143,26 @@ RenderingEngine::convertBitmapTo8Bpp(FT_Bitmap* bitmap)
{
// XXX handling?
}
+
+ if (out.num_grays == 256)
+ return out;
+
+ // Also scale gray values.
+ 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] master 9f86444: [ftinspect] Support gray level scaling.,
Werner Lemberg <=