[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot] src/backend/datasources/filters: binary filter implementation continued
From: Stefan Gerlach <stefan.gerlach () uni-konstanz ! de>
Date: 2015-04-30 21:06:28
Message-ID: E1YnvfA-00048J-IM () scm ! kde ! org
[Download RAW message or body]
Git commit 9079b252782db30f534963772be45942e113febb by Stefan Gerlach.
Committed on 30/04/2015 at 21:06.
Pushed by sgerlach into branch 'master'.
binary filter implementation continued
M +17 -17 src/backend/datasources/filters/AsciiFilter.cpp
M +21 -5 src/backend/datasources/filters/BinaryFilter.cpp
M +13 -0 src/backend/datasources/filters/BinaryFilter.h
M +3 -0 src/backend/datasources/filters/BinaryFilterPrivate.h
http://commits.kde.org/labplot/9079b252782db30f534963772be45942e113febb
diff --git a/src/backend/datasources/filters/AsciiFilter.cpp \
b/src/backend/datasources/filters/AsciiFilter.cpp index ac02d96..22588b9 100644
--- a/src/backend/datasources/filters/AsciiFilter.cpp
+++ b/src/backend/datasources/filters/AsciiFilter.cpp
@@ -278,8 +278,8 @@ void AsciiFilterPrivate::read(const QString & fileName, \
AbstractDataSource* data if ( !file.exists() )
return;
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
- return;
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return;
QTextStream in(&file);
@@ -304,9 +304,9 @@ void AsciiFilterPrivate::read(const QString & fileName, \
AbstractDataSource* data }
//parse the first row:
- //use the first row to determine the number of columns,
+ //use the first row to determine the number of columns,
//create the columns and use (optionaly) the first row to name them
- if( in.atEnd() ) {
+ if( in.atEnd() ) {
if (mode==AbstractFileFilter::Replace) {
//file with no data to be imported. In replace-mode clear the spreadsheet
this->clearDataSource(dataSource);
@@ -317,7 +317,7 @@ void AsciiFilterPrivate::read(const QString & fileName, \
AbstractDataSource* data line = in.readLine();
if( simplifyWhitespacesEnabled)
line = line.simplified();
-
+
QString separator;
if( separatingCharacter == "auto" ){
QRegExp regExp("(\\s+)|(,\\s+)|(;\\s+)|(:\\s+)");
@@ -329,15 +329,15 @@ void AsciiFilterPrivate::read(const QString & fileName, \
AbstractDataSource* data if (lineStringList.size()>1){
int pos2 = line.indexOf(lineStringList.at(1));
separator = line.mid(length1, pos2-length1);
- }else{
+ }else {
separator = line.right(line.length()-length1);
- }
- }
- }else{
- separator = separatingCharacter.replace(QString("TAB"), QString("\t"), \
Qt::CaseInsensitive);
- separator = separatingCharacter.replace(QString("SPACE"), QString(" "), \
Qt::CaseInsensitive);
- lineStringList = line.split( separator, QString::SplitBehavior(skipEmptyParts) );
- }
+ }
+ }
+ }else {
+ separator = separatingCharacter.replace(QString("TAB"), QString("\t"), \
Qt::CaseInsensitive); + separator = separatingCharacter.replace(QString("SPACE"), \
QString(" "), Qt::CaseInsensitive); + lineStringList = line.split( separator, \
QString::SplitBehavior(skipEmptyParts) ); + }
// qDebug() << "separator '"<<separator << "'";
if (endColumn == -1)
@@ -495,11 +495,11 @@ void AsciiFilterPrivate::read(const QString & fileName, \
AbstractDataSource* data
currentRow++;
emit q->completed(100*currentRow/numLines);
- }
+ }
- //set the comments for each of the columns
- //TODO: generalize to different data types
- QString comment;
+ //set the comments for each of the columns
+ //TODO: generalize to different data types
+ QString comment;
if (headerEnabled)
comment = i18np("numerical data, %1 element", "numerical data, %1 elements", \
currentRow); else
diff --git a/src/backend/datasources/filters/BinaryFilter.cpp \
b/src/backend/datasources/filters/BinaryFilter.cpp index e4872c4..8a96412 100644
--- a/src/backend/datasources/filters/BinaryFilter.cpp
+++ b/src/backend/datasources/filters/BinaryFilter.cpp
@@ -98,7 +98,7 @@ BinaryFilter::ByteOrder BinaryFilter::byteOrder() const{
//#####################################################################
BinaryFilterPrivate::BinaryFilterPrivate(BinaryFilter* owner) :
- q(owner), dataFormat(BinaryFilter::UINT16), byteOrder(BinaryFilter::LittleEndian) {
+ q(owner), dataFormat(BinaryFilter::UINT16), byteOrder(BinaryFilter::LittleEndian), \
startByte(0), endByte(-1) { }
/*!
@@ -106,10 +106,26 @@ BinaryFilterPrivate::BinaryFilterPrivate(BinaryFilter* owner) :
Uses the settings defined in the data source.
*/
void BinaryFilterPrivate::read(const QString & fileName, AbstractDataSource* \
dataSource, AbstractFileFilter::ImportMode mode){
- Q_UNUSED(fileName);
- Q_UNUSED(dataSource);
- Q_UNUSED(mode);
- //TODO
+ Q_UNUSED(dataSource);
+ Q_UNUSED(mode);
+
+ QFile file(fileName);
+ if ( !file.exists() )
+ return;
+
+ if (!file.open(QIODevice::ReadOnly))
+ return;
+
+ QDataStream in(&file);
+
+ //TODO: skip bytes, if required
+ // if number of bytes is bigger than file ...
+ for (int i=0; i<startByte; i++){
+ qint8 tmp;
+ in >> tmp;
+ }
+
+ //TODO: see AsciiFilterPrivate::read()
}
/*!
diff --git a/src/backend/datasources/filters/BinaryFilter.h \
b/src/backend/datasources/filters/BinaryFilter.h index 0848dd8..5f8ab5d 100644
--- a/src/backend/datasources/filters/BinaryFilter.h
+++ b/src/backend/datasources/filters/BinaryFilter.h
@@ -49,7 +49,20 @@ class BinaryFilter : public AbstractFileFilter{
BinaryFilter::DataFormat dataFormat() const;
BinaryFilter::ByteOrder byteOrder() const;
+
+ void setStartByte(const int);
+ int startByte() const;
+ void setEndByte(const int);
+ int endByte() const;
+
+//TODO: or use start/end row?
+/* void setStartRow(const int);
+ int startRow() const;
+
+ void setEndRow(const int);
+ int endRow() const;
+*/
private:
BinaryFilterPrivate* const d;
friend class BinaryFilterPrivate;
diff --git a/src/backend/datasources/filters/BinaryFilterPrivate.h \
b/src/backend/datasources/filters/BinaryFilterPrivate.h index f018974..9cebf15 100644
--- a/src/backend/datasources/filters/BinaryFilterPrivate.h
+++ b/src/backend/datasources/filters/BinaryFilterPrivate.h
@@ -44,6 +44,9 @@ class BinaryFilterPrivate {
BinaryFilter::DataFormat dataFormat;
BinaryFilter::ByteOrder byteOrder;
+ int startByte;
+ int endByte;
+
private:
void clearDataSource(AbstractDataSource*) const;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic