Move glyphMargin() to QFontEngine
glyphMargin() support for QTextureGlyphCache is implemented in respective font engines, thus this function is platform dependent. Before Qt 5 the code is guarded in macros like #ifdef Q_WS_MAC, now we should move them into QFontEngine and its subclasses. So far only Windows font engines support it. FreeType and Core Text based font engines all ignore it. Change-Id: Ia14016533d8fbfaacf848a7d3bc928f8197318f5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>bb10
parent
601d685849
commit
af48e0ba36
|
|
@ -1581,7 +1581,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type
|
|||
|
||||
transferMode(TextDrawingMode);
|
||||
|
||||
int margin = cache->glyphMargin();
|
||||
int margin = fe->glyphMargin(glyphType);
|
||||
|
||||
GLfloat dx = 1.0 / cache->width();
|
||||
GLfloat dy = 1.0 / cache->height();
|
||||
|
|
|
|||
|
|
@ -2747,7 +2747,7 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs,
|
|||
else if (depth == 1)
|
||||
rightShift = 3; // divide by 8
|
||||
|
||||
int margin = cache->glyphMargin();
|
||||
int margin = fontEngine->glyphMargin(glyphType);
|
||||
const QFixed offs = QFixed::fromReal(aliasedCoordinateDelta);
|
||||
const uchar *bits = image.bits();
|
||||
for (int i=0; i<numGlyphs; ++i) {
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
|
|||
#endif
|
||||
|
||||
m_current_fontengine = fontEngine;
|
||||
const int margin = glyphMargin();
|
||||
const int margin = m_current_fontengine->glyphMargin(m_type);
|
||||
const int paddingDoubled = glyphPadding() * 2;
|
||||
|
||||
bool supportsSubPixelPositions = fontEngine->supportsSubPixelPositions();
|
||||
|
|
@ -274,7 +274,7 @@ void QTextureGlyphCache::fillInPendingGlyphs()
|
|||
QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition) const
|
||||
{
|
||||
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
|
||||
return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform);
|
||||
return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, m_transform);
|
||||
else
|
||||
return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform);
|
||||
|
||||
|
|
@ -311,11 +311,6 @@ void QImageTextureGlyphCache::createTextureData(int width, int height)
|
|||
}
|
||||
}
|
||||
|
||||
int QImageTextureGlyphCache::glyphMargin() const
|
||||
{
|
||||
return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
|
||||
}
|
||||
|
||||
void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subPixelPosition)
|
||||
{
|
||||
QImage mask = textureMapForGlyph(g, subPixelPosition);
|
||||
|
|
@ -400,7 +395,8 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subP
|
|||
#ifdef CACHE_DEBUG
|
||||
// QPainter p(&m_image);
|
||||
// p.drawLine(
|
||||
QPoint base(c.x + glyphMargin(), c.y + glyphMargin() + c.baseLineY-1);
|
||||
int margin = m_current_fontengine ? m_current_fontengine->glyphMargin(m_type) : 0;
|
||||
QPoint base(c.x + margin, c.y + margin + c.baseLineY-1);
|
||||
if (m_image.rect().contains(base))
|
||||
m_image.setPixel(base, 255);
|
||||
m_image.save(QString::fromLatin1("cache-%1.png").arg(qint64(this)));
|
||||
|
|
|
|||
|
|
@ -120,7 +120,6 @@ public:
|
|||
|
||||
virtual void createTextureData(int width, int height) = 0;
|
||||
virtual void resizeTextureData(int width, int height) = 0;
|
||||
virtual int glyphMargin() const { return 0; }
|
||||
virtual int glyphPadding() const { return 0; }
|
||||
|
||||
virtual void fillTexture(const Coord &coord, glyph_t glyph, QFixed subPixelPosition) = 0;
|
||||
|
|
@ -170,7 +169,6 @@ class Q_GUI_EXPORT QImageTextureGlyphCache : public QTextureGlyphCache
|
|||
public:
|
||||
QImageTextureGlyphCache(QFontEngineGlyphCache::Type type, const QTransform &matrix)
|
||||
: QTextureGlyphCache(type, matrix) { }
|
||||
virtual int glyphMargin() const;
|
||||
virtual void createTextureData(int width, int height);
|
||||
virtual void resizeTextureData(int width, int height);
|
||||
virtual void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition);
|
||||
|
|
|
|||
|
|
@ -618,7 +618,7 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, con
|
|||
return i;
|
||||
}
|
||||
|
||||
QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, int /* margin */, const QTransform &t)
|
||||
QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, const QTransform &t)
|
||||
{
|
||||
QImage alphaMask = alphaMapForGlyph(glyph, t);
|
||||
QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
|
||||
|
|
@ -664,7 +664,7 @@ QImage *QFontEngine::lockedAlphaMapForGlyph(glyph_t glyph, QFixed subPixelPositi
|
|||
if (neededFormat != Format_A32)
|
||||
currentlyLockedAlphaMap = alphaMapForGlyph(glyph, subPixelPosition, t);
|
||||
else
|
||||
currentlyLockedAlphaMap = alphaRGBMapForGlyph(glyph, subPixelPosition, 0, t);
|
||||
currentlyLockedAlphaMap = alphaRGBMapForGlyph(glyph, subPixelPosition, t);
|
||||
|
||||
if (offset != 0)
|
||||
*offset = QPoint(0, 0);
|
||||
|
|
@ -1747,11 +1747,11 @@ QImage QFontEngineMulti::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition
|
|||
return engine(which)->alphaMapForGlyph(stripped(glyph), subPixelPosition, t);
|
||||
}
|
||||
|
||||
QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, const QTransform &t)
|
||||
QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t)
|
||||
{
|
||||
const int which = highByte(glyph);
|
||||
Q_ASSERT(which < engines.size());
|
||||
return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, margin, t);
|
||||
return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, t);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -1896,17 +1896,17 @@ QImage QFontEngineFT::alphaMapForGlyph(glyph_t g, QFixed subPixelPosition)
|
|||
return img;
|
||||
}
|
||||
|
||||
QImage QFontEngineFT::alphaRGBMapForGlyph(glyph_t g, QFixed subPixelPosition, int margin, const QTransform &t)
|
||||
QImage QFontEngineFT::alphaRGBMapForGlyph(glyph_t g, QFixed subPixelPosition, const QTransform &t)
|
||||
{
|
||||
if (t.type() > QTransform::TxTranslate)
|
||||
return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, margin, t);
|
||||
return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, t);
|
||||
|
||||
lockFace();
|
||||
|
||||
Glyph *glyph = loadGlyphFor(g, subPixelPosition, Format_A32);
|
||||
if (!glyph) {
|
||||
unlockFace();
|
||||
return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, margin, t);
|
||||
return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, t);
|
||||
}
|
||||
|
||||
QImage img(glyph->width, glyph->height, QImage::Format_RGB32);
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ private:
|
|||
virtual void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
|
||||
virtual QImage alphaMapForGlyph(glyph_t g) { return alphaMapForGlyph(g, 0); }
|
||||
virtual QImage alphaMapForGlyph(glyph_t, QFixed);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph,
|
||||
QFixed subPixelPosition,
|
||||
const QTransform &matrix,
|
||||
|
|
@ -267,6 +267,7 @@ private:
|
|||
virtual void unlockAlphaMapForGlyph();
|
||||
|
||||
virtual void removeGlyphFromCache(glyph_t glyph);
|
||||
virtual int glyphMargin(QFontEngineGlyphCache::Type type) { return 0; }
|
||||
|
||||
virtual int glyphCount() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ public:
|
|||
virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
|
||||
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
|
||||
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
virtual QImage *lockedAlphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition,
|
||||
GlyphFormat neededFormat,
|
||||
const QTransform &t = QTransform(),
|
||||
|
|
@ -231,6 +231,7 @@ public:
|
|||
virtual Type type() const = 0;
|
||||
|
||||
virtual int glyphCount() const;
|
||||
virtual int glyphMargin(QFontEngineGlyphCache::Type type) { return type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0; }
|
||||
|
||||
virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return 0; }
|
||||
|
||||
|
|
@ -370,7 +371,7 @@ public:
|
|||
virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
|
||||
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
|
||||
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
|
||||
virtual QFixed lineThickness() const;
|
||||
virtual QFixed underlinePosition() const;
|
||||
|
|
|
|||
|
|
@ -641,10 +641,11 @@ QImage QFontEngineDirectWrite::imageForGlyph(glyph_t t,
|
|||
|
||||
QImage QFontEngineDirectWrite::alphaRGBMapForGlyph(glyph_t t,
|
||||
QFixed subPixelPosition,
|
||||
int margin,
|
||||
const QTransform &xform)
|
||||
{
|
||||
QImage mask = imageForGlyph(t, subPixelPosition, margin, xform);
|
||||
QImage mask = imageForGlyph(t, subPixelPosition,
|
||||
glyphMargin(QFontEngineGlyphCache::Raster_RGBMask),
|
||||
xform);
|
||||
return mask.depth() == 32
|
||||
? mask
|
||||
: mask.convertToFormat(QImage::Format_RGB32);
|
||||
|
|
|
|||
|
|
@ -102,8 +102,7 @@ public:
|
|||
bool supportsSubPixelPositions() const;
|
||||
|
||||
QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin,
|
||||
const QTransform &xform);
|
||||
QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
|
||||
|
||||
QFontEngine *cloneWithSize(qreal pixelSize) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ QImage QRawFont::alphaMapForGlyph(quint32 glyphIndex, AntialiasingType antialias
|
|||
return QImage();
|
||||
|
||||
if (antialiasingType == SubPixelAntialiasing)
|
||||
return d->fontEngine->alphaRGBMapForGlyph(glyphIndex, QFixed(), 0, transform);
|
||||
return d->fontEngine->alphaRGBMapForGlyph(glyphIndex, QFixed(), transform);
|
||||
|
||||
return d->fontEngine->alphaMapForGlyph(glyphIndex, QFixed(), transform);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1569,11 +1569,12 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
|
|||
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
|
||||
bool recreateVertexArrays = false;
|
||||
|
||||
QFontEngine *fe = staticTextItem->fontEngine();
|
||||
QGLTextureGlyphCache *cache =
|
||||
(QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform());
|
||||
(QGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, QTransform());
|
||||
if (!cache || cache->cacheType() != glyphType || cache->contextGroup() == 0) {
|
||||
cache = new QGLTextureGlyphCache(glyphType, QTransform());
|
||||
staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache);
|
||||
fe->setGlyphCache(cacheKey, cache);
|
||||
recreateVertexArrays = true;
|
||||
}
|
||||
|
||||
|
|
@ -1597,11 +1598,11 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
|
|||
// cache so this text is performed before we test if the cache size has changed.
|
||||
if (recreateVertexArrays) {
|
||||
cache->setPaintEnginePrivate(this);
|
||||
if (!cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
|
||||
if (!cache->populate(fe, staticTextItem->numGlyphs,
|
||||
staticTextItem->glyphs, staticTextItem->glyphPositions)) {
|
||||
// No space for glyphs in cache. We need to reset it and try again.
|
||||
cache->clear();
|
||||
cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
|
||||
cache->populate(fe, staticTextItem->numGlyphs,
|
||||
staticTextItem->glyphs, staticTextItem->glyphPositions);
|
||||
}
|
||||
cache->fillInPendingGlyphs();
|
||||
|
|
@ -1612,7 +1613,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
|
|||
|
||||
transferMode(TextDrawingMode);
|
||||
|
||||
int margin = cache->glyphMargin();
|
||||
int margin = fe->glyphMargin(glyphType);
|
||||
|
||||
GLfloat dx = 1.0 / cache->width();
|
||||
GLfloat dy = 1.0 / cache->height();
|
||||
|
|
@ -1652,11 +1653,11 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
|
|||
vertexCoordinates->clear();
|
||||
textureCoordinates->clear();
|
||||
|
||||
bool supportsSubPixelPositions = staticTextItem->fontEngine()->supportsSubPixelPositions();
|
||||
bool supportsSubPixelPositions = fe->supportsSubPixelPositions();
|
||||
for (int i=0; i<staticTextItem->numGlyphs; ++i) {
|
||||
QFixed subPixelPosition;
|
||||
if (supportsSubPixelPositions)
|
||||
subPixelPosition = staticTextItem->fontEngine()->subPixelPositionForX(staticTextItem->glyphPositions[i].x);
|
||||
subPixelPosition = fe->subPixelPositionForX(staticTextItem->glyphPositions[i].x);
|
||||
|
||||
QTextureGlyphCache::GlyphAndSubPixelPosition glyph(staticTextItem->glyphs[i], subPixelPosition);
|
||||
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ void QCoreTextFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *position
|
|||
}
|
||||
}
|
||||
|
||||
QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition, int /*margin*/, bool aa)
|
||||
QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition, bool aa)
|
||||
{
|
||||
const glyph_metrics_t br = boundingBox(glyph);
|
||||
QImage im(qRound(br.width)+2, qRound(br.height)+2, QImage::Format_RGB32);
|
||||
|
|
@ -464,7 +464,7 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
|
|||
|
||||
QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition)
|
||||
{
|
||||
QImage im = imageForGlyph(glyph, subPixelPosition, 0, false);
|
||||
QImage im = imageForGlyph(glyph, subPixelPosition, false);
|
||||
|
||||
QImage indexed(im.width(), im.height(), QImage::Format_Indexed8);
|
||||
QVector<QRgb> colors(256);
|
||||
|
|
@ -485,12 +485,12 @@ QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosit
|
|||
return indexed;
|
||||
}
|
||||
|
||||
QImage QCoreTextFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, const QTransform &x)
|
||||
QImage QCoreTextFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &x)
|
||||
{
|
||||
if (x.type() >= QTransform::TxScale)
|
||||
return QFontEngine::alphaRGBMapForGlyph(glyph, subPixelPosition, margin, x);
|
||||
return QFontEngine::alphaRGBMapForGlyph(glyph, subPixelPosition, x);
|
||||
|
||||
QImage im = imageForGlyph(glyph, subPixelPosition, margin, true);
|
||||
QImage im = imageForGlyph(glyph, subPixelPosition, true);
|
||||
qGamma_correct_back_to_linear_cs(&im);
|
||||
return im;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,18 +91,19 @@ public:
|
|||
virtual bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const;
|
||||
virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
|
||||
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
|
||||
virtual qreal minRightBearing() const;
|
||||
virtual qreal minLeftBearing() const;
|
||||
virtual QFixed emSquareSize() const;
|
||||
|
||||
virtual QFontEngine *cloneWithSize(qreal pixelSize) const;
|
||||
virtual int glyphMargin(QFontEngineGlyphCache::Type type) { return 0; }
|
||||
|
||||
private:
|
||||
friend class QRawFontPrivate;
|
||||
|
||||
void init();
|
||||
QImage imageForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, bool colorful);
|
||||
QImage imageForGlyph(glyph_t glyph, QFixed subPixelPosition, bool colorful);
|
||||
CTFontRef ctfont;
|
||||
CGFontRef cgFont;
|
||||
int synthesisFlags;
|
||||
|
|
|
|||
|
|
@ -1096,7 +1096,7 @@ QImage QWindowsFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &xfo
|
|||
#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
|
||||
#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
|
||||
|
||||
QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, int margin, const QTransform &t)
|
||||
QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, const QTransform &t)
|
||||
{
|
||||
HFONT font = hfont;
|
||||
|
||||
|
|
@ -1104,6 +1104,7 @@ QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, int margin
|
|||
SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST, 0, &contrast, 0);
|
||||
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) 1000, 0);
|
||||
|
||||
int margin = glyphMargin(QFontEngineGlyphCache::Raster_RGBMask);
|
||||
QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, margin, t, QImage::Format_RGB32);
|
||||
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) contrast, 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public:
|
|||
|
||||
virtual QImage alphaMapForGlyph(glyph_t t) { return alphaMapForGlyph(t, QTransform()); }
|
||||
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin, const QTransform &xform);
|
||||
virtual QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
|
||||
|
||||
virtual QFontEngine *cloneWithSize(qreal pixelSize) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -96,8 +96,7 @@ public:
|
|||
bool supportsSubPixelPositions() const;
|
||||
|
||||
QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
|
||||
QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin,
|
||||
const QTransform &xform);
|
||||
QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
|
||||
|
||||
QFontEngine *cloneWithSize(qreal pixelSize) const;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue