1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/*
This file is part of KCachegrind.
SPDX-FileCopyrightText: 2003-2016 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
SPDX-License-Identifier: GPL-2.0-only
*/
/*
* Items of instruction view.
*/
#ifndef INSTRITEM_H
#define INSTRITEM_H
#include <QTreeWidget>
#include <QItemDelegate>
#include "tracedata.h"
class InstrView;
class InstrItem: public QTreeWidgetItem
{
public:
// for messages
InstrItem(InstrView* iv, QTreeWidget* parent,
Addr addr, const QString&);
// for instruction lines
InstrItem(InstrView* iv, QTreeWidget* parent,
Addr addr, bool inside,
const QString&, const QString&, const QString&,
TraceInstr* instr);
// for call instr
InstrItem(InstrView* iv, QTreeWidgetItem* parent, Addr addr,
TraceInstr* instr, TraceInstrCall* instrCall);
// for jump lines
InstrItem(InstrView* iv, QTreeWidgetItem* parent, Addr addr,
TraceInstr* instr, TraceInstrJump* instrJump);
Addr addr() const { return _addr; }
bool inside() const { return _inside; }
TraceInstr* instr() const { return _instr; }
TraceInstrCall* instrCall() const { return _instrCall; }
TraceInstrJump* instrJump() const { return _instrJump; }
TraceInstrJump* jump(int i) const { return _jump[i]; }
int jumpCount() const { return _jump.size(); }
bool operator< ( const QTreeWidgetItem & other ) const override;
void updateGroup();
void updateCost();
// arrow lines
void setJumpArray(const QVector<TraceInstrJump*>& a);
private:
InstrView* _view;
SubCost _pure, _pure2;
Addr _addr;
TraceInstr* _instr;
TraceInstrJump* _instrJump;
TraceInstrCall* _instrCall;
bool _inside;
QVector<TraceInstrJump*> _jump;
};
// Delegate for drawing the arrows column
class InstrItemDelegate : public QItemDelegate
{
Q_OBJECT
public:
explicit InstrItemDelegate(InstrView *parent);
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex & index ) const override;
QSize sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
protected:
void paintArrows(QPainter *p,
const QStyleOptionViewItem &option,
const QModelIndex &index) const;
InstrView* _parent;
};
#endif // INSTRITEM_H
|