78 QOpenGLTextureGlyphCache(QFontEngine::GlyphFormat glyphFormat,
const QTransform &matrix,
const QColor &color = QColor());
79 ~QOpenGLTextureGlyphCache();
81 virtual void createTextureData(
int width,
int height) override;
82 virtual void resizeTextureData(
int width,
int height) override;
83 virtual void fillTexture(
const Coord &c,
85 const QFixedPoint &subPixelPosition) override;
86 virtual int glyphPadding()
const override;
87 virtual int maxTextureWidth()
const override;
88 virtual int maxTextureHeight()
const override;
90 inline GLuint texture()
const {
91 QOpenGLTextureGlyphCache *that =
const_cast<QOpenGLTextureGlyphCache *>(
this);
92 QOpenGLGlyphTexture *glyphTexture = that->m_textureResource;
93 return glyphTexture ? glyphTexture->m_texture : 0;
96 inline int width()
const {
97 QOpenGLTextureGlyphCache *that =
const_cast<QOpenGLTextureGlyphCache *>(
this);
98 QOpenGLGlyphTexture *glyphTexture = that->m_textureResource;
99 return glyphTexture ? glyphTexture->m_width : 0;
101 inline int height()
const {
102 QOpenGLTextureGlyphCache *that =
const_cast<QOpenGLTextureGlyphCache *>(
this);
103 QOpenGLGlyphTexture *glyphTexture = that->m_textureResource;
104 return glyphTexture ? glyphTexture->m_height : 0;
107 inline void setPaintEnginePrivate(QOpenGL2PaintEngineExPrivate *p) { pex = p; }
109 inline const QOpenGLContextGroup *contextGroup()
const {
return m_textureResource ? m_textureResource->group() :
nullptr; }
111 inline int serialNumber()
const {
return m_serialNumber; }
117 FilterMode filterMode()
const {
return m_filterMode; }
118 void setFilterMode(FilterMode m) { m_filterMode = m; }
122 QOpenGL2PaintEngineExPrivate *paintEnginePrivate()
const
128 void setupVertexAttribs();
130 QOpenGLGlyphTexture *m_textureResource;
132 QOpenGL2PaintEngineExPrivate *pex;
133 QOpenGLShaderProgram *m_blitProgram;
134 FilterMode m_filterMode;
136 GLfloat m_vertexCoordinateArray[8];
137 GLfloat m_textureCoordinateArray[8];
141 QOpenGLBuffer m_buffer;
142 QOpenGLVertexArrayObject m_vao;
void invalidateResource() override
void freeResource(QOpenGLContext *context) override
QOpenGLGlyphTexture(QOpenGLContext *ctx)
static void load_glyph_image_region_to_texture(QOpenGLContext *ctx, const QImage &srcImg, int x, int y, int w, int h, GLuint texture, int tx, int ty)
static void load_glyph_image_to_texture(QOpenGLContext *ctx, QImage &img, GLuint texture, int tx, int ty)
static QT_BEGIN_NAMESPACE int next_qopengltextureglyphcache_serial_number()