From 28545253acefd24c0e962b2bea82fb4f18774e2e Mon Sep 17 00:00:00 2001 From: "R. Aidan Campbell" Date: Wed, 27 Dec 2017 12:39:11 -0500 Subject: [PATCH 1/4] expose `line` function already exists in framebuf, can be used today by reaching through the oled object with `oled.framebuf.line(16,16,32,32, 1)` changed variable names to conform to conventions Removed trailing whitespace, and attempted to disable `too-many-arguments` linting --- adafruit_ssd1306.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/adafruit_ssd1306.py b/adafruit_ssd1306.py index a6ebd7c..5399b31 100644 --- a/adafruit_ssd1306.py +++ b/adafruit_ssd1306.py @@ -130,6 +130,12 @@ def text(self, string, xpos, ypos, col=1): """Place text on display""" self.framebuf.text(string, xpos, ypos, col) + #pylint: disable-msg=too-many-arguments + def line(self, xpos0, ypos0, xpos1, ypos1, col=1): + """Draw a line from initial to final point""" + self.framebuf.line(xpos0, ypos0, xpos1, ypos1, col) + #pylint: disable-msg=too-many-arguments + class SSD1306_I2C(_SSD1306): """ I2C class for SSD1306 From 4bc78f8a7ffac812b523f3d9d7cba2f8215d658b Mon Sep 17 00:00:00 2001 From: "R. Aidan Campbell" Date: Wed, 27 Dec 2017 20:15:06 -0500 Subject: [PATCH 2/4] Update adafruit_ssd1306.py minor fix for linting hints. re-enable `too-many-arguments` after the block in question --- adafruit_ssd1306.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_ssd1306.py b/adafruit_ssd1306.py index 5399b31..f460ffe 100644 --- a/adafruit_ssd1306.py +++ b/adafruit_ssd1306.py @@ -134,7 +134,7 @@ def text(self, string, xpos, ypos, col=1): def line(self, xpos0, ypos0, xpos1, ypos1, col=1): """Draw a line from initial to final point""" self.framebuf.line(xpos0, ypos0, xpos1, ypos1, col) - #pylint: disable-msg=too-many-arguments + #pylint: enable-msg=too-many-arguments class SSD1306_I2C(_SSD1306): """ From c267f15b0b9d14fd1d5d7a464c38175b1bf32ffe Mon Sep 17 00:00:00 2001 From: "R. Aidan Campbell" Date: Wed, 24 Jan 2018 18:35:10 -0700 Subject: [PATCH 3/4] Implement function mapping and specify the updated framebuffer to be used --- adafruit_ssd1306.py | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/adafruit_ssd1306.py b/adafruit_ssd1306.py index 5399b31..ee22fdc 100644 --- a/adafruit_ssd1306.py +++ b/adafruit_ssd1306.py @@ -35,6 +35,19 @@ class _SSD1306: """Base class for SSD1306 display driver""" def __init__(self, framebuffer, width, height, external_vcc): self.framebuf = framebuffer + # note this is a breaking change: + # previously these functions were wrapped + # with a default color of "1" + self.fill = self.framebuf.fill + self.pixel = self.framebuf.pixel + self.line = self.framebuf.line + self.text = self.framebuf.text + self.scroll = self.framebuf.scroll + self.blit = self.framebuf.blit + self.vline = self.framebuf.vline + self.hline = self.framebuf.hline + self.fill_rect = self.framebuf.fill_rect + self.width = width self.height = height self.external_vcc = external_vcc @@ -114,28 +127,6 @@ def show(self): self.write_cmd(self.pages - 1) self.write_framebuf() - def fill(self, value): - """Fill the display on or off""" - self.framebuf.fill(value) - - def pixel(self, xpos, ypos, value): - """Set a pixel to on or off at x,y""" - self.framebuf.pixel(xpos, ypos, value) - - def scroll(self, deltax, deltay): - """Scroll the display content by delta x,y""" - self.framebuf.scroll(deltax, deltay) - - def text(self, string, xpos, ypos, col=1): - """Place text on display""" - self.framebuf.text(string, xpos, ypos, col) - - #pylint: disable-msg=too-many-arguments - def line(self, xpos0, ypos0, xpos1, ypos1, col=1): - """Draw a line from initial to final point""" - self.framebuf.line(xpos0, ypos0, xpos1, ypos1, col) - #pylint: disable-msg=too-many-arguments - class SSD1306_I2C(_SSD1306): """ I2C class for SSD1306 @@ -158,7 +149,7 @@ def __init__(self, width, height, i2c, *, addr=0x3c, external_vcc=False): # buffer). self.buffer = bytearray(((height // 8) * width) + 1) self.buffer[0] = 0x40 # Set first byte of data buffer to Co=0, D/C=1 - framebuffer = framebuf.FrameBuffer1(memoryview(self.buffer)[1:], width, height) + framebuffer = framebuf.FrameBuffer(memoryview(self.buffer)[1:], width, height) super().__init__(framebuffer, width, height, external_vcc) def write_cmd(self, cmd): From eba36a8fa1d305db4fefcd14110f1109a47c8347 Mon Sep 17 00:00:00 2001 From: "R. Aidan Campbell" Date: Wed, 24 Jan 2018 18:43:31 -0700 Subject: [PATCH 4/4] Merge resolution - I might have tripped myself up in git here... --- adafruit_ssd1306.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_ssd1306.py b/adafruit_ssd1306.py index ee22fdc..2b1bc5a 100644 --- a/adafruit_ssd1306.py +++ b/adafruit_ssd1306.py @@ -191,7 +191,7 @@ def __init__(self, width, height, spi, dc, res, cs, *, self.dc_pin = dc self.reset_pin = res self.buffer = bytearray((height // 8) * width) - framebuffer = framebuf.FrameBuffer1(self.buffer, width, height) + framebuffer = framebuf.FrameBuffer(self.buffer, width, height) super().__init__(framebuffer, width, height, external_vcc) def write_cmd(self, cmd):