From 7aa2ceb05b4d58e15da43ce03dd06167debe88d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20HERVIER?= Date: Wed, 3 Mar 2021 21:41:11 +0100 Subject: [PATCH] apps: Add DualClock app. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BenoƮt HERVIER [daniel@redfelineninja.org.uk: Removed unused dual clock fonts from clock_dual.py, fixed up the manifest] Signed-off-by: Daniel Thompson --- README.rst | 4 + docs/apps.rst | 2 + res/DualApp.png | Bin 0 -> 6153 bytes res/clock_dual.png | Bin 0 -> 11352 bytes res/clock_dual_0.png | Bin 0 -> 5791 bytes res/clock_dual_1.png | Bin 0 -> 5679 bytes res/clock_dual_2.png | Bin 0 -> 5750 bytes res/clock_dual_3.png | Bin 0 -> 5818 bytes res/clock_dual_4.png | Bin 0 -> 5756 bytes res/clock_dual_5.png | Bin 0 -> 5779 bytes res/clock_dual_6.png | Bin 0 -> 5864 bytes res/clock_dual_7.png | Bin 0 -> 5720 bytes res/clock_dual_8.png | Bin 0 -> 5841 bytes res/clock_dual_9.png | Bin 0 -> 5854 bytes res/clock_dual_icon.png | Bin 0 -> 9590 bytes res/encode.sh | 5 + wasp/apps/dual_clock.py | 122 ++++++++++++++++++++ wasp/apps/software.py | 3 +- wasp/boards/manifest_240x240.py | 2 + wasp/fonts/clock_dual.py | 196 ++++++++++++++++++++++++++++++++ wasp/icons.py | 1 + 21 files changed, 334 insertions(+), 1 deletion(-) create mode 100644 res/DualApp.png create mode 100644 res/clock_dual.png create mode 100644 res/clock_dual_0.png create mode 100644 res/clock_dual_1.png create mode 100644 res/clock_dual_2.png create mode 100644 res/clock_dual_3.png create mode 100644 res/clock_dual_4.png create mode 100644 res/clock_dual_5.png create mode 100644 res/clock_dual_6.png create mode 100644 res/clock_dual_7.png create mode 100644 res/clock_dual_8.png create mode 100644 res/clock_dual_9.png create mode 100644 res/clock_dual_icon.png create mode 100644 wasp/apps/dual_clock.py create mode 100644 wasp/fonts/clock_dual.py diff --git a/README.rst b/README.rst index 11c3ad4..b6dbc0e 100644 --- a/README.rst +++ b/README.rst @@ -184,6 +184,10 @@ application (and the "blank" white screen is a torch application): :alt: Analogue clock application running in the wasp-os simulator :width: 179 +.. image:: res/DualApp.png + :alt: An other clock application running in the wasp-os simulator + :width: 179 + .. image:: res/FiboApp.png :alt: Fibonacci clock application running in the wasp-os simulator :width: 179 diff --git a/docs/apps.rst b/docs/apps.rst index a326006..01e1e16 100644 --- a/docs/apps.rst +++ b/docs/apps.rst @@ -13,6 +13,8 @@ Watch faces .. automodule:: apps.chrono +.. automodule:: apps.dual_clock + .. automodule:: apps.fibonacci_clock .. automodule:: apps.word_clock diff --git a/res/DualApp.png b/res/DualApp.png new file mode 100644 index 0000000000000000000000000000000000000000..395bb26855d80959e4cf352eeae412780c19c177 GIT binary patch literal 6153 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 literal 0 HcmV?d00001 diff --git a/res/clock_dual_3.png b/res/clock_dual_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b69b2e2e97116eb4950d55ba432f93850cf70c68 GIT binary patch literal 5818 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 literal 0 HcmV?d00001 diff --git a/res/clock_dual_4.png b/res/clock_dual_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e22d07918f6bab6fdebde8448cb0e16359e6e31c GIT binary patch literal 5756 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 BL;wH) literal 0 HcmV?d00001 diff --git a/res/clock_dual_5.png b/res/clock_dual_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ba14b814b873e4e2989ff704a9b863ff370ed233 GIT binary patch literal 5779 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 Loz<<>z7Y3co>za* literal 0 HcmV?d00001 diff --git a/res/clock_dual_7.png b/res/clock_dual_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb5eb6fb5e4f0ba5c81cd55fa48c4d35c47c43c GIT binary patch literal 5720 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\x07D\x10\xc3>C\t' + b'C\x10\xc3>C\tC\x10\xc3>C\tC\x0f\xc4>' + b'C\tC\x0e\xc4?\x00C\tC\r\xc5?\x00C\t' + b'C\x0c\xc5?\x01C\tC\x0b\xc5?\x02C\tC\n' + b'\xc5?\x03C\tC\t\xc5?\x04D\x07D\x08\xc4?' + b'\x07C\x07C\x08\xc4?\x08C\x06D\x07\xc4?\nD' + b'\x03D\x07\xc3?\x0cK\x06\xcf?\x02I\x07\xcf?\x04' + b'E\t\xcf?\xff\xff\xe4' + ) + _min = None + + def foreground(self): + """Activate the application. + + Configure the status bar, redraw the display and request a periodic + tick callback every second. + """ + wasp.system.bar.clock = False + self._draw(True) + wasp.system.request_tick(1000) + + def sleep(self): + """Prepare to enter the low power mode. + + :returns: True, which tells the system manager not to automatically + switch to the default application before sleeping. + """ + return True + + def wake(self): + """Return from low power mode. + + Time will have changes whilst we have been asleep so we must + udpate the display (but there is no need for a full redraw because + the display RAM is preserved during a sleep. + """ + self._draw() + + def tick(self, ticks): + """Periodic callback to update the display.""" + self._draw() + + def _draw(self, redraw=False): + """Draw or lazily update the display. + + The updates are as lazy by default and avoid spending time redrawing + if the time on display has not changed. However if redraw is set to + True then a full redraw is be performed. + """ + draw = wasp.watch.drawable + hi = wasp.system.theme('bright') + lo = wasp.system.theme('mid') + + if redraw: + now = wasp.watch.rtc.get_localtime() + + # Clear the display and draw that static parts of the watch face + draw.fill() + #draw.blit(digits.clock_colon, 2*48, 80, fg=mid) + + # Redraw the status bar + wasp.system.bar.draw() + else: + # The update is doubly lazy... we update the status bar and if + # the status bus update reports a change in the time of day + # then we compare the minute on display to make sure we + # only update the main clock once per minute. + now = wasp.system.bar.update() + if not now or self._min == now[4]: + # Skip the update + return + + # Draw the changeable parts of the watch face + draw.blit(DIGITS[now[4] % 10], 40 + 1*90, 140, fg=hi) + draw.blit(DIGITS[now[4] // 10], 40 + 0*90, 140, fg=hi) + draw.blit(DIGITS[now[3] % 10], 40 + 1*90, 40, fg=lo) + draw.blit(DIGITS[now[3] // 10], 40 + 0*90, 40, fg=lo) + #draw.roundRect(25, 135, 180, 100, 5, lo) + # Record the minute that is currently being displayed + self._min = now[4] diff --git a/wasp/apps/software.py b/wasp/apps/software.py index c86cf3d..bc345b5 100644 --- a/wasp/apps/software.py +++ b/wasp/apps/software.py @@ -17,6 +17,7 @@ whilst still allowing users to activate so many awesome applications! import wasp import icons + class SoftwareApp(): """Enable and disable applications.""" NAME = 'Software' @@ -34,12 +35,12 @@ class SoftwareApp(): y = 0 return cb - y = 0 db = [] db.append(('alarm', factory('Alarm'))) db.append(('calc', factory('Calculator'))) db.append(('chrono', factory('Chrono'))) + db.append(('dual_clock', factory('Dual Clock'))) db.append(('fibonacci_clock', factory('Fibonacci Clock'))) db.append(('gameoflife', factory('Game Of Life'))) db.append(('musicplayer', factory('Music Player'))) diff --git a/wasp/boards/manifest_240x240.py b/wasp/boards/manifest_240x240.py index 5f88630..048837c 100644 --- a/wasp/boards/manifest_240x240.py +++ b/wasp/boards/manifest_240x240.py @@ -7,6 +7,7 @@ manifest = ( 'apps/calc.py', 'apps/clock.py', 'apps/chrono.py', + 'apps/dual_clock.py', 'apps/fibonacci_clock.py', 'apps/flashlight.py', 'apps/gameoflife.py', @@ -26,6 +27,7 @@ manifest = ( 'apps/word_clock.py', 'fonts/__init__.py', 'fonts/clock.py', + 'fonts/clock_dual.py', 'fonts/sans24.py', 'fonts/sans28.py', 'fonts/sans36.py', diff --git a/wasp/fonts/clock_dual.py b/wasp/fonts/clock_dual.py new file mode 100644 index 0000000..5c1ab9e --- /dev/null +++ b/wasp/fonts/clock_dual.py @@ -0,0 +1,196 @@ +# 1-bit RLE, generated from clock_dual_0.png, 321 bytes +clock_dual_0 = ( + 72, 90, + b'\x17\x0f7\x151\x19-\x1d)!&#$%"\'' + b' )\x1f)\x1e\x11\t\x11\x1c\x10\r\x10\x1b\x0f\x0f\x0f' + b'\x1a\x0f\x11\x0f\x19\x0e\x13\x0e\x18\x0e\x14\x0f\x17\r\x16\x0e' + b'\x16\x0e\x17\r\x16\r\x18\r\x15\x0e\x18\x0e\x14\x0e\x19\x0e' + b'\x13\x0e\x19\x0e\x13\r\x1a\x0e\x13\x0c\x1c\r\x12\r\x1c\x0e' + b'\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r' + b'\x11\r\x1d\r\x11\r\x1d\r\x10\x0e\x1d\x0e\x0e\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\x0e\x0e\x1d\x0e\x10\r\x1d\r\x11\r\x1d\r' + b'\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r' + b'\x11\r\x1c\x0e\x12\x0c\x1c\r\x13\r\x1a\x0e\x13\x0e\x19\x0e' + b'\x13\x0e\x19\x0e\x13\x0e\x18\x0f\x14\r\x18\x0e\x15\x0e\x17\x0e' + b'\x16\r\x16\x0e\x17\x0e\x14\x0f\x18\x0e\x13\x0e\x19\x0f\x11\x0f' + b'\x1a\x0f\x0f\x0f\x1b\x10\r\x10\x1c\x11\t\x11\x1e)\x1f)' + b' \'"%$#&!)\x1d,\x1a/\x175\x11' + b' ' +) +# 1-bit RLE, generated from clock_dual_1.png, 187 bytes +clock_dual_1 = ( + 72, 90, + b"c\x0f4\x151\x17*\x1e( '!'!'!" + b"'!'!'\x12\x01\x0e'\x10\x03\x0e'\x0b\x08\x0e" + b"'\x04\x0f\x0e(\x02\x10\x0e:\x0e:\x0e:\x0e:\x0e" + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e)0\x172\x162\x162\x162' + b'\x162\x162\x162\x162\x170T' +) +# 1-bit RLE, generated from clock_dual_2.png, 195 bytes +clock_dual_2 = ( + 72, 90, + b"\x14\x14/\x1e&$#'\x1d-\x1a/\x181\x172" + b'\x163\x154\x14\x14\r\x14\x13\x0f\x16\x11\x12\r\x19\x11' + b'\x11\x0b\x1c\x10\x11\t\x1f\x10\x10\x07"\x0f\x10\x05%\x0f' + b'\x0f\x03(\x0e:\x0e;\x0e;\r;\r;\r;\r' + b';\r;\r;\r;\r;\r:\x0e:\r:\x0e' + b':\x0e:\x0e9\x0e9\x0e:\x0e9\x0f9\x0e9\x0f' + b'8\x0f8\x0f8\x0f9\x0f8\x0f8\x107\x107\x10' + b'7\x107\x107\x107\x107\x107\x107\x107\x10' + b'7\x107\x107\x107\x107\x107\x107\x107\x10' + b'7\x107\x107\x107\x107\x107\x107\x107\x10' + b'7\x107\x107\x107\x107\x107\x107\x107:' + b'\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:' + b'\x0e:R' +) +# 1-bit RLE, generated from clock_dual_3.png, 205 bytes +clock_dual_3 = ( + 72, 90, + b'\x14\x12/\x1f&$"\'\x1f,\x1b.\x1a/\x190' + b'\x181\x172\x16\x10\x0f\x14\x15\x0b\x18\x10\x15\t\x1b\x0f' + b'\x15\x06\x1f\x0f\x14\x03#\x0f:\x0e:\x0e;\r;\x0e' + b';\r;\r;\r;\r;\r;\r;\r;\r' + b';\r:\x0e9\x0e:\x0e9\x0f8\x0f8\x106\x11' + b"3\x143\x14$#$#%!'\x1f)\x1d+\x1d" + b"+\x1f)!'#\x145\x148\x119\x10" + b'9\x0f:\x0f:\x0e:\x0f:\x0e;\r;\r;\x0e' + b';\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b":\x0e:\x0e9\x0f9\x0e9\x0e:\x0e\x10\x02'\x0f" + b'\x0f\x05%\x0f\x0f\x06#\x0f\x10\t\x1f\x10\x10\x0b\x1b\x11' + b'\x11\x0c\x18\x13\x11\x12\x0e\x16\x125\x134\x143\x152' + b'\x161\x18/\x1a+\x1e)$"-\x15"' +) +# 1-bit RLE, generated from clock_dual_4.png, 261 bytes +clock_dual_4 = ( + 72, 90, + b'l\x0e9\x0f8\x107\x116\x126\x125\x135\x13' + b'5\x134\x143\x152\x162\x161\x170\x18/\x0b' + b'\x01\r/\n\x02\r/\n\x02\r.\x0b\x02\r-\x0b' + b'\x03\r-\n\x04\r,\n\x05\r+\x0b\x05\r+\n' + b'\x06\r*\x0b\x06\r*\n\x07\r)\x0b\x07\r(\x0b' + b"\x08\r'\x0b\t\r'\x0b\t\r&\x0b\n\r%\x0b" + b'\x0b\r%\x0b\x0b\r$\x0c\x0b\r$\x0b\x0c\r#\x0c' + b'\x0c\r#\x0b\r\r"\x0b\x0e\r!\x0b\x0f\r \x0c' + b'\x0f\r \x0b\x10\r \x0b\x10\r\x1f\x0b\x11\r\x1e\x0c' + b'\x11\r\x1d\x0c\x12\r\x1d\x0b\x13\r\x1c\x0b\x14\r\x1c\x0b' + b'\x14\r\x1b\x0c\x14\r\x1b\x0b\x15\r\x1a\x0c\x15\r\x19\x0c' + b'\x16\r\x18\x0c\x17\r\x18\x0c\x17\r\x17\r\x17\r\x17\x0c' + b'\x18\r\x17\x0b\x19\r\x17=\x0b=\x0b=\x0b=\x0b=' + b'\x0b=\x0b=\x0b=\x0b=\x0b=/\r;\r;\r' + b';\r;\r;\r;\r;\r;\r;\r;\r' + b';\r;\r;\r;\r;\r;\r;\r;\r' + b';\r;\r^' +) +# 1-bit RLE, generated from clock_dual_5.png, 205 bytes +clock_dual_5 = ( + 72, 90, + b'Q/\x180\x180\x180\x180\x180\x180\x180' + b'\x180\x180\x18\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e:\x0e' + b':\x0e:\x0e:\x0e:\x0e:\x0e\x03\r*\x0e\x01\x11' + b"(%#'!)\x1f*\x1e,\x1c-\x1b.\x1a/" + b'\x190\x18\x0c\x0e\x16\x18\x06\x18\x13\x17\x05\x1b\x12\x17\x02' + b'\x1f\x118\x109\x0f:\x0f:\x0f9\x0f9\x0f:\x0e' + b':\x0e:\x0f:\x0e:\x0e;\r;\r;\r;\r' + b';\r;\r;\r;\r;\r;\r:\x0e:\x0e' + b"9\x0f9\x0e:\x0e9\x0f9\x0e:\x0e\x10\x02'\x0e" + b'\x11\x03%\x0f\x11\x04#\x0f\x12\x07\x1f\x10\x12\n\x1a\x11' + b'\x13\x0c\x16\x13\x13\x11\r\x16\x143\x152\x161\x170' + b'\x18/\x19.\x1b* \'$"-\x15"' +) +# 1-bit RLE, generated from clock_dual_6.png, 287 bytes +clock_dual_6 = ( + 72, 90, + b'\x1c\x122\x1b+\x1f\'"$%"&!\' (' + b'\x1f)\x1e*\x1d\x14\x0b\x0c\x1c\x11\x15\x06\x1b\x10\x18\x05' + b'\x1b\x0e\x1c\x02\x1b\x0e9\x0e9\x0e:\r;\x0c<\x0c' + b';\x0c<\x0c;\x0c<\x0c<\x0c;\r;\x0c<\x0c' + b'<\x0c<\x0c\x0c\x0c$\x0c\n\x0f#\x0b\x07\x17\x1e\x0b' + b'\x07\x1a\x1c\x0b\x06\x1d\x19\x0c\x04 \x18\x0c\x03#\x16\x0c' + b"\x02%\x15\x0c\x01'\x145\x135\x13\x19\n\x13\x12\x17" + b'\x0f\x11\x11\x16\x11\x10\x11\x15\x13\x10\x10\x14\x15\x0f\x10\x13' + b'\x17\x0e\x10\x12\x19\x0e\x0f\x12\x1a\r\x0f\x11\x1b\r\x0f\x11' + b'\x1b\r\x0f\x11\x1b\x0e\x0e\x11\x1b\x0e\x0e\x10\x1c\x0f\r\x0f' + b'\x1e\x0e\r\x0f\x1e\x0e\r\x0f\x1e\x0e\r\x0f\x1e\x0e\r\x0f' + b'\x1e\x0e\x0e\x0e\x1e\x0e\x0f\r\x1e\x0e\x0f\r\x1e\x0e\x0f\r' + b'\x1e\x0e\x0f\r\x1e\x0e\x0f\r\x1e\x0e\x0f\r\x1e\x0e\x0f\r' + b'\x1e\x0e\x0f\r\x1e\x0e\x0f\x0e\x1c\x0f\x10\x0e\x1b\x0e\x11\x0e' + b'\x1b\x0e\x11\x0e\x1b\r\x13\r\x1b\r\x13\x0e\x1a\r\x14\r' + b'\x19\x0e\x14\x0e\x17\x0e\x15\x0f\x15\x0f\x15\x10\x13\x0f\x17\x10' + b'\x11\x0f\x19\x10\x0f\x10\x1a\x11\n\x13\x1a-\x1c+\x1e)' + b' \'"%$#\' *\x1c.\x184\x10\x1f' +) +# 1-bit RLE, generated from clock_dual_7.png, 177 bytes +clock_dual_7 = ( + 72, 90, + b'K9\x0e;\r;\r;\r;\r;\r;\r:' + b'\x0e:\x0f8:\x0e:\r:\x0e:\x0e:\x0e9\x0e' + b':\r;\r:\x0e9\x0e:\x0e:\x0e:\r:\x0e' + b':\r:\x0e:\r:\x0e:\x0e9\x0f9\x0e:\r' + b';\r:\x0e9\x0e:\x0e9\x0f9\x0e:\x0e:\r' + b':\x0e:\x0e9\x0f9\x0e9\x0f9\x0e:\r;\r' + b':\x0e9\x0f9\x0e9\x0f9\x0e:\x0e:\r:\x0e' + b':\x0e9\x0f9\x0e9\x0f9\x0e:\r;\r:\x0e' + b'9\x0f9\x0e9\x0f9\x0e:\x0e:\r:\x0e:\x0e' + b'9\x0f9\x0e9\x0f9\x0e:\r;\r:\x0e9\x0f' + b'9\x0e9\x0f9\x0e:\x0e:\r:\x0e:\x0e:\x0e' + b's' +) +# 1-bit RLE, generated from clock_dual_8.png, 301 bytes +clock_dual_8 = ( + 72, 90, + b"\x17\x112\x1b+\x1f'##&!)\x1e+\x1c-" + b'\x1a/\x180\x18\x13\x0b\x13\x16\x11\x11\x11\x15\x10\x13\x10' + b'\x14\x10\x15\x10\x13\x0f\x17\x0f\x13\x0e\x19\x0e\x12\x0f\x19\x0f' + b'\x11\x0e\x1b\x0e\x11\x0e\x1b\x0e\x11\r\x1d\r\x11\r\x1d\r' + b'\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r' + b'\x11\r\x1d\r\x11\r\x1d\r\x11\r\x1d\r\x11\x0e\x1b\x0e' + b'\x12\x0e\x19\x0e\x13\x0e\x19\x0e\x14\x0e\x17\x0e\x16\r\x17\r' + b'\x17\r\x17\r\x17\x10\x11\x10\x18\x11\r\x11\x1a\x11\x0b\x11' + b'\x1c+\x1e\'#$&!*\x1b,\x1d\'%"\'' + b' )\x1d,\x1b\x12\x0b\x11\x1a\x11\r\x11\x18\x10\x11\x10' + b'\x16\x0e\x17\x0e\x15\r\x19\r\x14\x0e\x19\x0e\x13\r\x1b\r' + b'\x12\x0e\x1b\x0e\x11\r\x1d\r\x11\r\x1d\r\x11\x0c\x1e\r' + b'\x10\r\x1e\x0e\x0e\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e\r\x0e\x1f\x0e' + b'\r\x0f\x1d\x0f\x0e\x0e\x1d\x0e\x0f\x0e\x1d\x0e\x10\x0e\x1b\x0e' + b'\x11\x0f\x19\x0f\x11\x0f\x19\x0f\x11\x10\x17\x10\x12\x11\x13\x11' + b'\x13\x12\x11\x12\x14\x14\x0b\x14\x161\x18/\x1a-\x1c+' + b"\x1e) '##'\x1f+\x1b2\x11 " +) +# 1-bit RLE, generated from clock_dual_9.png, 287 bytes +clock_dual_9 = ( + 72, 90, + b"\x16\x104\x18.\x1c* '##&!(\x1f*" + b'\x1d,\x1c-\x1a\x13\n\x11\x19\x11\x0f\x10\x18\x10\x11\x0f' + b'\x17\x10\x13\x0f\x16\x0f\x15\x0e\x16\x0e\x17\x0e\x14\x0e\x19\r' + b'\x14\r\x1a\x0e\x13\r\x1b\r\x13\r\x1b\x0e\x11\x0e\x1b\x0e' + b'\x11\x0e\x1b\x0e\x10\x0f\x1c\x0e\x0f\x0e\x1e\r\x0f\x0e\x1e\r' + b'\x0f\x0e\x1e\r\x0f\x0e\x1e\r\x0f\x0e\x1e\r\x0f\x0e\x1e\r' + b'\x0f\x0e\x1e\r\x0f\x0e\x1e\r\x0f\x0e\x1e\x0e\x0e\x0e\x1e\x0f' + b'\r\x0e\x1e\x0f\r\x0e\x1e\x0f\r\x0e\x1e\x0f\r\x0e\x1e\x0f' + b'\r\x0e\x1d\x10\x0e\r\x1c\x11\x0e\x0e\x1b\x11\x0f\r\x1b\x11' + b'\x0f\r\x1b\x11\x0f\r\x1a\x12\x0f\x0e\x19\x12\x10\x0e\x17\x13' + b'\x10\x0f\x15\x14\x10\x0f\x14\x15\x11\x10\x11\x16\x11\x11\x0f\x17' + b"\x12\x13\n\x19\x135\x135\x14'\x01\x0c\x15%\x02\x0c" + b'\x16#\x03\x0c\x18 \x04\x0c\x19\x1d\x06\x0b\x1c\x1a\x07\x0b' + b'\x1e\x17\x07\x0b#\x0f\n\x0c$\x0c\x0c\x0c<\x0c<\x0c' + b'<\x0c;\r;\x0c<\x0c<\x0c;\x0c<\x0c;\x0c' + b'<\x0c;\r:\x0e9\x0e9\x0e\x1b\x02\x1c\x0e\x1b\x05' + b'\x18\x10\x1b\x06\x15\x11\x1c\n\x0f\x12\x1d*\x1e)\x1f(' + b' \'!&"%$"& )\x1d2\x12%' +) diff --git a/wasp/icons.py b/wasp/icons.py index 4c2d672..30c5774 100644 --- a/wasp/icons.py +++ b/wasp/icons.py @@ -302,3 +302,4 @@ checkbox = ( b'F\x85O\xc6G\x83P\xc6H\x81Q\xc6Z\xc6Z\xc6' b'Z\xc7X\xe4\x01\xde\x03\xdc\x02' ) +