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);
178 QString toHtml() const;
179 QString filterText() const;
180 QStaticText staticText() const;
181 int numChildren() const;
182 bool hasBinaryData() const;
183 int binaryDataIndex() const;
187 QStringList m_argNames;
188 QVariantList m_argValues;
189 QVariant m_returnValue;
190 ApiTraceFrame *m_parentFrame;
193 mutable QString m_richText;
194 mutable QString m_filterText;
195 mutable bool m_hasBinaryData;
196 mutable int m_binaryDataIndex;
198 Q_DECLARE_METATYPE(ApiTraceCall*);
200 class ApiTraceFrame : public ApiTraceEvent
205 QList<ApiTraceCall*> calls;
207 ApiTrace *parentTrace() const;
208 void setParentTrace(ApiTrace *trace);
210 int numChildren() const;
211 QStaticText staticText() const;
213 ApiTrace *m_parentTrace;
215 Q_DECLARE_METATYPE(ApiTraceFrame*);