From e8c7f815c29bb9cbe594e3493633b212f5fa4a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Ko=C5=9Bci=C3=B3w?= Date: Mon, 29 May 2017 21:40:23 +0200 Subject: [PATCH] test area draw pixel --- gfxlcd/driver/null/area_driver.py | 50 +++++++++++++++++++++++++++++++ gfxlcd/driver/null/null_area.py | 36 ++++++++++++++++++++++ gfxlcd/driver/null/null_page.py | 2 +- gfxlcd/tests/test_area_drawing.py | 28 +++++++++++++++++ gfxlcd/tests/test_page_drawing.py | 3 +- 5 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 gfxlcd/driver/null/area_driver.py create mode 100644 gfxlcd/driver/null/null_area.py create mode 100644 gfxlcd/tests/test_area_drawing.py diff --git a/gfxlcd/driver/null/area_driver.py b/gfxlcd/driver/null/area_driver.py new file mode 100644 index 0000000..3747718 --- /dev/null +++ b/gfxlcd/driver/null/area_driver.py @@ -0,0 +1,50 @@ +"""Area driver """ +import time +from gfxlcd.abstract.driver import Driver + + +class AreaDriver(Driver): + """SPI communication driver""" + def __init__(self, width, height): + self.height = height + self.width = width + self.buffer = [[0] * self.height for x in range(self.width)] + self.area = { + 'start_x': 0, + 'start_y': 0, + 'end_x': width, + 'end_y': height + } + self.pointer = (0, 0) + + def init(self): + """initialize pins""" + pass + + def reset(self): + """reset a display""" + pass + + def cmd(self, data, enable): + """send command to display""" + pass + + def data(self, data, enable): + """send data to display""" + app_x, app_y = self.pointer + self.buffer[self.area['start_x'] + app_x][self.area['start_y'] + app_y] = data + self._inc_pointer() + + def _inc_pointer(self): + app_x, app_y = self.pointer + app_x += 1 + if self.area['start_x'] + app_x > self.area['end_x']: + app_x = 0 + app_y += 1 + + if self.area['start_y'] + app_y > self.area['end_y']: + app_x = 0 + app_y = 0 + + self.pointer = (app_x, app_y) + diff --git a/gfxlcd/driver/null/null_area.py b/gfxlcd/driver/null/null_area.py new file mode 100644 index 0000000..056a9c0 --- /dev/null +++ b/gfxlcd/driver/null/null_area.py @@ -0,0 +1,36 @@ +"""Null Area test chip driver""" +from gfxlcd.drawing.area import Area +from gfxlcd.abstract.chip import Chip + + +class NullArea(Area, Chip): + """Test chip driver for area drawing""" + def __init__(self, width, height, driver, auto_flush=True): + Chip.__init__(self, width, height, driver, auto_flush) + Area.__init__(self, driver) + self.rotation = 0 + + def _converted_background_color(self): + """color from 8-8-8 to 5-6-5""" + return 2 + + def _converted_color(self): + """color from 8-8-8 to 5-6-5""" + return 1 + + def init(self): + """init display""" + self.driver.init() + Area.init(self) + Chip.init(self) + self.driver.reset() + + def _set_area(self, pos_x1, pos_y1, pos_x2, pos_y2): + """set area to work on""" + self.driver.area = { + 'start_x': pos_x1, + 'start_y': pos_y1, + 'end_x': pos_x2, + 'end_y': pos_y2 + } + self.driver.pointer = (0, 0) diff --git a/gfxlcd/driver/null/null_page.py b/gfxlcd/driver/null/null_page.py index 7915153..dbf83c4 100644 --- a/gfxlcd/driver/null/null_page.py +++ b/gfxlcd/driver/null/null_page.py @@ -1,4 +1,4 @@ -"""Null Page test chip drover""" +"""Null Page test chip driver""" from gfxlcd.drawing.page import Page from gfxlcd.abstract.chip import Chip diff --git a/gfxlcd/tests/test_area_drawing.py b/gfxlcd/tests/test_area_drawing.py new file mode 100644 index 0000000..1b6a59b --- /dev/null +++ b/gfxlcd/tests/test_area_drawing.py @@ -0,0 +1,28 @@ +import sys +from nose.tools import assert_equal +sys.path.append("../../") +from gfxlcd.driver.null.null_area import NullArea +from gfxlcd.driver.null.area_driver import AreaDriver + + +class TestPageDrawing(object): + def setUp(self): + self.drv = AreaDriver(10, 16) + self.lcd = NullArea(10, 16, self.drv, False) + self.lcd.init() + + def get_buffer(self): + return [[0] * 16 for x in range(10)] + + def test_has_correct_size(self): + assert_equal(self.lcd.width, 10) + assert_equal(self.lcd.height, 16) + + def test_empty_buffer_after_init(self): + assert_equal(self.drv.buffer, self.get_buffer()) + + def test_draw_pixel(self): + self.lcd.draw_pixel(1, 1) + buffer = self.get_buffer() + buffer[1][1] = 1 + assert_equal(self.drv.buffer, buffer) diff --git a/gfxlcd/tests/test_page_drawing.py b/gfxlcd/tests/test_page_drawing.py index ad825de..b937977 100644 --- a/gfxlcd/tests/test_page_drawing.py +++ b/gfxlcd/tests/test_page_drawing.py @@ -7,7 +7,6 @@ from gfxlcd.driver.null.null_page import NullPage class TestPageDrawing(object): def setUp(self): self.lcd = NullPage(10, 16, None, False) - self.buffer = [[0] * (16 // 8) for x in range(10)] self.lcd.init() def get_buffer(self): @@ -18,7 +17,7 @@ class TestPageDrawing(object): assert_equal(self.lcd.height, 16) def test_empty_buffer_after_init(self): - assert_equal(self.lcd.buffer, self.buffer) + assert_equal(self.lcd.buffer, self.get_buffer()) def test_draw_pixel(self): self.lcd.draw_pixel(1, 1)