Changeset - 2541096f1ba6
[Not reviewed]
Hasan Yavuz Ă–ZDERYA - 7 years ago 2018-09-25 16:10:06
hy@ozderya.net
preliminary drawing of values, buggy
2 files changed with 43 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/zoomer.cpp
Show inline comments
 
@@ -105,18 +105,43 @@ QRegion Zoomer::rubberBandMask() const
 

	
 
void Zoomer::drawTracker(QPainter* painter) const
 
{
 
    ScrollZoomer::drawTracker(painter);
 
    auto x = invTransform(trackerPosition()).x();
 
    qDebug() <<  x;
 
    // ScrollZoomer::drawTracker(painter);
 
    if (_stream != nullptr && _stream->numChannels())
 
    {
 
        qDebug() << findValues(x);
 
        drawValues(painter);
 
    }
 
    return;
 
}
 

	
 
void Zoomer::drawValues(QPainter* painter) const
 
{
 
    painter->save();
 

	
 
    double x = invTransform(trackerPosition()).x();
 
    auto values = findValues(x);
 
    qDebug() <<  x << ":" << values; // TODO: cleanup
 

	
 
    // draw vertical line
 
    painter->setPen(Qt::white);
 
    const QRect pRect = pickArea().boundingRect().toRect();
 
    int px = trackerPosition().x();
 
    painter->drawLine(px, pRect.top(), px, pRect.bottom());
 

	
 
    for (auto val : values)
 
    {
 
        if (!std::isnan(val))
 
        {
 
            painter->drawText(transform(QPointF(x, val)),
 
                              QString("%1").arg(val));
 
        }
 
    }
 

	
 
    painter->restore();
 
}
 

	
 
QVector<double> Zoomer::findValues(double x) const
 
{
 
    // TODO: process only channel(s) of this plot
 
    unsigned nc = _stream->numChannels();
 
    QVector<double> r(nc);
 
    for (unsigned ci = 0; ci < nc; ci++)
 
@@ -128,6 +153,12 @@ QVector<double> Zoomer::findValues(doubl
 
    return r;
 
}
 

	
 
QRect Zoomer::trackerRect(const QFont& font) const
 
{
 
    // TODO: optimize tracker area for masking instead of returning whole plot size
 
    return pickArea().boundingRect().toRect();
 
}
 

	
 
void Zoomer::widgetMousePressEvent(QMouseEvent* mouseEvent)
 
{
 
    if (mouseEvent->modifiers() & Qt::ControlModifier)
src/zoomer.h
Show inline comments
 
@@ -39,11 +39,13 @@ signals:
 

	
 
protected:
 
    /// Re-implemented to display selection size in the tracker text.
 
    QwtText trackerTextF(const QPointF &pos) const;
 
    QwtText trackerTextF(const QPointF &pos) const override;
 
    /// Re-implemented for sample value tracker
 
    QRect trackerRect(const QFont&) const override;
 
    /// Re-implemented for alpha background
 
    void drawRubberBand(QPainter* painter) const;
 
    void drawRubberBand(QPainter* painter) const override;
 
    /// Re-implemented to draw sample values
 
    void drawTracker(QPainter* painter) const;
 
    void drawTracker(QPainter* painter) const override;
 
    /// Re-implemented for alpha background (masking is basically disabled)
 
    QRegion rubberBandMask() const;
 
    /// Overloaded for panning
 
@@ -58,6 +60,9 @@ private:
 
    QPointF pan_point;
 
    const Stream* _stream;
 

	
 
    /// Draw sample values
 
    void drawValues(QPainter* painter) const;
 
    /// Find sample values for given X value
 
    QVector<double> findValues(double x) const;
 
};
 

	
0 comments (0 inline, 0 general)