HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
wave_cursor.cpp
Go to the documentation of this file.
4 #include <QBrush>
5 #include <QPen>
6 #include <QPainter>
7 #include <QPaintEvent>
8 #include <QDebug>
9 #include <QPalette>
10 
11 namespace hal {
12 
13  WaveCursor::WaveCursor(const WaveTransform* trans, const WaveScrollbar* scroll, QWidget* parent)
14  : QWidget(parent), mTransform(trans), mScrollbar(scroll), mPosition(100,400), mTimeValue(-1)
15  {
19  setStyleSheet("background: transparent;");
21  setCursorPosition(mPosition);
22  }
23 
25  {
26  Q_UNUSED(event);
27 
28  QPainter paint(this);
29 
30 // QBrush transparent(QColor::fromRgb(255,255,255,40));
31 // paint.fillRect(QRectF(0,0,81,height()),transparent);
33  paint.setPen(QPen(QBrush(Qt::red),0));
34  paint.drawLine(sWidth/2,0,sWidth/2,height());
35 
36  int y0 = mPosition.y()-sLabHeight/2;
37  if (y0 < sLabHeight) y0 = sLabHeight;
38  if (y0 + sLabHeight + 1 > height()) y0 = height() - sLabHeight - 1;
39  mPosition.setY(y0 + sLabHeight/2);
40 
41  QRect rectTvalue(0,y0,sWidth,sLabHeight);
42 
43  paint.setBrush(Qt::black);
44  paint.setPen(QPen(QBrush(Qt::red),0));
45  paint.drawRoundedRect(rectTvalue, 15, 10, Qt::AbsoluteSize);
46  paint.setPen(QPen(QColor("#c0c0c0")));
47  QFont font = paint.font();
48  font.setBold(true);
49  font.setPointSizeF(10);
50  paint.setFont(font);
51 
52  if (mTimeValue < 0) mTimeValue = mScrollbar->tPosI(mPosition.x());
53  WaveGraphicsCanvas* wgc = static_cast<WaveGraphicsCanvas*>(parent());
54  if (wgc) wgc->setCursorPosition(mTimeValue,mPosition.x());
55  paint.drawText(rectTvalue, QString::number(mTimeValue), Qt::AlignHCenter | Qt::AlignVCenter);
56  }
57 
59  {
61  update();
62  }
63 
65  {
66  return QRect(mPosition.x()-sWidth/2,mPosition.y()-sLabHeight/2,sWidth,sLabHeight);
67  }
68 
70  {
71  Q_ASSERT(mScrollbar);
72  mTimeValue = t;
73  mPosition.setX(mScrollbar->xPosI(mTimeValue));
74  move(mPosition.x()-sWidth/2,0);
75  update();
76  }
77 
79  {
80  Q_ASSERT(mScrollbar);
81  mTimeValue = mScrollbar->tPosI(mPosition.x());
82  update();
83  }
84 
86  {
87  Q_ASSERT(mScrollbar);
88  mPosition = pos;
89  mTimeValue = mScrollbar->tPosI(mPosition.x());
90  move(pos.x()-sWidth/2,0);
91  update();
92  }
93 }
void setCursorPosition(const QPoint &pos)
Definition: wave_cursor.cpp:85
void paintEvent(QPaintEvent *event) override
Definition: wave_cursor.cpp:24
QRect labelRect() const
Definition: wave_cursor.cpp:64
void setCursorToTime(u64 t)
Definition: wave_cursor.cpp:69
void setViewportHeight(int height)
Definition: wave_cursor.cpp:58
static const int sWidth
Definition: wave_cursor.h:56
WaveCursor(const WaveTransform *trans, const WaveScrollbar *scroll, QWidget *parent=nullptr)
Definition: wave_cursor.cpp:13
void setCursorPosition(double tCursor, int xpos)
quint64 tPosI(int x) const
int xPosI(double t) const
uint64_t u64
Definition: defines.h:42
Definition: defines.h:45
QObject * parent() const const
void drawLine(const QLineF &line)
void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)
void drawText(const QPointF &position, const QString &text)
const QFont & font() const const
void setBrush(const QBrush &brush)
void setFont(const QFont &font)
void setPen(const QColor &color)
void setRenderHint(QPainter::RenderHint hint, bool on)
void setX(int x)
void setY(int y)
int x() const const
int y() const const
QString number(int n, int base)
AlignHCenter
AbsoluteSize
WA_TransparentForMouseEvents
virtual bool event(QEvent *event) override
void move(int x, int y)
void setAttribute(Qt::WidgetAttribute attribute, bool on)
void setFixedHeight(int h)
void setFixedWidth(int w)
void setSizePolicy(QSizePolicy)
void setStyleSheet(const QString &styleSheet)
void update()
void setWindowOpacity(qreal level)