4 #include "apisurface.h"
11 #include "trace_model.hpp"
14 class VariantVisitor : public Trace::Visitor
17 virtual void visit(Trace::Null *);
18 virtual void visit(Trace::Bool *node);
19 virtual void visit(Trace::SInt *node);
20 virtual void visit(Trace::UInt *node);
21 virtual void visit(Trace::Float *node);
22 virtual void visit(Trace::String *node);
23 virtual void visit(Trace::Enum *e);
24 virtual void visit(Trace::Bitmask *bitmask);
25 virtual void visit(Trace::Struct *str);
26 virtual void visit(Trace::Array *array);
27 virtual void visit(Trace::Blob *blob);
28 virtual void visit(Trace::Pointer *ptr);
30 QVariant variant() const
42 ApiPointer(int val=0);
44 QString toString() const;
48 Q_DECLARE_METATYPE(ApiPointer);
53 typedef QList<QPair<QString, unsigned long long> > Signature;
55 ApiBitmask(const Trace::Bitmask *bitmask = 0);
57 QString toString() const;
60 void init(const Trace::Bitmask *bitmask);
63 unsigned long long m_value;
65 Q_DECLARE_METATYPE(ApiBitmask);
72 QStringList memberNames;
75 ApiStruct(const Trace::Struct *s = 0);
77 QString toString() const;
80 void init(const Trace::Struct *bitmask);
83 QList<QVariant> m_members;
85 Q_DECLARE_METATYPE(ApiStruct);
90 ApiArray(const Trace::Array *arr = 0);
92 QString toString() const;
95 void init(const Trace::Array *arr);
97 QList<QVariant> m_array;
99 Q_DECLARE_METATYPE(ApiArray);
102 QString apiVariantToString(const QVariant &variant);
106 class ApiTraceState {
109 explicit ApiTraceState(const QVariantMap &parseJson);
111 bool isEmpty() const;
112 QVariantMap parameters() const;
113 QStringList shaderSources() const;
114 QList<ApiTexture> textures() const;
117 QVariantMap m_parameters;
118 QStringList m_shaderSources;
119 QList<ApiTexture> m_textures;
121 Q_DECLARE_METATYPE(ApiTraceState);
133 ApiTraceEvent(Type t);
135 Type type() const { return m_type; }
137 virtual QStaticText staticText() const = 0;
138 virtual int numChildren() const = 0;
140 QVariantMap stateParameters() const;
141 ApiTraceState state() const;
142 void setState(const ApiTraceState &state);
146 ApiTraceState m_state;
148 Q_DECLARE_METATYPE(ApiTraceEvent*);
150 class ApiTraceCall : public ApiTraceEvent
158 QStringList argNames;
159 QVariantList argValues;
160 QVariant returnValue;
161 ApiTraceFrame *parentFrame;
164 QString toHtml() const;
165 QString filterText() const;
166 QStaticText staticText() const;
167 int numChildren() const;
168 bool hasBinaryData() const;
169 int binaryDataIndex() const;
171 mutable QString m_richText;
172 mutable QString m_filterText;
173 mutable QStaticText m_staticText;
174 mutable bool m_hasBinaryData;
175 mutable int m_binaryDataIndex;
177 Q_DECLARE_METATYPE(ApiTraceCall*);
179 class ApiTraceFrame : public ApiTraceEvent
184 QList<ApiTraceCall*> calls;
186 int numChildren() const;
187 QStaticText staticText() const;
189 mutable QStaticText m_staticText;
191 Q_DECLARE_METATYPE(ApiTraceFrame*);