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;
94 QList<QVariant> values() const;
96 void init(const Trace::Array *arr);
98 QList<QVariant> m_array;
100 Q_DECLARE_METATYPE(ApiArray);
103 QString apiVariantToString(const QVariant &variant);
107 class ApiTraceState {
110 explicit ApiTraceState(const QVariantMap &parseJson);
112 bool isEmpty() const;
113 QVariantMap parameters() const;
114 QMap<QString, QString> shaderSources() const;
115 QList<ApiTexture> textures() const;
116 QList<ApiFramebuffer> framebuffers() const;
119 QVariantMap m_parameters;
120 QMap<QString, QString> m_shaderSources;
121 QList<ApiTexture> m_textures;
122 QList<ApiFramebuffer> m_framebuffers;
124 Q_DECLARE_METATYPE(ApiTraceState);
136 ApiTraceEvent(Type t);
138 Type type() const { return m_type; }
140 virtual QStaticText staticText() const = 0;
141 virtual int numChildren() const = 0;
143 QVariantMap stateParameters() const;
144 ApiTraceState state() const;
145 void setState(const ApiTraceState &state);
149 ApiTraceState m_state;
151 Q_DECLARE_METATYPE(ApiTraceEvent*);
153 class ApiTraceCall : public ApiTraceEvent
161 QStringList argNames;
162 QVariantList argValues;
163 QVariant returnValue;
164 ApiTraceFrame *parentFrame;
167 QString toHtml() const;
168 QString filterText() const;
169 QStaticText staticText() const;
170 int numChildren() const;
171 bool hasBinaryData() const;
172 int binaryDataIndex() const;
174 mutable QString m_richText;
175 mutable QString m_filterText;
176 mutable QStaticText m_staticText;
177 mutable bool m_hasBinaryData;
178 mutable int m_binaryDataIndex;
180 Q_DECLARE_METATYPE(ApiTraceCall*);
182 class ApiTraceFrame : public ApiTraceEvent
187 QList<ApiTraceCall*> calls;
189 int numChildren() const;
190 QStaticText staticText() const;
192 mutable QStaticText m_staticText;
194 Q_DECLARE_METATYPE(ApiTraceFrame*);