]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.h
Allow saving of surface snapshots to png's.
[apitrace] / gui / apitracecall.h
index c2fd98736331fbdecb0ab81c16fa05dee7f3f6c4..b7362eb521558a1a92c20948d1f58f06169be848 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef APITRACECALL_H
 #define APITRACECALL_H
 
+#include "apisurface.h"
+
 #include <QStaticText>
 #include <QStringList>
 #include <QUrl>
@@ -9,6 +11,8 @@
 #include "trace_model.hpp"
 
 
+class ApiTrace;
+
 class VariantVisitor : public Trace::Visitor
 {
 public:
@@ -33,15 +37,32 @@ private:
     QVariant m_variant;
 };
 
+class ApiEnum
+{
+public:
+    ApiEnum(const QString &name = QString(), const QVariant &val=QVariant());
+
+    QString toString() const;
+
+    QVariant value() const;
+    QString name() const;
+private:
+    QString m_name;
+    QVariant m_value;
+};
+Q_DECLARE_METATYPE(ApiEnum);
 
 class ApiPointer
 {
 public:
-    ApiPointer(int val=0);
+    ApiPointer(unsigned long long val=0);
 
     QString toString() const;
+
+    unsigned long long value() const;
+
 private:
-    int m_value;
+    unsigned long long m_value;
 };
 Q_DECLARE_METATYPE(ApiPointer);
 
@@ -54,6 +75,9 @@ public:
 
     QString toString() const;
 
+    unsigned long long value() const;
+    Signature signature() const;
+
 private:
     void init(const Trace::Bitmask *bitmask);
 private:
@@ -73,6 +97,8 @@ public:
     ApiStruct(const Trace::Struct *s = 0);
 
     QString toString() const;
+    Signature signature() const;
+    QList<QVariant> values() const;
 
 private:
     void init(const Trace::Struct *bitmask);
@@ -86,9 +112,11 @@ class ApiArray
 {
 public:
     ApiArray(const Trace::Array *arr = 0);
+    ApiArray(const QList<QVariant> &vals);
 
     QString toString() const;
 
+    QList<QVariant> values() const;
 private:
     void init(const Trace::Array *arr);
 private:
@@ -97,10 +125,29 @@ private:
 Q_DECLARE_METATYPE(ApiArray);
 
 
-QString apiVariantToString(const QVariant &variant);
+QString apiVariantToString(const QVariant &variant, bool multiLine = false);
 
 class ApiTraceFrame;
 
+class ApiTraceState {
+public:
+    ApiTraceState();
+    explicit ApiTraceState(const QVariantMap &parseJson);
+
+    bool isEmpty() const;
+    QVariantMap parameters() const;
+    QMap<QString, QString> shaderSources() const;
+    QList<ApiTexture> textures() const;
+    QList<ApiFramebuffer> framebuffers() const;
+
+private:
+    QVariantMap m_parameters;
+    QMap<QString, QString> m_shaderSources;
+    QList<ApiTexture> m_textures;
+    QList<ApiFramebuffer> m_framebuffers;
+};
+Q_DECLARE_METATYPE(ApiTraceState);
+
 class ApiTraceEvent
 {
 public:
@@ -112,18 +159,22 @@ public:
 public:
     ApiTraceEvent();
     ApiTraceEvent(Type t);
+    virtual ~ApiTraceEvent();
 
     Type type() const { return m_type; }
 
     virtual QStaticText staticText() const = 0;
     virtual int numChildren() const = 0;
 
-    QVariantMap state() const;
-    void setState(const QVariantMap &state);
+    QVariantMap stateParameters() const;
+    ApiTraceState state() const;
+    void setState(const ApiTraceState &state);
 
 protected:
     Type m_type;
-    QVariantMap m_state;
+    ApiTraceState m_state;
+
+    mutable QStaticText *m_staticText;
 };
 Q_DECLARE_METATYPE(ApiTraceEvent*);
 
@@ -131,15 +182,31 @@ class ApiTraceCall : public ApiTraceEvent
 {
 public:
     ApiTraceCall();
+    ApiTraceCall(const Trace::Call *tcall);
     ~ApiTraceCall();
 
-    int index;
-    QString name;
-    QStringList argNames;
-    QVariantList argValues;
-    QVariant returnValue;
-    ApiTraceFrame *parentFrame;
-    QUrl helpUrl;
+    int index() const;
+    QString name() const;
+    QStringList argNames() const;
+    QVariantList arguments() const;
+    QVariant returnValue() const;
+    QUrl helpUrl() const;
+    void setHelpUrl(const QUrl &url);
+    ApiTraceFrame *parentFrame()const;
+    void setParentFrame(ApiTraceFrame *frame);
+
+    bool hasError() const;
+    QString error() const;
+    void setError(const QString &msg);
+
+    QVariantList originalValues() const;
+
+    bool edited() const;
+    void setEditedValues(const QVariantList &lst);
+    QVariantList editedValues() const;
+    void revert();
+
+    ApiTrace *parentTrace() const;
 
     QString toHtml() const;
     QString filterText() const;
@@ -148,9 +215,20 @@ public:
     bool hasBinaryData() const;
     int binaryDataIndex() const;
 private:
+    int m_index;
+    QString m_name;
+    QStringList m_argNames;
+    QVariantList m_argValues;
+    QVariant m_returnValue;
+    ApiTraceFrame *m_parentFrame;
+    QUrl m_helpUrl;
+
+    QVariantList m_editedValues;
+
+    QString m_error;
+
     mutable QString m_richText;
     mutable QString m_filterText;
-    mutable QStaticText m_staticText;
     mutable bool m_hasBinaryData;
     mutable int m_binaryDataIndex;
 };
@@ -161,12 +239,25 @@ class ApiTraceFrame : public ApiTraceEvent
 public:
     ApiTraceFrame();
     int number;
-    QList<ApiTraceCall*> calls;
+
+    bool isEmpty() const;
+
+    ApiTrace *parentTrace() const;
+    void setParentTrace(ApiTrace *trace);
 
     int numChildren() const;
     QStaticText staticText() const;
+
+    int callIndex(ApiTraceCall *call) const;
+    ApiTraceCall *call(int idx) const;
+    void addCall(ApiTraceCall *call);
+    QList<ApiTraceCall*> calls() const;
+
+    int binaryDataSize() const;
 private:
-    mutable QStaticText m_staticText;
+    ApiTrace *m_parentTrace;
+    quint64 m_binaryDataSize;
+    QList<ApiTraceCall*> m_calls;
 };
 Q_DECLARE_METATYPE(ApiTraceFrame*);