X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracecall.h;h=5a5a64b9eadd6b5c26d6ff38ecf6dd98ec5d8960;hb=20b1f6dc3783cec612fe3712c4b6c1ca65d4a5f4;hp=2b6e97c1d22c812aff94455cff62dab1552e817b;hpb=6b9d13306a7434abb30ea20698b6cf0c3574de3c;p=apitrace diff --git a/gui/apitracecall.h b/gui/apitracecall.h index 2b6e97c..5a5a64b 100644 --- a/gui/apitracecall.h +++ b/gui/apitracecall.h @@ -16,6 +16,9 @@ class ApiTrace; class VariantVisitor : public Trace::Visitor { public: + VariantVisitor(ApiTrace *trace) + : m_trace(trace) + {} virtual void visit(Trace::Null *); virtual void visit(Trace::Bool *node); virtual void visit(Trace::SInt *node); @@ -34,21 +37,37 @@ public: return m_variant; } private: + ApiTrace *m_trace; QVariant m_variant; }; +class ApiTraceEnumSignature +{ +public: + ApiTraceEnumSignature(const QString &name = QString(), + const QVariant &val=QVariant())\ + : m_name(name), + m_value(val) + {} + + QVariant value() const { return m_value; } + QString name() const { return m_name; } +private: + QString m_name; + QVariant m_value; +}; + class ApiEnum { public: - ApiEnum(const QString &name = QString(), const QVariant &val=QVariant()); + ApiEnum(ApiTraceEnumSignature *sig=0); QString toString() const; QVariant value() const; QString name() const; private: - QString m_name; - QVariant m_value; + ApiTraceEnumSignature *m_sig; }; Q_DECLARE_METATYPE(ApiEnum); @@ -112,15 +131,15 @@ class ApiArray { public: ApiArray(const Trace::Array *arr = 0); - ApiArray(const QList &vals); + ApiArray(const QVector &vals); QString toString() const; - QList values() const; + QVector values() const; private: void init(const Trace::Array *arr); private: - QList m_array; + QVector m_array; }; Q_DECLARE_METATYPE(ApiArray); @@ -137,42 +156,75 @@ public: bool isEmpty() const; const QVariantMap & parameters() const; const QMap & shaderSources() const; + const QVariantMap & uniforms() const; const QList & textures() const; const QList & framebuffers() const; private: QVariantMap m_parameters; QMap m_shaderSources; + QVariantMap m_uniforms; QList m_textures; QList m_framebuffers; }; Q_DECLARE_METATYPE(ApiTraceState); +class ApiTraceCallSignature +{ +public: + ApiTraceCallSignature(const QString &name, + const QStringList &argNames); + ~ApiTraceCallSignature(); + + QString name() const + { + return m_name; + } + QStringList argNames() const + { + return m_argNames; + } + + QUrl helpUrl() const; + void setHelpUrl(const QUrl &url); + +private: + QString m_name; + QStringList m_argNames; + QUrl m_helpUrl; +}; + class ApiTraceEvent { public: enum Type { - None, - Call, - Frame + None = 0, + Call = 1 << 0, + Frame = 1 << 1 }; public: ApiTraceEvent(); ApiTraceEvent(Type t); virtual ~ApiTraceEvent(); - Type type() const { return m_type; } + Type type() const { return (Type)m_type; } virtual QStaticText staticText() const = 0; virtual int numChildren() const = 0; QVariantMap stateParameters() const; - ApiTraceState state() const; - void setState(const ApiTraceState &state); + ApiTraceState *state() const; + void setState(ApiTraceState *state); + bool hasState() const + { + return m_state && !m_state->isEmpty(); + } protected: - Type m_type; - ApiTraceState m_state; + int m_type : 4; + mutable bool m_hasBinaryData; + mutable int m_binaryDataIndex:8; + ApiTraceState *m_state; mutable QStaticText *m_staticText; }; @@ -181,14 +233,13 @@ Q_DECLARE_METATYPE(ApiTraceEvent*); class ApiTraceCall : public ApiTraceEvent { public: - ApiTraceCall(); - ApiTraceCall(const Trace::Call *tcall); + ApiTraceCall(ApiTraceFrame *parentFrame, const Trace::Call *tcall); ~ApiTraceCall(); int index() const; QString name() const; QStringList argNames() const; - QVariantList arguments() const; + QVector arguments() const; QVariant returnValue() const; QUrl helpUrl() const; void setHelpUrl(const QUrl &url); @@ -199,65 +250,68 @@ public: QString error() const; void setError(const QString &msg); - QVariantList originalValues() const; + QVector originalValues() const; bool edited() const; - void setEditedValues(const QVariantList &lst); - QVariantList editedValues() const; + void setEditedValues(const QVector &lst); + QVector editedValues() const; void revert(); ApiTrace *parentTrace() const; QString toHtml() const; - QString filterText() const; + QString searchText() const; QStaticText staticText() const; int numChildren() const; bool hasBinaryData() const; int binaryDataIndex() const; private: int m_index; - QString m_name; - QStringList m_argNames; - QVariantList m_argValues; + ApiTraceCallSignature *m_signature; + QVector m_argValues; QVariant m_returnValue; ApiTraceFrame *m_parentFrame; - QUrl m_helpUrl; - QVariantList m_editedValues; + QVector m_editedValues; QString m_error; mutable QString m_richText; - mutable QString m_filterText; - mutable bool m_hasBinaryData; - mutable int m_binaryDataIndex; + mutable QString m_searchText; }; Q_DECLARE_METATYPE(ApiTraceCall*); class ApiTraceFrame : public ApiTraceEvent { public: - ApiTraceFrame(); + ApiTraceFrame(ApiTrace *parent); int number; bool isEmpty() const; ApiTrace *parentTrace() const; - void setParentTrace(ApiTrace *trace); + void setNumChildren(int num); int numChildren() const; QStaticText staticText() const; int callIndex(ApiTraceCall *call) const; ApiTraceCall *call(int idx) const; void addCall(ApiTraceCall *call); - QList calls() const; + QVector calls() const; + void setCalls(const QVector &calls, + quint64 binaryDataSize); int binaryDataSize() const; + + bool loaded() const; + void setLoaded(bool l); private: ApiTrace *m_parentTrace; quint64 m_binaryDataSize; - QList m_calls; + QVector m_calls; + bool m_loaded; + unsigned m_callsToLoad; }; Q_DECLARE_METATYPE(ApiTraceFrame*);