4 #include "apisurface.h"
11 #include "trace_model.hpp"
16 class VariantVisitor : public Trace::Visitor
19 virtual void visit(Trace::Null *);
20 virtual void visit(Trace::Bool *node);
21 virtual void visit(Trace::SInt *node);
22 virtual void visit(Trace::UInt *node);
23 virtual void visit(Trace::Float *node);
24 virtual void visit(Trace::String *node);
25 virtual void visit(Trace::Enum *e);
26 virtual void visit(Trace::Bitmask *bitmask);
27 virtual void visit(Trace::Struct *str);
28 virtual void visit(Trace::Array *array);
29 virtual void visit(Trace::Blob *blob);
30 virtual void visit(Trace::Pointer *ptr);
32 QVariant variant() const
43 ApiEnum(const QString &name = QString(), const QVariant &val=QVariant());
45 QString toString() const;
47 QVariant value() const;
53 Q_DECLARE_METATYPE(ApiEnum);
58 ApiPointer(unsigned long long val=0);
60 QString toString() const;
62 unsigned long long value() const;
65 unsigned long long m_value;
67 Q_DECLARE_METATYPE(ApiPointer);
72 typedef QList<QPair<QString, unsigned long long> > Signature;
74 ApiBitmask(const Trace::Bitmask *bitmask = 0);
76 QString toString() const;
78 unsigned long long value() const;
79 Signature signature() const;
82 void init(const Trace::Bitmask *bitmask);
85 unsigned long long m_value;
87 Q_DECLARE_METATYPE(ApiBitmask);
94 QStringList memberNames;
97 ApiStruct(const Trace::Struct *s = 0);
99 QString toString() const;
100 Signature signature() const;
101 QList<QVariant> values() const;
104 void init(const Trace::Struct *bitmask);
107 QList<QVariant> m_members;
109 Q_DECLARE_METATYPE(ApiStruct);
114 ApiArray(const Trace::Array *arr = 0);
115 ApiArray(const QList<QVariant> &vals);
117 QString toString() const;
119 QList<QVariant> values() const;
121 void init(const Trace::Array *arr);
123 QList<QVariant> m_array;
125 Q_DECLARE_METATYPE(ApiArray);
128 QString apiVariantToString(const QVariant &variant, bool multiLine = false);
132 class ApiTraceState {
135 explicit ApiTraceState(const QVariantMap &parseJson);
137 bool isEmpty() const;
138 QVariantMap parameters() const;
139 QMap<QString, QString> shaderSources() const;
140 QList<ApiTexture> textures() const;
141 QList<ApiFramebuffer> framebuffers() const;
144 QVariantMap m_parameters;
145 QMap<QString, QString> m_shaderSources;
146 QList<ApiTexture> m_textures;
147 QList<ApiFramebuffer> m_framebuffers;
149 Q_DECLARE_METATYPE(ApiTraceState);
161 ApiTraceEvent(Type t);
162 virtual ~ApiTraceEvent();
164 Type type() const { return m_type; }
166 virtual QStaticText staticText() const = 0;
167 virtual int numChildren() const = 0;
169 QVariantMap stateParameters() const;
170 ApiTraceState state() const;
171 void setState(const ApiTraceState &state);
175 ApiTraceState m_state;
177 mutable QStaticText *m_staticText;
179 Q_DECLARE_METATYPE(ApiTraceEvent*);
181 class ApiTraceCall : public ApiTraceEvent
185 ApiTraceCall(const Trace::Call *tcall);
189 QString name() const;
190 QStringList argNames() const;
191 QVariantList arguments() const;
192 QVariant returnValue() const;
193 QUrl helpUrl() const;
194 void setHelpUrl(const QUrl &url);
195 ApiTraceFrame *parentFrame()const;
196 void setParentFrame(ApiTraceFrame *frame);
198 bool hasError() const;
199 QString error() const;
200 void setError(const QString &msg);
202 QVariantList originalValues() const;
205 void setEditedValues(const QVariantList &lst);
206 QVariantList editedValues() const;
209 ApiTrace *parentTrace() const;
211 QString toHtml() const;
212 QString filterText() const;
213 QStaticText staticText() const;
214 int numChildren() const;
215 bool hasBinaryData() const;
216 int binaryDataIndex() const;
220 QStringList m_argNames;
221 QVariantList m_argValues;
222 QVariant m_returnValue;
223 ApiTraceFrame *m_parentFrame;
226 QVariantList m_editedValues;
230 mutable QString m_richText;
231 mutable QString m_filterText;
232 mutable bool m_hasBinaryData;
233 mutable int m_binaryDataIndex;
235 Q_DECLARE_METATYPE(ApiTraceCall*);
237 class ApiTraceFrame : public ApiTraceEvent
243 bool isEmpty() const;
245 ApiTrace *parentTrace() const;
246 void setParentTrace(ApiTrace *trace);
248 int numChildren() const;
249 QStaticText staticText() const;
251 int callIndex(ApiTraceCall *call) const;
252 ApiTraceCall *call(int idx) const;
253 void addCall(ApiTraceCall *call);
254 QList<ApiTraceCall*> calls() const;
256 int binaryDataSize() const;
258 ApiTrace *m_parentTrace;
259 quint64 m_binaryDataSize;
260 QList<ApiTraceCall*> m_calls;
262 Q_DECLARE_METATYPE(ApiTraceFrame*);