From 5f5c9ba6810071bc7bb369afd2aac99064177ce7 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Thu, 11 Mar 2010 12:23:32 +0100 Subject: Fix 1-bit to 8-bit conversion for bitmap fonts on QWS QImage doesn't know that we are abusing Format_Indexed8 as an alpha map. The proper solution is to add new image formats. This is just a quick fix. Task-number: QTBUG-5936 Reviewed-by: Jeremy --- src/gui/text/qfontengine_qpf.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp index 136737d..a0593cc 100644 --- a/src/gui/text/qfontengine_qpf.cpp +++ b/src/gui/text/qfontengine_qpf.cpp @@ -920,8 +920,18 @@ void QFontEngineQPF::loadGlyph(glyph_t glyph) if (!renderingFontEngine) return; - - QImage img = renderingFontEngine->alphaMapForGlyph(glyph).convertToFormat(QImage::Format_Indexed8); + QImage img = renderingFontEngine->alphaMapForGlyph(glyph); + if (img.format() != QImage::Format_Indexed8) { + bool mono = img.depth() == 1; + img = img.convertToFormat(QImage::Format_Indexed8); + if (mono) { + //### we know that 1 is opaque and 0 is transparent + uchar *byte = img.bits(); + int count = img.byteCount(); + while (count--) + *byte++ *= 0xff; + } + } glyph_metrics_t metrics = renderingFontEngine->boundingBox(glyph); renderingFontEngine->removeGlyphFromCache(glyph); -- cgit v0.12