Changeset - 797666010f26
[Not reviewed]
Hasan Yavuz Ă–ZDERYA - 10 years ago 2016-03-24 17:43:38
hy@ozderya.net
implemented framebufferseries to isolate qwtplotcurve from framebuffer
10 files changed with 73 insertions and 24 deletions:
0 comments (0 inline, 0 general)
CMakeLists.txt
Show inline comments
 
@@ -90,6 +90,7 @@ add_executable(${PROGRAM_NAME} WIN32
 
  src/tooltipfilter.cpp
 
  src/sneakylineedit.cpp
 
  src/channelmanager.cpp
 
  src/framebufferseries.cpp
 
  misc/windows_icon.rc
 
  ${UI_FILES}
 
  ${RES_FILES}
serialplot.pro
Show inline comments
 
@@ -53,7 +53,8 @@ SOURCES += \
 
    src/dataformatpanel.cpp \
 
    src/tooltipfilter.cpp \
 
    src/sneakylineedit.cpp \
 
    src/channelmanager.cpp
 
    src/channelmanager.cpp \
 
    src/framebufferseries.cpp
 

	
 
HEADERS += \
 
    src/mainwindow.h \
 
@@ -77,7 +78,8 @@ HEADERS += \
 
    src/dataformatpanel.h \
 
    src/tooltipfilter.h \
 
    src/sneakylineedit.h \
 
    src/channelmanager.h
 
    src/channelmanager.h \
 
    src/framebufferseries.h
 

	
 
FORMS += \
 
    src/mainwindow.ui \
src/channelmanager.cpp
Show inline comments
 
@@ -34,11 +34,6 @@ ChannelManager::ChannelManager(unsigned 
 
    {
 
        channelBuffers.append(new FrameBuffer(numberOfSamples));
 
        channelNamesList << QString("Channel %1").arg(i+1);
 

	
 
        // curves.append(new QwtPlotCurve(QString("Channel %1").arg(i+1)));
 
        // curves[i]->setSamples(channelBuffers[i]);
 
        // curves[i]->setPen(Plot::makeColor(i));
 
        // curves[i]->attach(ui->plot);
 
    }
 

	
 
    _channelNames.setStringList(channelNamesList);
 
@@ -49,7 +44,10 @@ ChannelManager::ChannelManager(unsigned 
 

	
 
ChannelManager::~ChannelManager()
 
{
 
    // TODO: remove all channelBuffers
 
    for (auto buffer : channelBuffers)
 
    {
 
        delete buffer;
 
    }
 
}
 

	
 
unsigned ChannelManager::numOfChannels()
 
@@ -80,10 +78,7 @@ void ChannelManager::setNumOfChannels(un
 
        // remove channels
 
        for (unsigned int i = oldNum-1; i > number-1; i--)
 
        {
 
            // also deletes owned FrameBuffer
 
            // delete curves.takeLast();
 
            // TODO: important, remove channelBuffer
 
            channelBuffers.removeLast();
 
            delete channelBuffers.takeLast();
 
            _channelNames.removeRow(i);
 
        }
 
    }
 
@@ -133,6 +128,7 @@ void ChannelManager::onChannelNameDataCh
 
                                             const QModelIndex & bottomRight,
 
                                             const QVector<int> & roles)
 
{
 
    Q_UNUSED(roles);
 
    int start = topLeft.row();
 
    int end = bottomRight.row();
 

	
src/channelmanager.h
Show inline comments
 
@@ -57,7 +57,7 @@ private:
 
    QList<FrameBuffer*> channelBuffers;
 
    QStringListModel _channelNames;
 

	
 
    void addChannelName(QString name); /// appends a new channel name at the end of list
 
    void addChannelName(QString name); ///< appends a new channel name at the end of list
 

	
 
private slots:
 
    void onChannelNameDataChange(const QModelIndex & topLeft,
src/dataformatpanel.cpp
Show inline comments
 
@@ -21,6 +21,7 @@
 
#include "ui_dataformatpanel.h"
 

	
 
#include <QtEndian>
 
#include <QtDebug>
 

	
 
#include "utils.h"
 
#include "floatswap.h"
src/framebuffer.h
Show inline comments
 
@@ -20,11 +20,10 @@
 
#ifndef FRAMEBUFFER_H
 
#define FRAMEBUFFER_H
 

	
 
#include <qwt_series_data.h>
 
#include <QPointF>
 
#include <QRectF>
 

	
 
class FrameBuffer : public QwtSeriesData<QPointF>
 
class FrameBuffer
 
{
 
public:
 
    FrameBuffer(size_t size);
src/framebufferseries.cpp
Show inline comments
 
new file 100644
 

	
 
#include "framebufferseries.h"
 

	
 
FrameBufferSeries::FrameBufferSeries(FrameBuffer* buffer)
 
{
 
    _buffer = buffer;
 
}
 

	
 
size_t FrameBufferSeries::size() const
 
{
 
    return _buffer->size();
 
}
 

	
 
QPointF FrameBufferSeries::sample(size_t i) const
 
{
 
    return _buffer->sample(i);
 
}
 

	
 
QRectF FrameBufferSeries::boundingRect() const
 
{
 
    return _buffer->boundingRect();
 
}
src/framebufferseries.h
Show inline comments
 
new file 100644
 

	
 
#ifndef FRAMEBUFFERSERIES_H
 
#define FRAMEBUFFERSERIES_H
 

	
 
#include <QPointF>
 
#include <QRectF>
 
#include <qwt_series_data.h>
 

	
 
#include "framebuffer.h"
 

	
 
/**
 
 * This class provides an interface for actual FrameBuffer
 
 * object. That way we can keep our data structures relatively
 
 * isolated from Qwt. Otherwise QwtPlotCurve owns FrameBuffer
 
 * structures.
 
 */
 
class FrameBufferSeries : public QwtSeriesData<QPointF>
 
{
 
public:
 
    FrameBufferSeries(FrameBuffer* buffer);
 

	
 
    // QwtSeriesData implementations
 
    size_t size() const;
 
    QPointF sample(size_t i) const;
 
    QRectF boundingRect() const;
 

	
 
private:
 
    FrameBuffer* _buffer;
 
};
 

	
 
#endif // FRAMEBUFFERSERIES_H
src/mainwindow.cpp
Show inline comments
 
@@ -31,11 +31,9 @@
 
#include <cmath>
 
#include <iostream>
 

	
 
// test code
 
#include <QListView>
 

	
 
#include <plot.h>
 

	
 
#include "framebufferseries.h"
 
#include "utils.h"
 
#include "version.h"
 

	
 
@@ -170,7 +168,8 @@ MainWindow::MainWindow(QWidget *parent) 
 
    for (unsigned int i = 0; i < numOfChannels; i++)
 
    {
 
        curves.append(new QwtPlotCurve(channelMan.channelName(i)));
 
        curves[i]->setSamples(channelMan.channelBuffer(i));
 
        curves[i]->setSamples(
 
            new FrameBufferSeries(channelMan.channelBuffer(i)));
 
        curves[i]->setPen(Plot::makeColor(i));
 
        curves[i]->attach(ui->plot);
 
    }
 
@@ -351,10 +350,8 @@ void MainWindow::onNumOfChannelsChanged(
 
        for (unsigned int i = oldNum; i < numOfChannels; i++)
 
        {
 
            QwtPlotCurve* curve = new QwtPlotCurve(channelMan.channelName(i));
 
            // TODO: create a wrapper around FrameBuffer that holds a
 
            // pointer to it and provides the QwtDataSeries interface,
 
            // that wrapper should be created for and owned by 'curve'
 
            curve->setSamples(channelMan.channelBuffer(i));
 
            curve->setSamples(
 
                new FrameBufferSeries(channelMan.channelBuffer(i)));
 
            curve->setPen(Plot::makeColor(i));
 
            curve->attach(ui->plot);
 
            curves.append(curve);
 
@@ -365,7 +362,6 @@ void MainWindow::onNumOfChannelsChanged(
 
        // remove channels
 
        for (unsigned int i = 0; i < oldNum - numOfChannels; i++)
 
        {
 
            // also deletes owned FrameBuffer TODO: which souldn't happen
 
            delete curves.takeLast();
 
        }
 
    }
src/snapshotmanager.cpp
Show inline comments
 
@@ -24,6 +24,7 @@
 
#include <QFile>
 
#include <QVector>
 
#include <QPointF>
 
#include <QtDebug>
 

	
 
#include "snapshotmanager.h"
 

	
0 comments (0 inline, 0 general)