-
Matthew Vogt authored
Reduce library load time by removing any exports which are not required by existing clients. Task-number: QTBUG-24768 Change-Id: Ia5754d6f97bb2ed46e290820a5b092f85a4bc5b0 Reviewed-by:
Martin Jones <martin.jones@nokia.com>
83e820ba
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/
**
** This file is part of the QtQml module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QQUICKCANVAS_P_H
#define QQUICKCANVAS_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qquickitem.h"
#include "qquickcanvas.h"
#include <private/qqmlguard_p.h>
#include <QtQuick/private/qsgcontext_p.h>
#include <private/qquickdrag_p.h>
#include <QtCore/qthread.h>
#include <QtCore/qmutex.h>
#include <QtCore/qwaitcondition.h>
#include <private/qwindow_p.h>
#include <private/qopengl_p.h>
#include <qopenglcontext.h>
#include <QtGui/qopenglframebufferobject.h>
#include <QtGui/qevent.h>
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
#include <QtGui/qinputpanel.h>
QT_BEGIN_NAMESPACE
//Make it easy to identify and customize the root item if needed
class QQuickWindowManager;
class QQuickRootItem : public QQuickItem
{
Q_OBJECT
public:
QQuickRootItem();
public Q_SLOTS:
void setWidth(int w) {QQuickItem::setWidth(qreal(w));}
void setHeight(int h) {QQuickItem::setHeight(qreal(h));}
};
class QQuickItemPrivate;
class QQuickCanvasPrivate;
class QTouchEvent;
class QQuickCanvasRenderLoop;
class QQuickCanvasIncubationController;
class Q_QUICK_PRIVATE_EXPORT QQuickCanvasPrivate : public QWindowPrivate
{
public:
Q_DECLARE_PUBLIC(QQuickCanvas)
static inline QQuickCanvasPrivate *get(QQuickCanvas *c) { return c->d_func(); }
QQuickCanvasPrivate();
virtual ~QQuickCanvasPrivate();
void init(QQuickCanvas *);
void initRootItem();//Currently only used if items added in QML
QQuickRootItem *rootItem;
QSet<QQuickItem *> parentlessItems;
QQmlListProperty<QObject> data();
QQuickItem *activeFocusItem;
QQuickItem *mouseGrabberItem;
QQuickDragGrabber dragGrabber;
int touchMouseId;
ulong touchMousePressTimestamp;
// Mouse positions are saved in widget coordinates
QPointF lastMousePosition;
void translateTouchToMouse(QTouchEvent *event);
void translateTouchEvent(QTouchEvent *touchEvent);
static void transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform);
bool deliverInitialMousePressEvent(QQuickItem *, QMouseEvent *);
bool deliverMouseEvent(QMouseEvent *);
bool sendFilteredMouseEvent(QQuickItem *, QQuickItem *, QEvent *);
bool deliverWheelEvent(QQuickItem *, QWheelEvent *);
bool deliverTouchPoints(QQuickItem *, QTouchEvent *, const QList<QTouchEvent::TouchPoint> &, QSet<int> *,
QHash<QQuickItem *, QList<QTouchEvent::TouchPoint> > *);
bool deliverTouchEvent(QTouchEvent *);
bool deliverHoverEvent(QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos, Qt::KeyboardModifiers modifiers, bool &accepted);
bool sendHoverEvent(QEvent::Type, QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos,
Qt::KeyboardModifiers modifiers, bool accepted);
bool clearHover();
void deliverDragEvent(QQuickDragGrabber *, QEvent *);
bool deliverDragEvent(QQuickDragGrabber *, QQuickItem *, QDragMoveEvent *);
QList<QQuickItem*> hoverItems;
enum FocusOption {
DontChangeFocusProperty = 0x01,
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
DontChangeSubFocusItem = 0x02
};
Q_DECLARE_FLAGS(FocusOptions, FocusOption)
void setFocusInScope(QQuickItem *scope, QQuickItem *item, FocusOptions = 0);
void clearFocusInScope(QQuickItem *scope, QQuickItem *item, FocusOptions = 0);
static void notifyFocusChangesRecur(QQuickItem **item, int remaining);
void updateFocusItemTransform();
void dirtyItem(QQuickItem *);
void cleanup(QSGNode *);
void polishItems();
void syncSceneGraph();
void renderSceneGraph(const QSize &size);
bool renderWithoutShowing;
void setRenderWithoutShowing(bool enabled);
QQuickItem::UpdatePaintNodeData updatePaintNodeData;
QQuickItem *dirtyItemList;
QList<QSGNode *> cleanupNodeList;
QSet<QQuickItem *> itemsToPolish;
void updateDirtyNodes();
void cleanupNodes();
void cleanupNodesOnShutdown();
bool updateEffectiveOpacity(QQuickItem *);
void updateEffectiveOpacityRoot(QQuickItem *, qreal);
void updateDirtyNode(QQuickItem *);
void fireFrameSwapped() { emit q_func()->frameSwapped(); }
QSGContext *context;
QSGRenderer *renderer;
QQuickWindowManager *windowManager;
QColor clearColor;
uint clearBeforeRendering : 1;
// Currently unused in the default implementation, as we're not stopping
// rendering when obscured as we should...
uint persistentGLContext : 1;
uint persistentSceneGraph : 1;
QOpenGLFramebufferObject *renderTarget;
uint renderTargetId;
QSize renderTargetSize;
QHash<int, QQuickItem *> itemForTouchPointId;
mutable QQuickCanvasIncubationController *incubationController;
private:
static void cleanupNodesOnShutdown(QQuickItem *);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickCanvasPrivate::FocusOptions)
QT_END_NAMESPACE
#endif // QQUICKCANVAS_P_H