1 // Copyright (c) 2016 The SigViewer Development Team 2 // Licensed under the GNU General Public License (GPL) 3 // https://www.gnu.org/licenses/gpl 4 5 #ifndef FILE_SIGNAL_READER_H 6 #define FILE_SIGNAL_READER_H 7 8 #include "basic_header.h" 9 #include "base/signal_event.h" 10 #include "base/data_block.h" 11 #include "application_context_impl.h" 12 13 #include <QFile> 14 #include <QVector> 15 #include <QPointer> 16 #include <QSharedPointer> 17 #include <QPair> 18 19 class QString; 20 21 namespace sigviewer 22 { 23 24 //----------------------------------------------------------------------------- 25 /// FileSignalReader 26 /// 27 /// abstract base class for reading signals from a file 28 class FileSignalReader 29 { 30 public: 31 typedef QVector<SignalEvent> SignalEventVector; 32 ~FileSignalReader()33 virtual ~FileSignalReader() {} 34 35 virtual QPair<FileSignalReader*, QString> createInstance (QString const& file_path) = 0; 36 37 virtual QSharedPointer<DataBlock const> getSignalData (ChannelID channel_id, 38 size_t start_sample, 39 size_t length) const = 0; 40 41 virtual QList<QSharedPointer<SignalEvent const> > getEvents () const = 0; 42 43 virtual QSharedPointer<BasicHeader> getBasicHeader () = 0; 44 45 virtual QSharedPointer<BasicHeader const> getBasicHeader () const = 0; 46 47 int setEventTypeColors(); /*!< Set a distinct color for each event type. */ 48 49 protected: FileSignalReader()50 FileSignalReader () {} 51 52 private: 53 Q_DISABLE_COPY(FileSignalReader) 54 }; 55 56 } 57 58 #endif 59