diff --git a/Adafruit_EPD/epd.py b/Adafruit_EPD/epd.py index 2ccd994..ecb8822 100644 --- a/Adafruit_EPD/epd.py +++ b/Adafruit_EPD/epd.py @@ -74,4 +74,51 @@ class Adafruit_EPD(object): self._dc.value = True self.spi_device.write(d) self._cs.value = True - self.spi_device.unlock() \ No newline at end of file + self.spi_device.unlock() + + #framebuf methods + def fill(self, color): + self.format.fill_rect(self, 0, 0, self.width, self.height, color) + + def fill_rect(self, x, y, width, height, color): + if width < 1 or height < 1 or (x+width) <= 0 or (y+height) <= 0 or y >= self.height or x >= self.width: + return + xend = min(self.width, x+width) + yend = min(self.height, y+height) + x = max(x, 0) + y = max(y, 0) + for _x in range(xend - x): + for _y in range(yend - y): + self.draw_pixel(x + _x, y + _y, color) + + def pixel(self, x, y, color=None): + if x < 0 or x >= self.width or y < 0 or y >= self.height: + return + if color is None: + return self.get_pixel(self, x, y) + else: + self.draw_pixel(self, x, y, color) + + def hline(self, x, y, width, color): + self.fill_rect(x, y, width, 1, color) + + def vline(self, x, y, height, color): + self.fill_rect(x, y, 1, height, color) + + def rect(self, x, y, width, height, color): + self.fill_rect(x, y, width, 1, color) + self.fill_rect(x, y+height, width, 1, color) + self.fill_rect(self, x, y, 1, height, color) + self.fill_rect(self, x+width, y, 1, height, color) + + def line(self): + raise NotImplementedError() + + def blit(self): + raise NotImplementedError() + + def scroll(self): + raise NotImplementedError() + + def text(self): + raise NotImplementedError() \ No newline at end of file diff --git a/Adafruit_EPD/il0373.py b/Adafruit_EPD/il0373.py index a1fc5b3..a8d9c2a 100644 --- a/Adafruit_EPD/il0373.py +++ b/Adafruit_EPD/il0373.py @@ -149,6 +149,19 @@ class Adafruit_IL0373(Adafruit_EPD): self.sram.write8(addr, c) + def get_pixel(self, x, y, color): + if (x < 0) or (x >= self.width) or (y < 0) or (y >= self.height): + return + + if x == 0: + x = 1 + + addr = int(((self.width - x) * self.height + y)/8) + if color == Adafruit_EPD.RED: + addr = addr + self.bw_bufsize + c = self.sram.read8(addr) + return c + def clear_buffer(self): self.sram.erase(0x00, self.bw_bufsize, 0xFF) self.sram.erase(self.bw_bufsize, self.red_bufsize, 0xFF) diff --git a/examples/basic_154.py b/examples/basic_154.py index 6ef2511..ea67ed6 100644 --- a/examples/basic_154.py +++ b/examples/basic_154.py @@ -19,17 +19,9 @@ display = Adafruit_IL0373(152, 152, rst, dc, busy, srcs, ecs, spi) #clear the buffer display.clear_buffer() -#draw some lines!! -for i in range(152): - display.draw_pixel(i, i, Adafruit_EPD.RED) - display.draw_pixel(152-i, i, Adafruit_EPD.RED) - display.draw_pixel(10, i, Adafruit_EPD.BLACK) - display.draw_pixel(20, i, Adafruit_EPD.BLACK) - display.draw_pixel(30, i, Adafruit_EPD.BLACK) - display.draw_pixel(40, i, Adafruit_EPD.BLACK) - display.draw_pixel(50, i, Adafruit_EPD.BLACK) - display.draw_pixel(60, i, Adafruit_EPD.BLACK) - display.draw_pixel(70, i, Adafruit_EPD.BLACK) - display.draw_pixel(80, i, Adafruit_EPD.BLACK) +#draw some arbitrary lines and shapes!! +display.fill_rect(30, 20, 50, 60, Adafruit_EPD.RED) +display.hline(120, 30, 60, Adafruit_EPD.BLACK) +display.vline(120, 30, 60, Adafruit_EPD.BLACK) display.display()