diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 55a10f5..b1856b7 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,5 @@ +0.8.2 + - fix background colour in Page drawing 0.8.1 - clean up 0.8.0 diff --git a/gfxlcd/abstract/chip.py b/gfxlcd/abstract/chip.py index 37e00bd..8ddc1f8 100644 --- a/gfxlcd/abstract/chip.py +++ b/gfxlcd/abstract/chip.py @@ -41,9 +41,12 @@ class Chip(metaclass=abc.ABCMeta): @color.setter def color(self, rgb): """set (R, G, B) colour """ - self.options['color'] = { - 'R': rgb[0], 'G': rgb[1], 'B': rgb[2] - } + if isinstance(rgb, int): + self.options['color'] = rgb + else: + self.options['color'] = { + 'R': rgb[0], 'G': rgb[1], 'B': rgb[2] + } @property def background_color(self): @@ -53,9 +56,12 @@ class Chip(metaclass=abc.ABCMeta): @background_color.setter def background_color(self, rgb): """set (R, G, B) background colour """ - self.options['background_color'] = { - 'R': rgb[0], 'G': rgb[1], 'B': rgb[2] - } + if isinstance(rgb, int): + self.options['background_color'] = rgb + else: + self.options['background_color'] = { + 'R': rgb[0], 'G': rgb[1], 'B': rgb[2] + } @property def auto_flush(self): diff --git a/gfxlcd/demos/nju_hd44780.py b/gfxlcd/demos/nju_hd44780.py index afb0b36..68d06dd 100644 --- a/gfxlcd/demos/nju_hd44780.py +++ b/gfxlcd/demos/nju_hd44780.py @@ -16,7 +16,8 @@ def test1(): print(drv.width, drv.height) lcd = CharLCD(drv.width, drv.height, drv, 0, 0) lcd.init() - lcd.write('First') + lcd.write('First Line') + lcd.write(' it is not', 0, 0) lcd.write('HD44780', 6, 3) lcd.flush() diff --git a/gfxlcd/drawing/page.py b/gfxlcd/drawing/page.py index 9f0edc4..d304930 100644 --- a/gfxlcd/drawing/page.py +++ b/gfxlcd/drawing/page.py @@ -9,6 +9,8 @@ class Page(Pixel, metaclass=abc.ABCMeta): self.driver = driver Pixel.__init__(self, driver) self.buffer = [] + self.options['color'] = 1 + self.options['background_color'] = 0 def init(self): """init page""" @@ -17,11 +19,21 @@ class Page(Pixel, metaclass=abc.ABCMeta): else: self.buffer = [[0] * (self.width // 8) for x in range(self.height)] + def _convert_color(self, color): + """convert color to available one""" + if color == 0: + return 0 + + return 1 + def draw_pixel(self, pos_x, pos_y, color=None): """draw a pixel at x,y""" if color is None: color = self.options['color'] - self.buffer[pos_x][pos_y//8] |= self._convert_color(color) << (pos_y % 8) + if self._convert_color(color) == 1: + self.buffer[pos_x][pos_y//8] |= 1 << (pos_y % 8) + else: + self.buffer[pos_x][pos_y//8] &= ~(1 << (pos_y % 8)) self.flush() def draw_line(self, pos_x1, pos_y1, pos_x2, pos_y2): diff --git a/gfxlcd/driver/nju6450/nju6450.py b/gfxlcd/driver/nju6450/nju6450.py index f062d11..7d87717 100644 --- a/gfxlcd/driver/nju6450/nju6450.py +++ b/gfxlcd/driver/nju6450/nju6450.py @@ -35,13 +35,6 @@ class NJU6450(Page, Chip): self.driver.cmd(0xB8 | pos_y, 1) self.driver.cmd(0x00 | (pos_x - width//2), 1) - def _convert_color(self, color): - """convert color to avaiable one""" - if color['R'] == 0 and color['G'] == 0 and color['B'] == 0: - return 0 - - return 1 - def flush(self, force=None): """flush buffer to device :force - boolean|None""" diff --git a/gfxlcd/driver/null/null_page.py b/gfxlcd/driver/null/null_page.py index 05ebef1..c01d17e 100644 --- a/gfxlcd/driver/null/null_page.py +++ b/gfxlcd/driver/null/null_page.py @@ -22,13 +22,6 @@ class NullPage(Page, Chip): Page.init(self) Chip.init(self) - def _convert_color(self, color): - """convert color to avaiable one""" - if color['R'] == 0 and color['G'] == 0 and color['B'] == 0: - return 0 - - return 1 - def flush(self, force=None): """flush buffer to device :force - boolean|None""" diff --git a/gfxlcd/driver/ssd1306/ssd1306.py b/gfxlcd/driver/ssd1306/ssd1306.py index fd5ffa8..d9e5a0d 100644 --- a/gfxlcd/driver/ssd1306/ssd1306.py +++ b/gfxlcd/driver/ssd1306/ssd1306.py @@ -76,13 +76,6 @@ class SSD1306(Page, Chip): self.driver.cmd(0x14) # enable charge pump self.driver.cmd(0xaf) # turn on panel - def _convert_color(self, color): - """convert color to avaiable one""" - if color['R'] == 0 and color['G'] == 0 and color['B'] == 0: - return 0 - - return 1 - def flush(self, force=None): """flush buffer to device :force - boolean|None""" diff --git a/gfxlcd/tests/test_page_drawing.py b/gfxlcd/tests/test_page_drawing.py index 98abfe1..69a7d62 100644 --- a/gfxlcd/tests/test_page_drawing.py +++ b/gfxlcd/tests/test_page_drawing.py @@ -216,6 +216,17 @@ class TestPageDrawing(object): buffer[5][1] = 8 assert_equal(self.lcd.buffer, buffer) + def test_draw_pixels_clear_then(self): + self.lcd.draw_pixel(1, 1) + self.lcd.draw_pixel(2, 1) + self.lcd.draw_pixel(2, 2) + buffer = self.get_buffer() + buffer[2][0] = 4 + self.lcd.draw_pixel(1, 1, self.lcd.background_color) + self.lcd.draw_pixel(2, 1, self.lcd.background_color) + self.draw_buffer(self.lcd.buffer) + assert_equal(self.lcd.buffer, buffer) + def draw_buffer(self, buffer): for page in range(2): print(page) diff --git a/setup.cfg b/setup.cfg index 1dfc65a..e8bd8dd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ [bdist_wheel] -universal = 1 +universal = 0 [metadata] -description-file = readme.md \ No newline at end of file +description-file = readme.md diff --git a/setup.py b/setup.py index 250ebec..a1f2689 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(*paths): setup( name='gfxlcd', - version='0.8.1', + version='0.8.2', description='gfxlcd is a handler for graphical lcds: ILI9328, SSD1306, NJU6450, touch panel: AD7843 @ Raspberry Pi.', keywords=[ 'gfxlcd', 'raspberry pi' ,'ili9328' ,'ssd1306', 'nju6450', 'lcd', 'graphical lcd', 'touch panel', 'ad7843', diff --git a/tests3 b/tests3 index b9eb61a..f893532 100644 --- a/tests3 +++ b/tests3 @@ -1,2 +1,2 @@ chmod 644 gfxlcd/tests/*.py -python3 -m nose --with-specplugin +python3 -m nose --with-specplugin $1