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 const QVariantMap & parameters() const;
139 const QMap<QString, QString> & shaderSources() const;
140 const QVariantMap & uniforms() const;
141 const QList<ApiTexture> & textures() const;
142 const QList<ApiFramebuffer> & framebuffers() const;
145 QVariantMap m_parameters;
146 QMap<QString, QString> m_shaderSources;
147 QVariantMap m_uniforms;
148 QList<ApiTexture> m_textures;
149 QList<ApiFramebuffer> m_framebuffers;
151 Q_DECLARE_METATYPE(ApiTraceState);
163 ApiTraceEvent(Type t);
164 virtual ~ApiTraceEvent();
166 Type type() const { return m_type; }
168 virtual QStaticText staticText() const = 0;
169 virtual int numChildren() const = 0;
171 QVariantMap stateParameters() const;
172 ApiTraceState state() const;
173 void setState(const ApiTraceState &state);
177 ApiTraceState m_state;
179 mutable QStaticText *m_staticText;
181 Q_DECLARE_METATYPE(ApiTraceEvent*);
183 class ApiTraceCall : public ApiTraceEvent
187 ApiTraceCall(const Trace::Call *tcall);
191 QString name() const;
192 QStringList argNames() const;
193 QVariantList arguments() const;
194 QVariant returnValue() const;
195 QUrl helpUrl() const;
196 void setHelpUrl(const QUrl &url);
197 ApiTraceFrame *parentFrame()const;
198 void setParentFrame(ApiTraceFrame *frame);
200 bool hasError() const;
201 QString error() const;
202 void setError(const QString &msg);
204 QVariantList originalValues() const;
207 void setEditedValues(const QVariantList &lst);
208 QVariantList editedValues() const;
211 ApiTrace *parentTrace() const;
213 QString toHtml() const;
214 QString filterText() const;
215 QStaticText staticText() const;
216 int numChildren() const;
217 bool hasBinaryData() const;
218 int binaryDataIndex() const;
222 QStringList m_argNames;
223 QVariantList m_argValues;
224 QVariant m_returnValue;
225 ApiTraceFrame *m_parentFrame;
228 QVariantList m_editedValues;
232 mutable QString m_richText;
233 mutable QString m_filterText;
234 mutable bool m_hasBinaryData;
235 mutable int m_binaryDataIndex;
237 Q_DECLARE_METATYPE(ApiTraceCall*);
239 class ApiTraceFrame : public ApiTraceEvent
245 bool isEmpty() const;
247 ApiTrace *parentTrace() const;
248 void setParentTrace(ApiTrace *trace);
250 int numChildren() const;
251 QStaticText staticText() const;
253 int callIndex(ApiTraceCall *call) const;
254 ApiTraceCall *call(int idx) const;
255 void addCall(ApiTraceCall *call);
256 QList<ApiTraceCall*> calls() const;
258 int binaryDataSize() const;
260 ApiTrace *m_parentTrace;
261 quint64 m_binaryDataSize;
262 QList<ApiTraceCall*> m_calls;
264 Q_DECLARE_METATYPE(ApiTraceFrame*);