diff options
Diffstat (limited to 'Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h')
-rw-r--r-- | Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h b/Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h index abd51a584..2ead943ca 100644 --- a/Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h +++ b/Source/WebCore/platform/graphics/qt/ImageBufferDataQt.h @@ -23,10 +23,20 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef ImageBufferDataQt_h +#define ImageBufferDataQt_h + #include "Image.h" +#include "PlatformLayer.h" + +#include <QImage> +#include <QPaintDevice> #include <QPainter> -#include <QPixmap> + +#if ENABLE(ACCELERATED_2D_CANVAS) +#include <QOpenGLContext> +#endif #include <wtf/RefPtr.h> @@ -34,16 +44,39 @@ namespace WebCore { class IntSize; +struct ImageBufferDataPrivate { + virtual ~ImageBufferDataPrivate() { } + virtual QPaintDevice* paintDevice() = 0; + virtual QImage toQImage() const = 0; + virtual RefPtr<Image> image() const = 0; + virtual RefPtr<Image> copyImage() const = 0; + virtual RefPtr<Image> takeImage() = 0; + virtual bool isAccelerated() const = 0; + virtual PlatformLayer* platformLayer() = 0; + virtual void draw(GraphicsContext& destContext, const FloatRect& destRect, + const FloatRect& srcRect, CompositeOperator, BlendMode, + bool ownContext) = 0; + virtual void drawPattern(GraphicsContext& destContext, const FloatRect& srcRect, const AffineTransform& patternTransform, + const FloatPoint& phase, const FloatSize& spacing, CompositeOperator, + const FloatRect& destRect, BlendMode, bool ownContext) = 0; + virtual void clip(GraphicsContext&, const IntRect& floatRect) const = 0; + virtual void platformTransformColorSpace(const Vector<int>& lookUpTable) = 0; +}; + class ImageBufferData { public: ImageBufferData(const IntSize&); - - QImage toQImage() const; - - QPixmap m_pixmap; - std::unique_ptr<QPainter> m_painter; - RefPtr<Image> m_image; +#if ENABLE(ACCELERATED_2D_CANVAS) + ImageBufferData(const IntSize&, QOpenGLContext*); +#endif + ~ImageBufferData(); + QPainter* m_painter; std::unique_ptr<GraphicsContext> m_context; + ImageBufferDataPrivate* m_impl; +protected: + void initPainter(); }; } // namespace WebCore + +#endif |