[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