]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.h
Reduce the size of ApiTraceCall, ApiTraceEvent and ApiTraceFrame
[apitrace] / gui / apitracecall.h
index 59c6fe75eec5613025e895033097defd93f423b9..46e44b2e81eb1860dcb93dcff9dd2fc45993ca03 100644 (file)
@@ -125,7 +125,7 @@ private:
 Q_DECLARE_METATYPE(ApiArray);
 
 
-QString apiVariantToString(const QVariant &variant);
+QString apiVariantToString(const QVariant &variant, bool multiLine = false);
 
 class ApiTraceFrame;
 
@@ -135,44 +135,77 @@ public:
     explicit ApiTraceState(const QVariantMap &parseJson);
 
     bool isEmpty() const;
-    QVariantMap parameters() const;
-    QMap<QString, QString> shaderSources() const;
-    QList<ApiTexture> textures() const;
-    QList<ApiFramebuffer> framebuffers() const;
+    const QVariantMap & parameters() const;
+    const QMap<QString, QString> & shaderSources() const;
+    const QVariantMap & uniforms() const;
+    const QList<ApiTexture> & textures() const;
+    const QList<ApiFramebuffer> & framebuffers() const;
 
 private:
     QVariantMap m_parameters;
     QMap<QString, QString> m_shaderSources;
+    QVariantMap m_uniforms;
     QList<ApiTexture> m_textures;
     QList<ApiFramebuffer> m_framebuffers;
 };
 Q_DECLARE_METATYPE(ApiTraceState);
 
+class ApiTraceCallSignature
+{
+public:
+    ApiTraceCallSignature(const QString &name,
+                          const QStringList &argNames);
+    ~ApiTraceCallSignature();
+
+    QString name() const
+    {
+        return m_name;
+    }
+    QStringList argNames() const
+    {
+        return m_argNames;
+    }
+
+    QUrl helpUrl() const;
+    void setHelpUrl(const QUrl &url);
+
+private:
+    QString m_name;
+    QStringList m_argNames;
+    QUrl m_helpUrl;
+};
+
 class ApiTraceEvent
 {
 public:
     enum Type {
-        None,
-        Call,
-        Frame
+        None  = 0,
+        Call  = 1 << 0,
+        Frame = 1 << 1
     };
 public:
     ApiTraceEvent();
     ApiTraceEvent(Type t);
     virtual ~ApiTraceEvent();
 
-    Type type() const { return m_type; }
+    Type type() const { return (Type)m_type; }
 
     virtual QStaticText staticText() const = 0;
     virtual int numChildren() const = 0;
 
     QVariantMap stateParameters() const;
-    ApiTraceState state() const;
-    void setState(const ApiTraceState &state);
+    ApiTraceState *state() const;
+    void setState(ApiTraceState *state);
+    bool hasState() const
+    {
+        return m_state && !m_state->isEmpty();
+    }
 
 protected:
-    Type m_type;
-    ApiTraceState m_state;
+    int m_type : 4;
+    mutable bool m_hasBinaryData;
+    mutable int m_binaryDataIndex:8;
+    ApiTraceState *m_state;
 
     mutable QStaticText *m_staticText;
 };
@@ -181,8 +214,7 @@ Q_DECLARE_METATYPE(ApiTraceEvent*);
 class ApiTraceCall : public ApiTraceEvent
 {
 public:
-    ApiTraceCall();
-    ApiTraceCall(const Trace::Call *tcall);
+    ApiTraceCall(ApiTraceFrame *parentFrame, const Trace::Call *tcall);
     ~ApiTraceCall();
 
     int index() const;
@@ -195,6 +227,10 @@ public:
     ApiTraceFrame *parentFrame()const;
     void setParentFrame(ApiTraceFrame *frame);
 
+    bool hasError() const;
+    QString error() const;
+    void setError(const QString &msg);
+
     QVariantList originalValues() const;
 
     bool edited() const;
@@ -202,44 +238,53 @@ public:
     QVariantList editedValues() const;
     void revert();
 
+    ApiTrace *parentTrace() const;
+
     QString toHtml() const;
-    QString filterText() const;
+    QString searchText() const;
     QStaticText staticText() const;
     int numChildren() const;
     bool hasBinaryData() const;
     int binaryDataIndex() const;
 private:
     int m_index;
-    QString m_name;
-    QStringList m_argNames;
+    ApiTraceCallSignature *m_signature;
     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 bool m_hasBinaryData;
-    mutable int m_binaryDataIndex;
+    mutable QString m_searchText;
 };
 Q_DECLARE_METATYPE(ApiTraceCall*);
 
 class ApiTraceFrame : public ApiTraceEvent
 {
 public:
-    ApiTraceFrame();
+    ApiTraceFrame(ApiTrace *parent);
     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:
     ApiTrace *m_parentTrace;
+    quint64 m_binaryDataSize;
+    QList<ApiTraceCall*> m_calls;
 };
 Q_DECLARE_METATYPE(ApiTraceFrame*);