From 57035ce0805222800e8cb24e459e612f802d0a50 Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Mon, 3 Feb 2020 22:34:54 +0000 Subject: wasp: st7789: Make fill() control sizing 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): -- cgit v0.10.2