4 #include "apisurface.h"
11 #include "trace_model.hpp"
14 class VariantVisitor : public Trace::Visitor
17 virtual void visit(Trace::Null *);
18 virtual void visit(Trace::Bool *node);
19 virtual void visit(Trace::SInt *node);
20 virtual void visit(Trace::UInt *node);
21 virtual void visit(Trace::Float *node);
22 virtual void visit(Trace::String *node);
23 virtual void visit(Trace::Enum *e);
24 virtual void visit(Trace::Bitmask *bitmask);
25 virtual void visit(Trace::Struct *str);
26 virtual void visit(Trace::Array *array);
27 virtual void visit(Trace::Blob *blob);
28 virtual void visit(Trace::Pointer *ptr);
30 QVariant variant() const
42 ApiPointer(int val=0);
44 QString toString() const;
48 Q_DECLARE_METATYPE(ApiPointer);
53 typedef QList<QPair<QString, unsigned long long> > Signature;
55 ApiBitmask(const Trace::Bitmask *bitmask = 0);
57 QString toString() const;
60 void init(const Trace::Bitmask *bitmask);
63 unsigned long long m_value;
65 Q_DECLARE_METATYPE(ApiBitmask);
72 QStringList memberNames;
75 ApiStruct(const Trace::Struct *s = 0);
77 QString toString() const;
80 void init(const Trace::Struct *bitmask);
83 QList<QVariant> m_members;
85 Q_DECLARE_METATYPE(ApiStruct);
90 ApiArray(const Trace::Array *arr = 0);
92 QString toString() const;
95 void init(const Trace::Array *arr);
97 QList<QVariant> m_array;
99 Q_DECLARE_METATYPE(ApiArray);
102 QString apiVariantToString(const QVariant &variant);
106 class ApiTraceState {
109 explicit ApiTraceState(const QVariantMap &parseJson);
111 bool isEmpty() const;
112 QVariantMap parameters() const;
113 QMap<QString, QString> shaderSources() const;
114 QList<ApiTexture> textures() const;
115 QList<ApiFramebuffer> framebuffers() const;
118 QVariantMap m_parameters;
119 QMap<QString, QString> m_shaderSources;
120 QList<ApiTexture> m_textures;
121 QList<ApiFramebuffer> m_framebuffers;
123 Q_DECLARE_METATYPE(ApiTraceState);
135 ApiTraceEvent(Type t);
137 Type type() const { return m_type; }
139 virtual QStaticText staticText() const = 0;
140 virtual int numChildren() const = 0;
142 QVariantMap stateParameters() const;
143 ApiTraceState state() const;
144 void setState(const ApiTraceState &state);
148 ApiTraceState m_state;
150 Q_DECLARE_METATYPE(ApiTraceEvent*);
152 class ApiTraceCall : public ApiTraceEvent
160 QStringList argNames;
161 QVariantList argValues;
162 QVariant returnValue;
163 ApiTraceFrame *parentFrame;
166 QString toHtml() const;
167 QString filterText() const;
168 QStaticText staticText() const;
169 int numChildren() const;
170 bool hasBinaryData() const;
171 int binaryDataIndex() const;
173 mutable QString m_richText;
174 mutable QString m_filterText;
175 mutable QStaticText m_staticText;
176 mutable bool m_hasBinaryData;
177 mutable int m_binaryDataIndex;
179 Q_DECLARE_METATYPE(ApiTraceCall*);
181 class ApiTraceFrame : public ApiTraceEvent
186 QList<ApiTraceCall*> calls;
188 int numChildren() const;
189 QStaticText staticText() const;
191 mutable QStaticText m_staticText;
193 Q_DECLARE_METATYPE(ApiTraceFrame*);