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
44 ApiPointer(int val=0);
46 QString toString() const;
50 Q_DECLARE_METATYPE(ApiPointer);
55 typedef QList<QPair<QString, unsigned long long> > Signature;
57 ApiBitmask(const Trace::Bitmask *bitmask = 0);
59 QString toString() const;
62 void init(const Trace::Bitmask *bitmask);
65 unsigned long long m_value;
67 Q_DECLARE_METATYPE(ApiBitmask);
74 QStringList memberNames;
77 ApiStruct(const Trace::Struct *s = 0);
79 QString toString() const;
82 void init(const Trace::Struct *bitmask);
85 QList<QVariant> m_members;
87 Q_DECLARE_METATYPE(ApiStruct);
92 ApiArray(const Trace::Array *arr = 0);
93 ApiArray(const QList<QVariant> &vals);
95 QString toString() const;
97 QList<QVariant> values() const;
99 void init(const Trace::Array *arr);
101 QList<QVariant> m_array;
103 Q_DECLARE_METATYPE(ApiArray);
106 QString apiVariantToString(const QVariant &variant);
110 class ApiTraceState {
113 explicit ApiTraceState(const QVariantMap &parseJson);
115 bool isEmpty() const;
116 QVariantMap parameters() const;
117 QMap<QString, QString> shaderSources() const;
118 QList<ApiTexture> textures() const;
119 QList<ApiFramebuffer> framebuffers() const;
122 QVariantMap m_parameters;
123 QMap<QString, QString> m_shaderSources;
124 QList<ApiTexture> m_textures;
125 QList<ApiFramebuffer> m_framebuffers;
127 Q_DECLARE_METATYPE(ApiTraceState);
139 ApiTraceEvent(Type t);
140 virtual ~ApiTraceEvent();
142 Type type() const { return m_type; }
144 virtual QStaticText staticText() const = 0;
145 virtual int numChildren() const = 0;
147 QVariantMap stateParameters() const;
148 ApiTraceState state() const;
149 void setState(const ApiTraceState &state);
153 ApiTraceState m_state;
155 mutable QStaticText *m_staticText;
157 Q_DECLARE_METATYPE(ApiTraceEvent*);
159 class ApiTraceCall : public ApiTraceEvent
163 ApiTraceCall(const Trace::Call *tcall);
167 QString name() const;
168 QStringList argNames() const;
169 QVariantList arguments() const;
170 QVariant returnValue() const;
171 QUrl helpUrl() const;
172 void setHelpUrl(const QUrl &url);
173 ApiTraceFrame *parentFrame()const;
174 void setParentFrame(ApiTraceFrame *frame);
176 QVariantList originalValues() const;
179 void setEditedValues(const QVariantList &lst);
180 QVariantList editedValues() const;
183 QString toHtml() const;
184 QString filterText() const;
185 QStaticText staticText() const;
186 int numChildren() const;
187 bool hasBinaryData() const;
188 int binaryDataIndex() const;
192 QStringList m_argNames;
193 QVariantList m_argValues;
194 QVariant m_returnValue;
195 ApiTraceFrame *m_parentFrame;
198 QVariantList m_editedValues;
200 mutable QString m_richText;
201 mutable QString m_filterText;
202 mutable bool m_hasBinaryData;
203 mutable int m_binaryDataIndex;
205 Q_DECLARE_METATYPE(ApiTraceCall*);
207 class ApiTraceFrame : public ApiTraceEvent
212 QList<ApiTraceCall*> calls;
214 ApiTrace *parentTrace() const;
215 void setParentTrace(ApiTrace *trace);
217 int numChildren() const;
218 QStaticText staticText() const;
220 ApiTrace *m_parentTrace;
222 Q_DECLARE_METATYPE(ApiTraceFrame*);