~loic.molinari/+junk/qtdeclarative-shadereffectsource-changes

« back to all changes in this revision

Viewing changes to src/quick/designer/designersupport.h

  • Committer: Loïc Molinari
  • Date: 2012-04-21 17:59:51 UTC
  • Revision ID: loic.molinari@canonical.com-20120421175951-bqx68caaf5zrp76l
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
 
4
** Contact: http://www.qt-project.org/
 
5
**
 
6
** This file is part of the QtQml module of the Qt Toolkit.
 
7
**
 
8
** $QT_BEGIN_LICENSE:LGPL$
 
9
** GNU Lesser General Public License Usage
 
10
** This file may be used under the terms of the GNU Lesser General Public
 
11
** License version 2.1 as published by the Free Software Foundation and
 
12
** appearing in the file LICENSE.LGPL included in the packaging of this
 
13
** file. Please review the following information to ensure the GNU Lesser
 
14
** General Public License version 2.1 requirements will be met:
 
15
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 
16
**
 
17
** In addition, as a special exception, Nokia gives you certain additional
 
18
** rights. These rights are described in the Nokia Qt LGPL Exception
 
19
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 
20
**
 
21
** GNU General Public License Usage
 
22
** Alternatively, this file may be used under the terms of the GNU General
 
23
** Public License version 3.0 as published by the Free Software Foundation
 
24
** and appearing in the file LICENSE.GPL included in the packaging of this
 
25
** file. Please review the following information to ensure the GNU General
 
26
** Public License version 3.0 requirements will be met:
 
27
** http://www.gnu.org/copyleft/gpl.html.
 
28
**
 
29
** Other Usage
 
30
** Alternatively, this file may be used in accordance with the terms and
 
31
** conditions contained in a signed written agreement between you and Nokia.
 
32
**
 
33
**
 
34
**
 
35
**
 
36
**
 
37
**
 
38
** $QT_END_LICENSE$
 
39
**
 
40
****************************************************************************/
 
41
 
 
42
#ifndef DESIGNERSUPPORT_H
 
43
#define DESIGNERSUPPORT_H
 
44
 
 
45
//
 
46
//  W A R N I N G
 
47
//  -------------
 
48
//
 
49
// This file is not part of the Qt API.  It exists purely as an
 
50
// implementation detail.  This header file may change from version to
 
51
// version without notice, or even be removed.
 
52
//
 
53
// We mean it.
 
54
//
 
55
 
 
56
 
 
57
#include <QtQuick/qtquickglobal.h>
 
58
#include <QtCore/QtGlobal>
 
59
#include <QtCore/QHash>
 
60
#include <QtCore/QRectF>
 
61
 
 
62
QT_BEGIN_HEADER
 
63
 
 
64
QT_BEGIN_NAMESPACE
 
65
 
 
66
class QQuickItem;
 
67
class QQuickShaderEffectTexture;
 
68
class QImage;
 
69
class QTransform;
 
70
class QQmlContext;
 
71
class QQuickView;
 
72
 
 
73
 
 
74
class Q_QUICK_EXPORT DesignerSupport
 
75
{
 
76
public:
 
77
    enum DirtyType {
 
78
        TransformOrigin         = 0x00000001,
 
79
        Transform               = 0x00000002,
 
80
        BasicTransform          = 0x00000004,
 
81
        Position                = 0x00000008,
 
82
        Size                    = 0x00000010,
 
83
 
 
84
        ZValue                  = 0x00000020,
 
85
        Content                 = 0x00000040,
 
86
        Smooth                  = 0x00000080,
 
87
        OpacityValue            = 0x00000100,
 
88
        ChildrenChanged         = 0x00000200,
 
89
        ChildrenStackingChanged = 0x00000400,
 
90
        ParentChanged           = 0x00000800,
 
91
 
 
92
        Clip                    = 0x00001000,
 
93
        Canvas                  = 0x00002000,
 
94
 
 
95
        EffectReference         = 0x00008000,
 
96
        Visible                 = 0x00010000,
 
97
        HideReference           = 0x00020000,
 
98
 
 
99
        TransformUpdateMask     = TransformOrigin | Transform | BasicTransform | Position | Size | Canvas,
 
100
        ComplexTransformUpdateMask     = Transform | Canvas,
 
101
        ContentUpdateMask       = Size | Content | Smooth | Canvas,
 
102
        ChildrenUpdateMask      = ChildrenChanged | ChildrenStackingChanged | EffectReference | Canvas
 
103
    };
 
104
 
 
105
 
 
106
    DesignerSupport();
 
107
    ~DesignerSupport();
 
108
 
 
109
    void refFromEffectItem(QQuickItem *referencedItem, bool hide = true);
 
110
    void derefFromEffectItem(QQuickItem *referencedItem, bool unhide = true);
 
111
 
 
112
    QImage renderImageForItem(QQuickItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize);
 
113
 
 
114
    static bool isDirty(QQuickItem *referencedItem, DirtyType dirtyType);
 
115
    static void resetDirty(QQuickItem *referencedItem);
 
116
 
 
117
    static QTransform canvasTransform(QQuickItem *referencedItem);
 
118
    static QTransform parentTransform(QQuickItem *referencedItem);
 
119
 
 
120
    static bool isAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem);
 
121
    static bool areChildrenAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem);
 
122
    static bool hasAnchor(QQuickItem *item, const QString &name);
 
123
    static QQuickItem *anchorFillTargetItem(QQuickItem *item);
 
124
    static QQuickItem *anchorCenterInTargetItem(QQuickItem *item);
 
125
    static QPair<QString, QObject*> anchorLineTarget(QQuickItem *item, const QString &name, QQmlContext *context);
 
126
    static void resetAnchor(QQuickItem *item, const QString &name);
 
127
 
 
128
 
 
129
    static QList<QObject*> statesForItem(QQuickItem *item);
 
130
 
 
131
    static bool isComponentComplete(QQuickItem *item);
 
132
 
 
133
    static int borderWidth(QQuickItem *item);
 
134
 
 
135
    static void refreshExpressions(QQmlContext *context);
 
136
 
 
137
    static void setRootItem(QQuickView *view, QQuickItem *item);
 
138
 
 
139
    static bool isValidWidth(QQuickItem *item);
 
140
    static bool isValidHeight(QQuickItem *item);
 
141
 
 
142
    static void updateDirtyNode(QQuickItem *item);
 
143
 
 
144
private:
 
145
    QHash<QQuickItem*, QQuickShaderEffectTexture*> m_itemTextureHash;
 
146
};
 
147
 
 
148
QT_END_NAMESPACE
 
149
 
 
150
QT_END_HEADER
 
151
 
 
152
#endif // DESIGNERSUPPORT_H