From 66dd35254724ec5d4471a8be71f92e06cf0fa8e8 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 12 Sep 2021 01:36:41 +0200 Subject: add ability to export a stroke list in plain text --- stftxtexport.cc | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 stftxtexport.cc (limited to 'stftxtexport.cc') 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 + * + * 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 . + */ + +#include +#include +#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; + } + } +} -- cgit v1.2.3