aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-09-20 12:40:30 -0400
committerKevinOConnor <kevin@koconnor.net>2018-09-21 16:39:38 -0400
commitc8d9d575a1eaddf536002b3a4330e5e3b4dc9ad1 (patch)
tree41f94a7c57556d374ee0050dbcb9ab1a104626c4
parent2a5778be3a921a59733ee85791d18ae0b8ff4a92 (diff)
downloadkutter-c8d9d575a1eaddf536002b3a4330e5e3b4dc9ad1.tar.gz
kutter-c8d9d575a1eaddf536002b3a4330e5e3b4dc9ad1.tar.xz
kutter-c8d9d575a1eaddf536002b3a4330e5e3b4dc9ad1.zip
display: Support writing single character glyphs using write_glyph()
Add write_glyph() support to hd44780.py. Update uc1701.py and st7920.py to support writing single character glyphs via write_glyph(). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--klippy/extras/display/display.py4
-rw-r--r--klippy/extras/display/hd44780.py22
-rw-r--r--klippy/extras/display/icons.py4
-rw-r--r--klippy/extras/display/st7920.py11
-rw-r--r--klippy/extras/display/uc1701.py9
5 files changed, 43 insertions, 7 deletions
diff --git a/klippy/extras/display/display.py b/klippy/extras/display/display.py
index 3ab2d7f2..580f8b8d 100644
--- a/klippy/extras/display/display.py
+++ b/klippy/extras/display/display.py
@@ -142,12 +142,12 @@ class PrinterLCD:
# Heaters
if self.extruder0 is not None:
info = self.extruder0.get_heater().get_status(eventtime)
- self.lcd_chip.write_glyph(0, 0, 'nozzle')
+ self.lcd_chip.write_glyph(0, 0, 'extruder')
self.draw_heater(2, 0, info)
extruder_count = 1
if self.extruder1 is not None:
info = self.extruder1.get_heater().get_status(eventtime)
- self.lcd_chip.write_glyph(0, 1, 'nozzle')
+ self.lcd_chip.write_glyph(0, 1, 'extruder')
self.draw_heater(2, 1, info)
extruder_count = 2
if self.heater_bed is not None:
diff --git a/klippy/extras/display/hd44780.py b/klippy/extras/display/hd44780.py
index e4fd971e..d864ceaa 100644
--- a/klippy/extras/display/hd44780.py
+++ b/klippy/extras/display/hd44780.py
@@ -100,11 +100,18 @@ class HD44780:
data = data[:20 - min(x, 20)]
pos = [0, 40, 20, 60][y] + x
self.text_framebuffer[0][pos:pos+len(data)] = data
+ def write_glyph(self, x, y, glyph_name):
+ char = TextGlyphs.get(glyph_name)
+ if char is not None:
+ # Draw character
+ self.write_text(x, y, char)
+ return 1
+ return 0
def clear(self):
self.text_framebuffer[0][:] = ' '*80
HD44780_chars = [
- # Thermometer
+ # Extruder (a thermometer)
0b00100,
0b01010,
0b01010,
@@ -122,7 +129,7 @@ HD44780_chars = [
0b11111,
0b00000,
0b00000,
- # Speed factor
+ # Feed rate
0b11100,
0b10000,
0b11000,
@@ -168,3 +175,14 @@ HD44780_chars = [
0b11111,
0b00000,
]
+
+TextGlyphs = {
+ 'right_arrow': '\x7e',
+ 'extruder': '\x00',
+ 'bed': '\x01',
+ 'feedrate': '\x02',
+ 'clock': '\x03',
+ 'degrees': '\x04',
+ 'usb': '\x05',
+ 'sd': '\x06',
+}
diff --git a/klippy/extras/display/icons.py b/klippy/extras/display/icons.py
index 622c9cff..ccf18e88 100644
--- a/klippy/extras/display/icons.py
+++ b/klippy/extras/display/icons.py
@@ -4,7 +4,7 @@
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-nozzle_icon = [
+extruder_icon = [
0b0000000000000000,
0b0000000000000000,
0b0000111111110000,
@@ -138,7 +138,7 @@ feedrate_icon = [
]
Icons16x16 = {
- 'nozzle': nozzle_icon,
+ 'extruder': extruder_icon,
'bed': bed_icon, 'bed_heat1': bed_heat1_icon, 'bed_heat2': bed_heat2_icon,
'fan1': fan1_icon, 'fan2': fan2_icon,
'feedrate': feedrate_icon,
diff --git a/klippy/extras/display/st7920.py b/klippy/extras/display/st7920.py
index b8562322..4d92c8b1 100644
--- a/klippy/extras/display/st7920.py
+++ b/klippy/extras/display/st7920.py
@@ -12,6 +12,8 @@ BACKGROUND_PRIORITY_CLOCK = 0x7fffffff00000000
ST7920_CMD_DELAY = .000020
ST7920_SYNC_DELAY = .000045
+TextGlyphs = { 'right_arrow': '\x1a' }
+
class ST7920:
char_right_arrow = '\x1a'
def __init__(self, config):
@@ -132,12 +134,19 @@ class ST7920:
if glyph_id is not None and x & 1 == 0:
# Render cached icon using character generator
self.write_text(x, y, glyph_id)
- return
+ return 2
icon = icons.Icons16x16.get(glyph_name)
if icon is not None:
# Draw icon in graphics mode
for i, bits in enumerate(icon):
self.write_graphics(x, y, i, [(bits >> 8) & 0xff, bits & 0xff])
+ return 2
+ char = TextGlyphs.get(glyph_name)
+ if char is not None:
+ # Draw character
+ self.write_text(x, y, char)
+ return 1
+ return 0
def clear(self):
self.text_framebuffer[0][:] = ' '*64
zeros = bytearray(32)
diff --git a/klippy/extras/display/uc1701.py b/klippy/extras/display/uc1701.py
index 5a2239eb..ea4efb94 100644
--- a/klippy/extras/display/uc1701.py
+++ b/klippy/extras/display/uc1701.py
@@ -9,6 +9,8 @@ import icons, font8x14
BACKGROUND_PRIORITY_CLOCK = 0x7fffffff00000000
+TextGlyphs = { 'right_arrow': '\x1a' }
+
class UC1701:
char_right_arrow = '\x1a'
CURRENT_BUF, OLD_BUF = 0, 1
@@ -153,6 +155,13 @@ class UC1701:
# Draw icon in graphics mode
for i, bits in enumerate(icon):
self.write_graphics(x, y, i, [(bits >> 8) & 0xff, bits & 0xff])
+ return 2
+ char = TextGlyphs.get(glyph_name)
+ if char is not None:
+ # Draw character
+ self.write_text(x, y, char)
+ return 1
+ return 0
def clear(self):
zeros = bytearray(128)
for page in self.vram[self.CURRENT_BUF]: