apps: Add DualClock app.
Signed-off-by: Benoît HERVIER <b@rvier.fr> [daniel@redfelineninja.org.uk: Removed unused dual clock fonts from clock_dual.py, fixed up the manifest] Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
|
@ -184,6 +184,10 @@ application (and the "blank" white screen is a torch application):
|
||||||
:alt: Analogue clock application running in the wasp-os simulator
|
:alt: Analogue clock application running in the wasp-os simulator
|
||||||
:width: 179
|
:width: 179
|
||||||
|
|
||||||
|
.. image:: res/DualApp.png
|
||||||
|
:alt: An other clock application running in the wasp-os simulator
|
||||||
|
:width: 179
|
||||||
|
|
||||||
.. image:: res/FiboApp.png
|
.. image:: res/FiboApp.png
|
||||||
:alt: Fibonacci clock application running in the wasp-os simulator
|
:alt: Fibonacci clock application running in the wasp-os simulator
|
||||||
:width: 179
|
:width: 179
|
||||||
|
|
|
@ -13,6 +13,8 @@ Watch faces
|
||||||
|
|
||||||
.. automodule:: apps.chrono
|
.. automodule:: apps.chrono
|
||||||
|
|
||||||
|
.. automodule:: apps.dual_clock
|
||||||
|
|
||||||
.. automodule:: apps.fibonacci_clock
|
.. automodule:: apps.fibonacci_clock
|
||||||
|
|
||||||
.. automodule:: apps.word_clock
|
.. automodule:: apps.word_clock
|
||||||
|
|
BIN
res/DualApp.png
Normal file
After Width: | Height: | Size: 6 KiB |
BIN
res/clock_dual.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
res/clock_dual_0.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
res/clock_dual_1.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
res/clock_dual_2.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
res/clock_dual_3.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
res/clock_dual_4.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
res/clock_dual_5.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
res/clock_dual_6.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
res/clock_dual_7.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
res/clock_dual_8.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
res/clock_dual_9.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
res/clock_dual_icon.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
|
@ -8,4 +8,9 @@ done
|
||||||
convert clock.png -crop 48x60+$((9*48))+0 clock_0.png
|
convert clock.png -crop 48x60+$((9*48))+0 clock_0.png
|
||||||
convert clock.png -crop 48x60+$((11*48))+0 clock_colon.png
|
convert clock.png -crop 48x60+$((11*48))+0 clock_colon.png
|
||||||
|
|
||||||
|
for i in `seq 9`
|
||||||
|
do
|
||||||
|
convert clock_dual.png -crop 72x90+$((i*72 - 72))+0 clock_dual_$i.png
|
||||||
|
done
|
||||||
|
convert clock_dual.png -crop 72x90+$((9*72))+0 clock_dual_0.png
|
||||||
# Encode the clock digits
|
# Encode the clock digits
|
||||||
|
|
122
wasp/apps/dual_clock.py
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
# Copyright (C) 2020 Daniel Thompson
|
||||||
|
|
||||||
|
"""Digital dual clock
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Shows a time (as HH and MM vertically) together with a battery meter.
|
||||||
|
|
||||||
|
.. figure:: res/DualApp.png
|
||||||
|
:width: 179
|
||||||
|
"""
|
||||||
|
|
||||||
|
import wasp
|
||||||
|
|
||||||
|
import icons
|
||||||
|
import fonts.clock_dual as digits
|
||||||
|
|
||||||
|
DIGITS = (
|
||||||
|
digits.clock_dual_0, digits.clock_dual_1, digits.clock_dual_2, digits.clock_dual_3,
|
||||||
|
digits.clock_dual_4, digits.clock_dual_5, digits.clock_dual_6, digits.clock_dual_7,
|
||||||
|
digits.clock_dual_8, digits.clock_dual_9
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class DualClockApp():
|
||||||
|
"""Simple digital clock application."""
|
||||||
|
NAME = 'Dual'
|
||||||
|
# 2-bit RLE, generated from clock_dual_icon.png, 298 bytes
|
||||||
|
ICON = (
|
||||||
|
b'\x02'
|
||||||
|
b'`@'
|
||||||
|
b'?\xff\xc1@\xacF\r\xc6?\x06H\x0b\xca?\x04H'
|
||||||
|
b'\n\xcc?\x03C\x02C\n\xc4\x05\xc4?\x07C\t\xc4'
|
||||||
|
b'\x07\xc3?\x07C\t\xc3\t\xc2?\x07C\t\xc3\t\xc3'
|
||||||
|
b'?\x06C\t\xc3\t\xc3?\x06C\t\xc3\t\xc3?\x06'
|
||||||
|
b'C\t\xc4\x07\xc4?\x06C\n\xc4\x05\xc5?\x06C\n'
|
||||||
|
b'\xca\x01\xc3?\x06C\x0b\xc9\x01\xc3?\x06C\r\xc5\x03'
|
||||||
|
b'\xc3?\x06C\x15\xc3?\x06C\x14\xc4?\x06C\x14\xc3'
|
||||||
|
b'?\x07C\x14\xc3?\x07C\x13\xc4?\x07C\x0b\xc1\x05'
|
||||||
|
b'\xc5?\x03M\x06\xca?\x04M\x06\xc9?\x05M\x07\xc6'
|
||||||
|
b'?\xff\xedE\x0b\xc8?\x07I\x07\xcc?\x04K\x06\xce'
|
||||||
|
b'?\x02D\x03D\x06\xc2\x08\xc4?\x01D\x05D\x10\xc4'
|
||||||
|
b'?\x00C\x07C\x11\xc3>D\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]
|
|
@ -17,6 +17,7 @@ whilst still allowing users to activate so many awesome applications!
|
||||||
import wasp
|
import wasp
|
||||||
import icons
|
import icons
|
||||||
|
|
||||||
|
|
||||||
class SoftwareApp():
|
class SoftwareApp():
|
||||||
"""Enable and disable applications."""
|
"""Enable and disable applications."""
|
||||||
NAME = 'Software'
|
NAME = 'Software'
|
||||||
|
@ -34,12 +35,12 @@ class SoftwareApp():
|
||||||
y = 0
|
y = 0
|
||||||
return cb
|
return cb
|
||||||
|
|
||||||
|
|
||||||
y = 0
|
y = 0
|
||||||
db = []
|
db = []
|
||||||
db.append(('alarm', factory('Alarm')))
|
db.append(('alarm', factory('Alarm')))
|
||||||
db.append(('calc', factory('Calculator')))
|
db.append(('calc', factory('Calculator')))
|
||||||
db.append(('chrono', factory('Chrono')))
|
db.append(('chrono', factory('Chrono')))
|
||||||
|
db.append(('dual_clock', factory('Dual Clock')))
|
||||||
db.append(('fibonacci_clock', factory('Fibonacci Clock')))
|
db.append(('fibonacci_clock', factory('Fibonacci Clock')))
|
||||||
db.append(('gameoflife', factory('Game Of Life')))
|
db.append(('gameoflife', factory('Game Of Life')))
|
||||||
db.append(('musicplayer', factory('Music Player')))
|
db.append(('musicplayer', factory('Music Player')))
|
||||||
|
|
|
@ -7,6 +7,7 @@ manifest = (
|
||||||
'apps/calc.py',
|
'apps/calc.py',
|
||||||
'apps/clock.py',
|
'apps/clock.py',
|
||||||
'apps/chrono.py',
|
'apps/chrono.py',
|
||||||
|
'apps/dual_clock.py',
|
||||||
'apps/fibonacci_clock.py',
|
'apps/fibonacci_clock.py',
|
||||||
'apps/flashlight.py',
|
'apps/flashlight.py',
|
||||||
'apps/gameoflife.py',
|
'apps/gameoflife.py',
|
||||||
|
@ -26,6 +27,7 @@ manifest = (
|
||||||
'apps/word_clock.py',
|
'apps/word_clock.py',
|
||||||
'fonts/__init__.py',
|
'fonts/__init__.py',
|
||||||
'fonts/clock.py',
|
'fonts/clock.py',
|
||||||
|
'fonts/clock_dual.py',
|
||||||
'fonts/sans24.py',
|
'fonts/sans24.py',
|
||||||
'fonts/sans28.py',
|
'fonts/sans28.py',
|
||||||
'fonts/sans36.py',
|
'fonts/sans36.py',
|
||||||
|
|
196
wasp/fonts/clock_dual.py
Normal file
|
@ -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%'
|
||||||
|
)
|
|
@ -302,3 +302,4 @@ checkbox = (
|
||||||
b'F\x85O\xc6G\x83P\xc6H\x81Q\xc6Z\xc6Z\xc6'
|
b'F\x85O\xc6G\x83P\xc6H\x81Q\xc6Z\xc6Z\xc6'
|
||||||
b'Z\xc7X\xe4\x01\xde\x03\xdc\x02'
|
b'Z\xc7X\xe4\x01\xde\x03\xdc\x02'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|