summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/directfb/qdirectfbblitter.h
blob: 6183859613a85c8b038fb6c6bb7e364e6261cace (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QDIRECTFBBLITTER_H#define QDIRECTFBBLITTER_H#include"qdirectfbconvenience.h"#include <private/qblittable_p.h>#include <directfb.h> QT_BEGIN_NAMESPACE class QDirectFbBlitter :public QBlittable {public:QDirectFbBlitter(const QSize &size, IDirectFBSurface *surface);QDirectFbBlitter(const QSize &size,bool alpha);virtual~QDirectFbBlitter();voidfillRect(const QRectF &rect,const QColor &color) override;voiddrawPixmap(const QRectF &rect,const QPixmap &pixmap,const QRectF &subrect) override;voidalphaFillRect(const QRectF &rect,const QColor &color,QPainter::CompositionMode cmode) override;voiddrawPixmapOpacity(const QRectF &rect,const QPixmap &pixmap,const QRectF &subrect,QPainter::CompositionMode cmode, qreal opacity) override;booldrawCachedGlyphs(const QPaintEngineState *state,QFontEngine::GlyphFormat glyphFormat,int numGlyphs,const glyph_t *glyphs,const QFixedPoint *positions, QFontEngine *fontEngine) override; IDirectFBSurface *dfbSurface()const;static DFBSurfacePixelFormat alphaPixmapFormat();static DFBSurfacePixelFormat pixmapFormat();static DFBSurfacePixelFormat selectPixmapFormat(bool withAlpha);protected: QImage *doLock() override;voiddoUnlock() override; QDirectFBPointer<IDirectFBSurface> m_surface; QImage m_image;friend class QDirectFbConvenience;private:voiddrawDebugRect(const QRect &rect,const QColor &color);bool m_premult;bool m_debugPaint;};class QDirectFbBlitterPlatformPixmap :public QBlittablePlatformPixmap {public: QBlittable *createBlittable(const QSize &size,bool alpha)const override; QDirectFbBlitter *dfbBlitter()const;boolfromFile(const QString &filename,const char*format,Qt::ImageConversionFlags flags) override;private:boolfromDataBufferDescription(const DFBDataBufferDescription &);};inline QBlittable *QDirectFbBlitterPlatformPixmap::createBlittable(const QSize& size,bool alpha)const{return newQDirectFbBlitter(size, alpha);}inline QDirectFbBlitter *QDirectFbBlitterPlatformPixmap::dfbBlitter()const{return static_cast<QDirectFbBlitter*>(blittable());}inline IDirectFBSurface *QDirectFbBlitter::dfbSurface()const{return m_surface.data();}class QDirectFbTextureGlyphCache :public QImageTextureGlyphCache {public:QDirectFbTextureGlyphCache(QFontEngine::GlyphFormat format,const QTransform &matrix):QImageTextureGlyphCache(format, matrix){}voidresizeTextureData(int width,int height) override; IDirectFBSurface *sourceSurface();private: QDirectFBPointer<IDirectFBSurface> m_surface;}; QT_END_NAMESPACE #endif// QDIRECTFBBLITTER_H
close