summaryrefslogtreecommitdiff
path: root/wasp/drivers/st7789.py
diff options
context:
space:
mode:
authorDaniel Thompson <daniel@redfelineninja.org.uk>2020-02-03 22:34:54 (GMT)
committerDaniel Thompson <daniel@redfelineninja.org.uk>2020-02-03 22:34:54 (GMT)
commit57035ce0805222800e8cb24e459e612f802d0a50 (patch)
treefc4e9500abfba9962fa5c48d141de7934122b009 /wasp/drivers/st7789.py
parent118b7bab006323bf65a23c3fe3e1a0a30a91c17a (diff)
wasp: st7789: Make fill() control sizing
Diffstat (limited to 'wasp/drivers/st7789.py')
-rw-r--r--wasp/drivers/st7789.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/wasp/drivers/st7789.py b/wasp/drivers/st7789.py
index 8a9e4d6..d96d417 100644
--- a/wasp/drivers/st7789.py
+++ b/wasp/drivers/st7789.py
@@ -83,15 +83,22 @@ class ST7789(object):
self.write_data(bytearray([y >> 8, y & 0xff, yp >> 8, yp & 0xff]))
self.write_cmd(_RAMWR)
- def fill(self, bg):
- self.set_window()
+ def fill(self, bg, x=0, y=0, w=None, h=None):
+ if not w:
+ w = self.width - x
+ if not h:
+ h = self.height - y
+ self.set_window(x, y, w, h)
# Populate the line buffer
- for x in range(0, 2 * self.width, 2):
- self.linebuffer[x] = bg >> 8
- self.linebuffer[x+1] = bg & 0xff
- for y in range(self.height):
- self.write_data(self.linebuffer)
+ buf = memoryview(self.linebuffer)[0:2*w]
+ for xi in range(0, 2*w, 2):
+ buf[xi] = bg >> 8
+ buf[xi+1] = bg & 0xff
+
+ # Do the fill
+ for yi in range(h):
+ self.write_data(buf)
@micropython.native
def rleblit(self, image, pos=(0, 0), fg=0xffff, bg=0):