diff options
author | Andy Nichols <andy.nichols@digia.com> | 2014-09-01 16:49:58 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-09-02 13:45:44 +0300 |
commit | ba0d8e93d8525bb459e9b6cb384f2fe0701d5a02 (patch) | |
tree | 8239423e74a36f24e00c9624d289c143b6824489 /src/plugins/scenegraph/softwarecontext/context.h | |
parent | f013631527b3cc569527e9541c11b0f12c420473 (diff) |
Reformat project to be a Qt Module
Change-Id: I2fe8df530a687247a9cd7ea12c1d8de79fef506e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/plugins/scenegraph/softwarecontext/context.h')
-rw-r--r-- | src/plugins/scenegraph/softwarecontext/context.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/plugins/scenegraph/softwarecontext/context.h b/src/plugins/scenegraph/softwarecontext/context.h new file mode 100644 index 0000000000..88fe4e447f --- /dev/null +++ b/src/plugins/scenegraph/softwarecontext/context.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt SceneGraph Raster Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef CONTEXT_H +#define CONTEXT_H + +#include <private/qsgcontext_p.h> +#include <private/qsgrenderer_p.h> +#include <private/qsgadaptationlayer_p.h> +#include <QtCore/QElapsedTimer> +#include <QtGui/QOpenGLShaderProgram> +#include <QtGui/QBackingStore> + +namespace SoftwareContext +{ + +class Renderer : public QSGRenderer +{ +public: + Renderer(QSGRenderContext *context); + + virtual void renderScene(GLuint fboId = 0); + + virtual void render(); + + void nodeChanged(QSGNode *node, QSGNode::DirtyState state); + + QBackingStore *backingStore() const { return m_backingStore.data(); } + +private: + QScopedPointer<QBackingStore> m_backingStore; + QRect m_dirtyRect; +}; + +class PixmapRenderer : public QSGRenderer +{ +public: + PixmapRenderer(QSGRenderContext *context); + + virtual void renderScene(GLuint fboId = 0); + + virtual void render(); + + void render(QPixmap *target); +}; + +class RenderContext : public QSGRenderContext +{ +public: + RenderContext(QSGContext *ctx); + void initialize(QOpenGLContext *context); + void initializeIfNeeded(); + void invalidate(); + void renderNextFrame(QSGRenderer *renderer, GLuint fbo); + QSGTexture *createTexture(const QImage &image) const; + QSGTexture *createTextureNoAtlas(const QImage &image) const; + QSGRenderer *createRenderer(); + + QWindow *currentWindow; + bool m_initialized; +}; + +class Context : public QSGContext +{ + Q_OBJECT +public: + explicit Context(QObject *parent = 0); + + QSGRenderContext *createRenderContext() { return new RenderContext(this); } + + virtual QSGRectangleNode *createRectangleNode(); + virtual QSGImageNode *createImageNode(); + virtual QSGPainterNode *createPainterNode(QQuickPaintedItem *item); + virtual QSGGlyphNode *createGlyphNode(QSGRenderContext *rc, bool preferNativeGlyphNode); + virtual QSGNinePatchNode *createNinePatchNode(); + virtual QSGLayer *createLayer(QSGRenderContext *renderContext); + virtual QSurfaceFormat defaultSurfaceFormat() const; +}; + +} // namespace + +#endif // CONTEXT_H |