summaryrefslogtreecommitdiffstats
path: root/blinken/src/number.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'blinken/src/number.cpp')
-rw-r--r--blinken/src/number.cpp196
1 files changed, 196 insertions, 0 deletions
diff --git a/blinken/src/number.cpp b/blinken/src/number.cpp
new file mode 100644
index 00000000..230d23ce
--- /dev/null
+++ b/blinken/src/number.cpp
@@ -0,0 +1,196 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
+ * *
+ * 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 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qpainter.h>
+
+#include "number.h"
+
+const int number::m_number0[20] = {1, 0, 0, 2,
+ 0, 5, 5, 0,
+ 0, 5, 5, 0,
+ 0, 5, 5, 0,
+ 4, 0, 0, 3};
+
+const int number::m_number1[20] = {5, 1, 0, 5,
+ 5, 5, 0, 5,
+ 5, 5, 0, 5,
+ 5, 5, 0, 5,
+ 5, 5, 0, 5};
+
+const int number::m_number2[20] = {0, 0, 0, 2,
+ 5, 5, 5, 0,
+ 1, 0, 0, 3,
+ 0, 5, 5, 5,
+ 0, 0, 0, 0};
+
+const int number::m_number3[20] = {0, 0, 0, 2,
+ 5, 5, 5, 0,
+ 5, 0, 0, 3,
+ 5, 5, 5, 2,
+ 0, 0, 0, 3};
+
+
+const int number::m_number4[20] = {0, 5, 5, 0,
+ 0, 5, 5, 0,
+ 0, 5, 5, 0,
+ 4, 0, 0, 0,
+ 5, 5, 5, 0};
+
+const int number::m_number5[20] = {0, 0, 0, 0,
+ 0, 5, 5, 5,
+ 4, 0, 0, 2,
+ 5, 5, 5, 0,
+ 0, 0, 0, 3};
+
+const int number::m_number6[20] = {1, 0, 0, 0,
+ 0, 5, 5, 5,
+ 0, 0, 0, 2,
+ 0, 5, 5, 0,
+ 4, 0, 0, 3};
+
+const int number::m_number7[20] = {0, 0, 0, 2,
+ 5, 5, 5, 0,
+ 5, 5, 5, 0,
+ 5, 5, 5, 0,
+ 5, 5, 5, 0};
+
+const int number::m_number8[20] = {1, 0, 0, 2,
+ 0, 5, 5, 0,
+ 4, 0, 0, 3,
+ 1, 5, 5, 2,
+ 4, 0, 0, 3};
+
+const int number::m_number9[20] = {1, 0, 0, 2,
+ 0, 5, 5, 0,
+ 4, 0, 0, 3,
+ 5, 5, 5, 0,
+ 0, 0, 0, 3};
+
+number::number(int n)
+{
+ m_number = n;
+}
+
+void number::paint(QPainter &p, int digits) const
+{
+ int nDigits, digit, number;
+ nDigits = 0;
+ number = m_number;
+
+ while(nDigits < digits || number != 0)
+ {
+ digit = number % 10;
+ number /= 10;
+ paintDigit(p, digit);
+ nDigits++;
+ p.translate(-30, 0);
+ }
+ p.translate(30 * nDigits, 0);
+}
+
+void number::paintDigit(QPainter &p, int number) const
+{
+ // make gcc happy
+ const int *n = m_number0;
+ int shape;
+
+ switch (number)
+ {
+ case 1:
+ n = m_number1;
+ break;
+
+ case 2:
+ n = m_number2;
+ break;
+
+ case 3:
+ n = m_number3;
+ break;
+
+ case 4:
+ n = m_number4;
+ break;
+
+ case 5:
+ n = m_number5;
+ break;
+
+ case 6:
+ n = m_number6;
+ break;
+
+ case 7:
+ n = m_number7;
+ break;
+
+ case 8:
+ n = m_number8;
+ break;
+
+ case 9:
+ n = m_number9;
+ break;
+ }
+
+ p.setBrush(Qt::red);
+ p.setPen(Qt::red);
+ for (int i = 0; i < 5; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ shape = n[j + i * 4];
+ if (shape == 0)
+ {
+ p.fillRect(7 * (j-1), 7 * (i-1), 6, 6, Qt::red);
+ }
+ else if (shape != 5)
+ {
+ if (shape == 1) p.translate(7 * (j-1), 7 * (i-1));
+ else if (shape == 2)
+ {
+ p.translate(7 * j - 2, 7 * (i-1));
+ p.rotate(90);
+ }
+ else if (shape == 3)
+ {
+ p.translate(7 * j - 2, 7 * i - 2);
+ p.rotate(180);
+ }
+ else if (shape == 4)
+ {
+ p.translate(7 * (j-1), 7 * i - 2);
+ p.rotate(270);
+ }
+
+ p.drawPie(0, 0, 11, 11, 90 * 16, 16 * 90);
+
+ if (shape == 1) p.translate(-7 * (j-1), -7 * (i-1));
+ else if (shape == 2)
+ {
+ p.rotate(-90);
+ p.translate(-(7 * j - 2), -7 * (i-1));
+
+ }
+ else if (shape == 3)
+ {
+ p.rotate(-180);
+ p.translate(-(7 * j - 2), -(7 * i - 2));
+ }
+ else if (shape == 4)
+ {
+ p.rotate(-270);
+ p.translate(- (7 * (j-1)), -(7 * i - 2));
+ }
+ }
+ }
+ }
+}