diff options
author | Javier <dev.git@javispedro.com> | 2021-09-12 01:36:41 +0200 |
---|---|---|
committer | Javier <dev.git@javispedro.com> | 2021-09-12 01:36:41 +0200 |
commit | 66dd35254724ec5d4471a8be71f92e06cf0fa8e8 (patch) | |
tree | 1918dcca44dd75108d442bf173b58419ab41a518 /stftxtexport.cc | |
parent | 8333259e49fc2961cab0939e3d937167d38a9f9d (diff) | |
download | scribiu-66dd35254724ec5d4471a8be71f92e06cf0fa8e8.tar.gz scribiu-66dd35254724ec5d4471a8be71f92e06cf0fa8e8.zip |
add ability to export a stroke list in plain text
Diffstat (limited to 'stftxtexport.cc')
-rw-r--r-- | stftxtexport.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/stftxtexport.cc b/stftxtexport.cc new file mode 100644 index 0000000..0163848 --- /dev/null +++ b/stftxtexport.cc @@ -0,0 +1,79 @@ +/* + * scribiu -- read notebooks and voice memos from Livescribe pens + * Copyright (C) 2021 Javier S. Pedro <javier@javispedro.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <QtCore/QDebug> +#include <QtCore/QTextStream> +#include "stftxtexport.h" + +class StfToTxtStrokeList : public StfReader::StrokeHandler { + QTextStream _out; + QPoint _lastP; + qint64 _lastTime; + +public: + StfToTxtStrokeList(QIODevice *out) + : _out(out) { + } + + bool startStroke(const QPoint& p, int force, qint64 time) { + _out << time << " penDown " << p.x() << ' ' << p.y() << ' ' << force << '\n'; + _lastP = p; + _lastTime = time; + return true; + } + + bool strokePoint(const QPoint& p, int force, qint64 time) { + _out << time << " penMove " << p.x() << ' ' << p.y() << ' ' << force << '\n'; + _lastP = p; + _lastTime = time; + return true; + } + + bool endStroke(qint64 time) { + _out << time << " penUp " << _lastP.x() << ' ' << _lastP.y() << ' ' << 0 << '\n'; + return true; + } +}; + +StfTxtExport::StfTxtExport(AfdNotebook *nb) + : _nb(nb) +{ +} + +void StfTxtExport::exportStrokeList(QIODevice *out, int pageNum) +{ + QStringList pens = _nb->penSerials(); + if (pens.isEmpty()) return; + + QStringList strokeFiles = _nb->strokeFiles(pens.first(), pageNum); + foreach (const QString &strokeFile, strokeFiles) { + QFile in(strokeFile); + if (!in.open(QIODevice::ReadOnly)) { + qWarning() << "Could not open stroke file:" << strokeFile; + continue; + } + + StfToTxtStrokeList h(out); + StfReader r; + r.setStrokeHandler(&h); + if (!r.parse(&in)) { + qWarning() << "Could not open parse file:" << strokeFile; + continue; + } + } +} |