Rename QDeclarative symbols to QQuick and QQml
[profile/ivi/qtdeclarative.git] / src / quick / items / qquickshadereffect_p.h
index 97444fb..4475c22 100644 (file)
@@ -1,10 +1,9 @@
 /****************************************************************************
 **
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
 **
-** This file is part of the QtDeclarative module of the Qt Toolkit.
+** This file is part of the QtQml module of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:LGPL$
 ** GNU Lesser General Public License Usage
@@ -35,6 +34,7 @@
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
@@ -70,7 +70,10 @@ class Q_AUTOTEST_EXPORT QQuickShaderEffect : public QQuickItem
     Q_PROPERTY(bool blending READ blending WRITE setBlending NOTIFY blendingChanged)
     Q_PROPERTY(QVariant mesh READ mesh WRITE setMesh NOTIFY meshChanged)
     Q_PROPERTY(CullMode culling READ cullMode WRITE setCullMode NOTIFY cullModeChanged)
+    Q_PROPERTY(QString log READ log NOTIFY logChanged)
+    Q_PROPERTY(Status status READ status NOTIFY statusChanged)
     Q_ENUMS(CullMode)
+    Q_ENUMS(Status)
 
 public:
     enum CullMode
@@ -80,11 +83,16 @@ public:
         FrontFaceCulling = QQuickShaderEffectMaterial::FrontFaceCulling
     };
 
+    enum Status
+    {
+        Compiled,
+        Uncompiled,
+        Error
+    };
+
     QQuickShaderEffect(QQuickItem *parent = 0);
     ~QQuickShaderEffect();
 
-    virtual void componentComplete();
-
     QByteArray fragmentShader() const { return m_source.fragmentCode; }
     void setFragmentShader(const QByteArray &code);
 
@@ -100,21 +108,31 @@ public:
     CullMode cullMode() const { return m_cullMode; }
     void setCullMode(CullMode face);
 
+    QString log() const { return m_log; }
+    Status status() const { return m_status; }
+
+    void ensureCompleted();
+    QString parseLog() { return m_parseLog; }
+
 Q_SIGNALS:
     void fragmentShaderChanged();
     void vertexShaderChanged();
     void blendingChanged();
     void meshChanged();
     void cullModeChanged();
+    void logChanged();
+    void statusChanged();
 
 protected:
     virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
     virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
+    virtual void itemChange(ItemChange change, const ItemChangeData &value);
 
 private Q_SLOTS:
     void changeSource(int index);
     void updateData();
     void updateGeometry();
+    void updateLogAndStatus(const QString &log, int status);
 
 private:
     friend class QQuickCustomMaterialShader;
@@ -132,6 +150,8 @@ private:
     QQuickShaderEffectMesh *m_mesh;
     QQuickGridMesh m_defaultMesh;
     CullMode m_cullMode;
+    QString m_log;
+    Status m_status;
 
     struct SourceData
     {
@@ -140,6 +160,7 @@ private:
         QByteArray name;
     };
     QVector<SourceData> m_sources;
+    QString m_parseLog;
 
     uint m_blending : 1;
     uint m_dirtyData : 1;
@@ -147,6 +168,8 @@ private:
     uint m_programDirty : 1;
     uint m_dirtyMesh : 1;
     uint m_dirtyGeometry : 1;
+
+    uint m_complete : 1;
 };
 
 QT_END_NAMESPACE