]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.cpp
Implement jumping to a specific call.
[apitrace] / gui / apitracecall.cpp
index 70cc3f79cc64cb95855c83137ecd31257c238f7b..4664102e48eb1d22de154ff7de437f8185a49d2c 100644 (file)
@@ -457,14 +457,14 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
                                image[QLatin1String("__height__")].toInt());
                     QString cls = image[QLatin1String("__class__")].toString();
                     QString type = image[QLatin1String("__type__")].toString();
+                    bool normalized =
+                        image[QLatin1String("__normalized__")].toBool();
                     int numChannels =
                         image[QLatin1String("__channels__")].toInt();
-                    QString encoding =
-                        image[QLatin1String("__encoding__")].toString();
 
                     Q_ASSERT(numChannels == 4);
-                    Q_ASSERT(encoding == QLatin1String("base64"));
-                    Q_ASSERT(type == QLatin1String("float"));
+                    Q_ASSERT(type == QLatin1String("uint8"));
+                    Q_ASSERT(normalized == true);
 
                     QByteArray dataArray =
                         image[QLatin1String("__data__")].toByteArray();
@@ -481,6 +481,32 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
             }
         }
     }
+
+    QVariantMap fbos =
+        parsedJson[QLatin1String("framebuffer")].toMap();
+    QVariantMap::const_iterator itr;
+    for (itr = fbos.constBegin(); itr != fbos.constEnd(); ++itr) {
+        QVariantMap buffer = itr.value().toMap();
+        QSize size(buffer[QLatin1String("__width__")].toInt(),
+                   buffer[QLatin1String("__height__")].toInt());
+        QString cls = buffer[QLatin1String("__class__")].toString();
+        QString type = buffer[QLatin1String("__type__")].toString();
+        bool normalized = buffer[QLatin1String("__normalized__")].toBool();
+        int numChannels = buffer[QLatin1String("__channels__")].toInt();
+
+        Q_ASSERT(numChannels == 4);
+        Q_ASSERT(type == QLatin1String("uint8"));
+        Q_ASSERT(normalized == true);
+
+        QByteArray dataArray =
+            buffer[QLatin1String("__data__")].toByteArray();
+
+        ApiFramebuffer fbo;
+        fbo.setSize(size);
+        fbo.setType(itr.key());
+        fbo.contentsFromBase64(dataArray);
+        m_framebuffers.append(fbo);
+    }
 }
 
 QVariantMap ApiTraceState::parameters() const
@@ -503,4 +529,9 @@ QList<ApiTexture> ApiTraceState::textures() const
     return m_textures;
 }
 
+QList<ApiFramebuffer> ApiTraceState::framebuffers() const
+{
+    return m_framebuffers;
+}
+