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(int val=0);
60 QString toString() const;
64 Q_DECLARE_METATYPE(ApiPointer);
69 typedef QList<QPair<QString, unsigned long long> > Signature;
71 ApiBitmask(const Trace::Bitmask *bitmask = 0);
73 QString toString() const;
76 void init(const Trace::Bitmask *bitmask);
79 unsigned long long m_value;
81 Q_DECLARE_METATYPE(ApiBitmask);
88 QStringList memberNames;
91 ApiStruct(const Trace::Struct *s = 0);
93 QString toString() const;
96 void init(const Trace::Struct *bitmask);
99 QList<QVariant> m_members;
101 Q_DECLARE_METATYPE(ApiStruct);
106 ApiArray(const Trace::Array *arr = 0);
107 ApiArray(const QList<QVariant> &vals);
109 QString toString() const;
111 QList<QVariant> values() const;
113 void init(const Trace::Array *arr);
115 QList<QVariant> m_array;
117 Q_DECLARE_METATYPE(ApiArray);
120 QString apiVariantToString(const QVariant &variant);
124 class ApiTraceState {
127 explicit ApiTraceState(const QVariantMap &parseJson);
129 bool isEmpty() const;
130 QVariantMap parameters() const;
131 QMap<QString, QString> shaderSources() const;
132 QList<ApiTexture> textures() const;
133 QList<ApiFramebuffer> framebuffers() const;
136 QVariantMap m_parameters;
137 QMap<QString, QString> m_shaderSources;
138 QList<ApiTexture> m_textures;
139 QList<ApiFramebuffer> m_framebuffers;
141 Q_DECLARE_METATYPE(ApiTraceState);
153 ApiTraceEvent(Type t);
154 virtual ~ApiTraceEvent();
156 Type type() const { return m_type; }
158 virtual QStaticText staticText() const = 0;
159 virtual int numChildren() const = 0;
161 QVariantMap stateParameters() const;
162 ApiTraceState state() const;
163 void setState(const ApiTraceState &state);
167 ApiTraceState m_state;
169 mutable QStaticText *m_staticText;
171 Q_DECLARE_METATYPE(ApiTraceEvent*);
173 class ApiTraceCall : public ApiTraceEvent
177 ApiTraceCall(const Trace::Call *tcall);
181 QString name() const;
182 QStringList argNames() const;
183 QVariantList arguments() const;
184 QVariant returnValue() const;
185 QUrl helpUrl() const;
186 void setHelpUrl(const QUrl &url);
187 ApiTraceFrame *parentFrame()const;
188 void setParentFrame(ApiTraceFrame *frame);
190 QVariantList originalValues() const;
193 void setEditedValues(const QVariantList &lst);
194 QVariantList editedValues() const;
197 QString toHtml() const;
198 QString filterText() const;
199 QStaticText staticText() const;
200 int numChildren() const;
201 bool hasBinaryData() const;
202 int binaryDataIndex() const;
206 QStringList m_argNames;
207 QVariantList m_argValues;
208 QVariant m_returnValue;
209 ApiTraceFrame *m_parentFrame;
212 QVariantList m_editedValues;
214 mutable QString m_richText;
215 mutable QString m_filterText;
216 mutable bool m_hasBinaryData;
217 mutable int m_binaryDataIndex;
219 Q_DECLARE_METATYPE(ApiTraceCall*);
221 class ApiTraceFrame : public ApiTraceEvent
226 QList<ApiTraceCall*> calls;
228 ApiTrace *parentTrace() const;
229 void setParentTrace(ApiTrace *trace);
231 int numChildren() const;
232 QStaticText staticText() const;
234 ApiTrace *m_parentTrace;
236 Q_DECLARE_METATYPE(ApiTraceFrame*);