summaryrefslogtreecommitdiff
path: root/src/metawatch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/metawatch.cpp')
-rw-r--r--src/metawatch.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/metawatch.cpp b/src/metawatch.cpp
index 9b0bae2..ff05aca 100644
--- a/src/metawatch.cpp
+++ b/src/metawatch.cpp
@@ -155,15 +155,33 @@ void MetaWatch::updateWidgetList(const QList<WidgetInfo> &widgets)
}
}
+void MetaWatch::clearModeImage(WatchMode mode, bool black)
+{
+ _transport->sendMessage(MessageLoadTemplate,
+ mode & 0x3,
+ QByteArray(1, black ? 1 : 0));
+}
+
void MetaWatch::sendModeImage(WatchMode mode, const QImage &image)
{
+ const int bytesPerLine = image.bytesPerLine();
Q_ASSERT(image.width() == 96 && image.height() == 96);
- Q_ASSERT(image.bytesPerLine() == 12);
- QByteArray data(1 + image.bytesPerLine(), '\0');//Qt::Uninitialized);
+ Q_ASSERT(bytesPerLine == 12);
+ QByteArray data(1 + bytesPerLine, '\0');
for (int i = 0; i < image.height(); i++) {
+ const uchar *scanline = image.scanLine(i);
+
+ bool empty = true;
+ for (int j = 0; j < bytesPerLine; j++) {
+ empty &= scanline[j] == 0;
+ }
+ if (empty) {
+ continue;
+ }
+
data[0] = i;
- memcpy(data.data() + 1, image.scanLine(i), image.bytesPerLine());
+ memcpy(data.data() + 1, scanline, bytesPerLine);
_transport->sendMessage(MessageWriteLcdBuffer,
0x10 | (mode & 0x3),